Python猜数字游戏中if语句满足条件时无法打印文本如何解决
问题原因
while循环的执行触发条件是intTry != intRand,即仅当用户输入的数字和正确答案不相等时,循环内部的代码才会执行。
你写的if intTry == intRand判断被放在了这个while循环块内部,当用户猜对数字时,while的条件直接判定为不成立,整个循环块(包括内部的if判断)完全不会运行,自然永远无法触发"Well done"的打印逻辑。
额外说明:randint(1,5)本身返回值就是整数类型,外层嵌套int()做类型转换是多余操作。
修改方案
你可以任选一种符合代码逻辑的写法调整:
- 方案1:利用循环的触发特性简化逻辑,循环仅在猜错时持续要求用户重输,一旦跳出循环就代表猜对,直接在循环外部打印成功提示即可。
修改后的完整代码:
from random import randint intRand = randint(1, 5) intTry = int(input("Pick a random number between 1 and 5\n")) while intTry != intRand: intTry = int(input("Try again\n")) print("Well done")
- 方案2:如果要把猜对的判断逻辑放在循环内部,就把
while的循环条件设为恒真,在内部判断猜对后打印提示、主动跳出循环。
修改后的完整代码:
from random import randint intRand = randint(1, 5) while True: intTry = int(input("Pick a random number between 1 and 5\n")) if intTry == intRand: print("Well done") break print("Try again")
内容的提问来源于stack exchange,提问作者Tomaatje07
相关产品推荐
相关产品推荐

