如何让Python程序持续重复提问并正确处理后续输入?
问题修复:持续重复处理用户输入的Python程序
你的代码问题出在ans变量的生命周期上——第一次正确输入后,ans被设为'true',后续外层循环再执行时,内层while ans == 'wrong'的条件不成立,新输入的内容根本没进入判断逻辑,自然只会重复提问。
下面是两种修复方案:
方案一:基于原代码修改
把ans的初始化移到外层循环内部,每次循环都重置这个变量,确保内层判断能正常触发:
alive = True while alive == True: ans = 'wrong' # 每次外层循环开始重置ans answer = input(""" ----What do you want to do?(walk, or rest)---- """) while ans == 'wrong': if answer == 'walk': print("nice") ans = 'true' elif answer == 'rest': print("you slept with your monsters") ans = 'true' else: print("Invalid Answer. Walk or Rest") answer = input(""" ----What do you want to do?(walk, or rest)---- """)
方案二:简化逻辑(更推荐)
去掉多余的ans和alive变量,用无限循环配合条件判断,代码更简洁清晰:
while True: answer = input(""" ----What do you want to do?(walk, or rest)---- """).strip() # strip()去掉输入前后的空格,避免误判 if answer == 'walk': print("nice") elif answer == 'rest': print("you slept with your monsters") else: print("Invalid Answer. Walk or Rest") # 这里不需要额外输入,外层循环会自动重新提问
关键修改点说明
- 方案一中,把
ans = 'wrong'放到外层循环里,每次用户完成一次有效输入后,下一轮循环会重新初始化ans,保证内层while能处理新的输入。 - 方案二中,直接用
while True实现无限循环,每次输入后直接判断,无效输入会提示后自动进入下一轮循环重新提问,逻辑更直观,还避免了多余变量的干扰。
内容的提问来源于stack exchange,提问作者Gabriel Floyd Alinday
相关产品推荐
相关产品推荐

