Python猜数字游戏无返回值 调试无从下手问题排查
猜数字游戏代码问题修复
现存问题点
- 调用生成随机数的函数
generateGuess时未加括号,仅把函数对象赋值给了robotGuess变量,没有实际执行函数拿到1-10之间的随机整数 CheckGuess函数参数定义错误:多余设置了correct入参,实际该变量是函数内部判断后生成的结果,不需要外部传入- 函数调用参数不匹配:第一次调用
CheckGuess仅传了2个参数(和定义的3个参数不符),后续两次判断分支里调用CheckGuess仅传了correct参数,完全缺失玩家猜测值、电脑生成值两个核心参数,会直接触发运行报错 - 逻辑冗余:判断结果时反复调用
CheckGuess,没有接收第一次调用的返回值,重复执行判断逻辑没有意义 - 单轮判断结束后未调用
retry()函数,无法触发重玩/结算流程
修复后可运行代码
from random import randint TotalPoints = 0 def generateGuess(): return randint(1,10) def CheckGuess(playerGuess, robotGuess): correct = False global TotalPoints if playerGuess == robotGuess: TotalPoints = TotalPoints + 5 correct = True return correct def retry (): playagain = int(input("是否要再玩一局?输入1开始新局,输入2退出游戏:")) if playagain == 1: main() elif playagain == 2: print("游戏结束!你的最终总积分为", TotalPoints, "分") else: print("输入无效,请重新选择") retry() def main(): print("欢迎玩猜数字游戏!") playerGuess = int(input("请输入你猜测的数字(1-10):")) robotGuess = generateGuess() guess_correct = CheckGuess(playerGuess, robotGuess) if guess_correct: print("恭喜你猜对了!当前总积分:", TotalPoints, "分") else: print("很遗憾你猜错了,本轮正确数字是", robotGuess) retry() main()
修复说明
- 所有函数调用补全括号、匹配参数,调用
generateGuess()实际执行函数拿到随机数 - 精简
CheckGuess参数,仅保留两个待对比的数值入参,函数执行完直接返回判断结果的布尔值 - 仅调用一次
CheckGuess,用变量存储返回结果后直接走分支判断,避免重复执行逻辑 - 单轮流程结束后调用
retry(),支持多轮游玩和最终积分结算,补全了无效输入时的重输逻辑 - 猜错时额外展示正确数字,优化交互体验,所有交互提示统一翻译为中文
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

