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

如何实现Python游戏的playAgain重玩函数?求代码修改建议

问题分析与代码修正

先梳理你代码里的核心问题,再给出修正方案:

1. playAgain() 函数的逻辑缺陷

  • 循环内没有重新获取用户输入,输入无效时会无限重复提示,无法跳出
  • 函数没有返回值,主程序无法拿到用户是否继续游戏的选择
  • 循环内的break和continue完全冗余,因为外层判断条件已经限定了pa不是y/n,这两个分支永远不会触发

2. 主循环的错误

  • Python布尔值True必须首字母大写,while true会触发未定义名称的报错
  • 主循环没有调用playAgain()判断是否继续,只会无限制重复执行Act1()和gameOver()

修正后的代码

def playAgain():
    # 循环直到用户输入有效选项
    while True:
        pa = input("Do you want to play again? (y/n) ")
        if pa.lower() == "n":
            return False
        elif pa.lower() == "y":
            return True
        else:
            print("That is not a valid answer.")

# 主游戏循环
while True:
    Act1()
    gameOver()
    # 根据playAgain的返回值决定是否退出循环
    if not playAgain():
        break

额外优化建议

  • 遵循PEP8规范,代码缩进统一用4个空格(原代码用2个,虽能运行但不符合通用编码习惯)
  • pa.lower()可以兼容用户输入大写的Y/N,提升程序容错性
  • 确保Act1()和gameOver()函数已正确定义,否则会触发未定义名称错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:03