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

游戏程序重启逻辑失效、整数输入异常问题求助

解决你的游戏重启逻辑与输入异常问题

嘿,很高兴能帮你搞定这两个开发小麻烦!咱们一个个来拆解:

一、关于双层while True实现游戏重启逻辑

完全可以用双层while True循环来实现,这是游戏开发里非常常用的模式,逻辑清晰还好维护。外层循环负责管控整个游戏的生命周期(运行→结束→重启),内层循环专门处理游戏结束后的输入验证,直到用户给出有效的指令。

给你一个简单的示例框架:

while True:
    # ----------------------
    # 这里放你的游戏主逻辑代码
    # 比如游戏初始化、核心玩法循环、得分计算等
    print("游戏正在运行...")
    print("游戏结束!")
    # ----------------------

    # 游戏结束后的重启/结束选择
    while True:
        user_choice = input("输入Yes重启游戏,输入No结束游戏:").strip().lower()
        if user_choice == "yes":
            print("正在重启游戏...\n")
            break  # 跳出内层输入循环,回到外层游戏循环重启
        elif user_choice == "no":
            print("游戏已结束,感谢游玩!")
            exit()  # 直接终止程序
        else:
            print("Error, the inputed value is invalid, try again")

这个结构的优势很明显:

  • 外层循环专注重复加载/运行游戏,和输入逻辑完全分离
  • 内层循环只处理用户输入验证,避免无效输入干扰游戏主逻辑
  • 后续修改游戏规则或输入指令时,分层的结构让调整更轻松

二、解决输入整数时的程序异常问题

你说输入整数时程序会异常,但输入其他无效内容时提示正常,大概率是因为你的输入处理逻辑没覆盖数字字符串的情况,或者在判断前做了不必要的类型转换(比如强行把输入转成整数)。

问题根源分析:

input()函数返回的所有内容都是字符串类型——哪怕用户输入的是整数(比如输入123,得到的是字符串"123")。如果你的代码里存在类似int(user_input)的转换操作,当用户输入Yes时会报错,但你提到输入整数时异常,那可能是你的条件判断逻辑遗漏了数字字符串的情况,导致它误入了错误分支。

解决方法:

就像上面示例代码里那样,先对输入做标准化处理(strip()去掉首尾空格,lower()统一转小写),然后只判断是否是"yes"或"no"——不管用户输入的是数字、乱码还是其他内容,只要不是这两个指令的大小写形式,都触发错误提示。全程都是字符串比较,没有类型转换操作,自然不会出现异常。

如果你的游戏逻辑里确实需要处理整数输入(比如游戏中的操作指令),那一定要用try-except捕获类型转换异常,比如:

try:
    num = int(user_input)
    # 这里写处理整数输入的逻辑
except ValueError:
    # 输入不是整数时的提示或处理
    print("Error, the inputed value is invalid, try again")

这样就能彻底避免输入非整数时的程序崩溃问题啦。

内容的提问来源于stack exchange,提问作者Bear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:24:16