为何Python的while循环提前终止?猜数字游戏未输出Bingo问题
问题原因分析
你的代码逻辑存在两个核心问题,导致永远不会输出"Bingo!":
- 首次猜对直接跳过循环:如果用户第一次输入的数字就等于随机数,
while y != random_number的条件不成立,循环体完全不会执行,自然不会触发打印。 - 循环内的else分支永远无法触发:当用户在循环中输入正确数字时,
y等于random_number,此时while的条件不再满足,循环直接终止,根本不会进入循环体执行那个else分支。
修复方案
可以调整循环结构,用while True构建无限循环,在内部判断是否猜对,猜对时打印并退出循环,逻辑更清晰:
import random x = 100 random_number = random.randint(1, x) while True: y = int(input('what do you think is the number?! ')) if y > random_number: print('Too high') elif y < random_number: print('Too low') else: print('Bingo!') break # 猜对后退出循环
也可以保留原循环结构,在循环结束后统一打印(循环结束意味着y已等于随机数):
import random x = 100 random_number = random.randint(1, x) y = int(input('what do you think is the number?! ')) while y != random_number: if y > random_number: print('Too high') elif y < random_number: print('Too low') y = int(input('what do you think is the number?! ')) print('Bingo!')
内容的提问来源于stack exchange,提问作者hurreechunder
相关产品推荐
相关产品推荐

