我似乎无法摆脱这个 while 循环
i cant seem to break out of this while loop
我在我的大学里参加了一场比赛 class,而且还处于真正的早期阶段。我被要求制作这个播放 madlibs 的小程序,现在我似乎无法完成它。
import random
verb=input("Enter a verb: ")
celebrity= input("Enter name of a celebrity: ")
age=input("Enter an age: ")
while not age==int():
age=(input("C'mon man! Enter a number please: "))
madlibs=f"Coding is fun as if im {verb}. I feel like im {celebrity} and im just {age} years old"
print(madlibs)
再次强调,我在这方面真的很陌生,所以如果您有任何反馈,我可以如何用更少的行编写相同的代码和类似的反馈,强烈要求
我会做这样的事情
while True:
try:
age = int(input("Enter your age: "))
break
except ValueError:
print("ERROR, you must enter a number")
请记住,这只有在您引入整数时才有效,我认为这就是您在代码中尝试做的事情。如果你想允许十进制数,@Felix 已经使用 .isdecimal()
给出了答案
您需要为 age_target
和 age_guess
定义单独的变量。
然后
While not age_target == age_guess
input()
函数总是return一个字符串。它不会被动态投射,
你可以使用 isdecimal()
str 方法。
如果您想使用年龄作为数字,请不要忘记转换它。
你可以替换这部分:
while not age==int():
age=(input("C'mon man! Enter a number please: "))
作者:
while not age.isdecimal():
age=input("C'mon man! Enter a number please: ")
age = int(age) # cast str > int
此外,如果你想检查你的变量类型,age==int()
条件无效,请改用isintance
函数。
这是一个工作示例:
import random
verb = input("Enter a verb: ")
celebrity = input("Enter name of a celebrity: ")
age = input("Enter an age: ")
while True:
try:
int(age)
break
except ValueError:
age=(input("C'mon man! Enter a number please: "))
madlibs=f"Coding is fun as if im {verb}. I feel like im {celebrity} and im just {age} years old"
print(madlibs)
它的不同之处:
int(age)
正在尝试将字符串 age
转换为整数。如果这不可能,它将抛出一个 ValueError。
我们捕获该 ValueError 并提示用户重试。
如果我们没有 while True
(永远循环)语句,流程将如下所示:
- 根据整数检查年龄。失败。
- 再次提示用户。
- 继续
madlibs
语句。
使用 while True loop
我们会让用户停留在完全相同的提示上,直到 int(age) 不成功(或至少因另一种类型的异常而失败),然后我们中断,这将exit the loop end proceed to next statement.
我在我的大学里参加了一场比赛 class,而且还处于真正的早期阶段。我被要求制作这个播放 madlibs 的小程序,现在我似乎无法完成它。
import random
verb=input("Enter a verb: ")
celebrity= input("Enter name of a celebrity: ")
age=input("Enter an age: ")
while not age==int():
age=(input("C'mon man! Enter a number please: "))
madlibs=f"Coding is fun as if im {verb}. I feel like im {celebrity} and im just {age} years old"
print(madlibs)
再次强调,我在这方面真的很陌生,所以如果您有任何反馈,我可以如何用更少的行编写相同的代码和类似的反馈,强烈要求
我会做这样的事情
while True:
try:
age = int(input("Enter your age: "))
break
except ValueError:
print("ERROR, you must enter a number")
请记住,这只有在您引入整数时才有效,我认为这就是您在代码中尝试做的事情。如果你想允许十进制数,@Felix 已经使用 .isdecimal()
您需要为 age_target
和 age_guess
定义单独的变量。
然后
While not age_target == age_guess
input()
函数总是return一个字符串。它不会被动态投射,
你可以使用 isdecimal()
str 方法。
如果您想使用年龄作为数字,请不要忘记转换它。
你可以替换这部分:
while not age==int():
age=(input("C'mon man! Enter a number please: "))
作者:
while not age.isdecimal():
age=input("C'mon man! Enter a number please: ")
age = int(age) # cast str > int
此外,如果你想检查你的变量类型,age==int()
条件无效,请改用isintance
函数。
这是一个工作示例:
import random
verb = input("Enter a verb: ")
celebrity = input("Enter name of a celebrity: ")
age = input("Enter an age: ")
while True:
try:
int(age)
break
except ValueError:
age=(input("C'mon man! Enter a number please: "))
madlibs=f"Coding is fun as if im {verb}. I feel like im {celebrity} and im just {age} years old"
print(madlibs)
它的不同之处:
int(age)
正在尝试将字符串 age
转换为整数。如果这不可能,它将抛出一个 ValueError。
我们捕获该 ValueError 并提示用户重试。
如果我们没有 while True
(永远循环)语句,流程将如下所示:
- 根据整数检查年龄。失败。
- 再次提示用户。
- 继续
madlibs
语句。
使用 while True loop
我们会让用户停留在完全相同的提示上,直到 int(age) 不成功(或至少因另一种类型的异常而失败),然后我们中断,这将exit the loop end proceed to next statement.