如何实现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
相关产品推荐
相关产品推荐

