Python中game()函数首次正常,二次调用不执行问题求助
问题原因及解决方案
你的代码存在两个关键错误,导致二次调用game()时出现异常:
条件判断逻辑错误
你写的if input() == "y" or "Y"不符合Python的逻辑运算规则。Python会将其解析为(input() == "y") or "Y",而非你预期的“输入等于y或Y”。由于非空字符串"Y"在布尔判断中永远为True,无论用户输入什么,这个条件都会成立,但如果用户输入的不是y/Y,后续流程会出现混乱;更糟的是,如果用这种写法,当用户输入Y时,第一次input()获取的值是Y,判断== "y"不成立,接着会直接因为"Y"为真进入分支,但此时可能已经消耗了输入,导致后续逻辑异常。正确的写法应该先把输入值存入变量,再做判断:
choice = input().strip().lower() if choice == "y":或者明确判断两种情况(注意不要重复调用
input()):choice = input().strip() if choice == "y" or choice == "Y":exit未实际调用else分支里的exit只是引用了函数对象,并没有执行退出操作。正确写法是exit(),这样才能触发程序退出。
修正后的完整代码示例:
# Lots of cool game() code above here ^^^ game() # first invocation of the game() function, works great... print("Play Again? Y=YES, Any other key to quit") choice = input().strip().lower() if choice == "y": print("oh yeah, its on!!!!") game() else: exit()
如果修正后二次调用game()仍有问题,可能是game()函数内部的状态没有重置(比如某些全局变量未恢复初始值),但根据你描述的首次调用正常的情况,解决上述两个语法逻辑错误即可解决当前问题。
内容的提问来源于stack exchange,提问作者discoStew
相关产品推荐
相关产品推荐

