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

带积分机制的猜数字游戏开发求助:代码逻辑问题排查

猜数字游戏代码修正

原代码存在多处逻辑错误和语法问题,导致无法正常运行,以下是问题梳理和修正方案:

问题点总结

  • 函数调用错误:GenerateGuess是函数,比较时需调用(GenerateGuess()),原代码直接用函数名会比较对象地址,永远不相等。
  • 参数传递错误:CheckGuess函数未定义参数,但调用时传入了UserGuess,同时错误使用全局的UserGuess变量。
  • 赋值运算符误用:TotalPoints == TotalPoints +5是比较运算符,应改为赋值语句TotalPoints +=5。
  • 递归调用风险:用main()递归实现重玩可能导致栈溢出,改用循环更安全。
  • 全局变量冗余:全局定义的UserGuess输入属于多余逻辑,应移至游戏流程内。
  • 缺少返回值:CheckGuess函数未按要求返回True/False。

修正后的完整代码

from random import randint

# 生成1-10范围的随机数
def GenerateGuess():
    return randint(1, 10)

TotalPoints = 0

# 校验用户猜测,更新积分并返回结果
def CheckGuess(user_guess):
    global TotalPoints
    random_num = GenerateGuess()
    if user_guess == random_num:
        print("猜对了!")
        TotalPoints += 5
        return True
    else:
        print(f"猜错了,正确数字是{random_num}")
        return False

def main():
    print("Let's play the Number Guessing Game!")
    while True:
        # 输入合法性校验
        try:
            user_guess = int(input("请猜一个1-10之间的数字:"))
            if not 1 <= user_guess <= 10:
                print("请输入1到10范围内的数字!")
                continue
        except ValueError:
            print("请输入有效的整数!")
            continue
        
        CheckGuess(user_guess)
        print(f"当前总积分:{TotalPoints}")
        
        # 重玩选择逻辑
        play_again = input("要再来一局吗?输入'Yes'或'No':").strip().lower()
        if play_again != "yes":
            print("再见!")
            break

if __name__ == "__main__":
    main()

修正说明

  • 给CheckGuess添加参数接收用户输入,调用GenerateGuess()获取随机数进行真实比较。
  • 使用global声明修改全局积分变量,确保猜对时积分正常累加。
  • 改用while True循环实现重玩逻辑,避免递归栈溢出问题。
  • 增加输入校验,确保用户输入符合规则,提升游戏健壮性。
  • 每次游戏结束后显示当前总积分,优化用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:10:29