我似乎无法摆脱这个 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_targetage_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(永远循环)语句,流程将如下所示:

  1. 根据整数检查年龄。失败。
  2. 再次提示用户。
  3. 继续 madlibs 语句。

使用 while True loop 我们会让用户停留在完全相同的提示上,直到 int(age) 不成功(或至少因另一种类型的异常而失败),然后我们中断,这将exit the loop end proceed to next statement.