You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中game()函数首次正常,二次调用不执行问题求助

问题原因及解决方案

你的代码存在两个关键错误,导致二次调用game()时出现异常:

  1. 条件判断逻辑错误
    你写的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":
    
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:45:31