Python while循环重复询问问题:playAgain函数被两次调用
问题原理分析:playAgain函数重复询问的原因
你的问题核心是同一个函数被连续调用了两次,导致出现两次输入询问:
- 当用户猜对数字时,首先执行
win()函数,而win()内部已经调用了playAgain()——这时候会第一次弹出输入框让你选择,但这次调用的返回值没有被任何变量接收,相当于白问了一次,你输入的内容根本没影响程序逻辑。 - 紧接着,主循环里的
guessed = playAgain()又会第二次调用这个函数,这次的返回值才会赋值给guessed,决定是否继续游戏,所以你会看到两次询问,只有第二次的输入能生效。
修复方案
方案1:移除win()里的playAgain调用
保留主循环中的调用逻辑,修改win函数:
def win(): print("\nYou got it!\n") # 删除原有的playAgain()调用
方案2:让win()负责返回playAgain的结果
把询问逻辑统一放在win()里,主循环直接接收结果:
修改win函数:
def win(): print("\nYou got it!\n") return playAgain() # 返回playAgain的结果
然后修改主循环中的对应代码:
if userGuess == compNum: guessed = win() # 直接接收win返回的是否结束游戏的结果 if guessed == False: compNum = random.randint(1,100)
内容的提问来源于stack exchange,提问作者rexregisanimi
相关产品推荐
相关产品推荐

