Python猜数字游戏失败提示无限循环问题如何解决
代码逻辑错误分析
代码存在两处核心逻辑问题,直接导致失败提示反复循环输出:
- 第一,
while循环仅设置了guess != random_number这一个退出条件,当尝试次数耗尽后,既没有猜对数字、也没有触发循环终止的逻辑,程序会一直进入else分支执行打印操作,陷入无限循环。 - 第二,失败提示打印后没有终止程序的逻辑,打印完成后代码仍会执行
tries = tries +1,随后回到while判断环节,因guess始终不等于目标随机数,循环会一直运行。 - 额外隐藏问题:就算次数耗尽跳出循环,原代码末尾的猜对提示仍会被执行,和失败场景冲突。
修复方案
在打印失败提示后直接用break跳出循环,同时补充猜对的判断逻辑,避免失败场景下误打印成功提示,修改后的参考代码如下:
import random def guess(x): random_number = random.randint(1,x) guess = 0 tries = 0 limit = int(input("How many tries would you like to have? ")) while guess != random_number: if tries < limit: guess = int(input(f"Guess a random number between 1 and {x} in {limit} tries: " )) if guess < random_number: print("too low") elif guess > random_number: print("too high") else: print(f"You have failed in {limit} tries") break # 次数耗尽直接跳出循环 tries = tries + 1 # 仅猜对的时候才打印成功提示 if guess == random_number: print (f"You have guessed {random_number} correctly") guess(10)
内容的提问来源于stack exchange,提问作者Adolf Iscariot
相关产品推荐
相关产品推荐

