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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:54:19