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

Python数字猜谜游戏如何统计用户猜测次数并在获胜提示中展示

Python数字猜谜游戏问题修复方案

错误原因说明

  • 次数累加语法错误:attempts =+ 1属于错误写法,实际是将attempts赋值为正整数1,无法实现累加效果,正确累加写法为attempts += 1。同时在函数内部修改全局变量需要提前声明global,否则修改的是函数局部变量,全局计数不会生效
  • 命名冲突报错:你在win函数中执行了random_int = random_int(size),将原本的函数对象覆盖为返回的整数值,后续调用random_int()时就会触发TypeError: 'int' object is not callable报错
  • 逻辑冗余:已经在main函数中生成了正确的随机数,不需要在win函数中二次生成随机数,也不需要额外的user_attempts()函数传递次数,直接将计数和正确数字作为参数传给win函数即可
  • 计数逻辑遗漏:用户第一次输入的猜测也要计入总次数,你原本的逻辑没有统计首次猜测

修复后符合需求的完整代码

# Python数字猜谜游戏
from random import randrange

# 全局配置
SIZE = 1000

# 需求1要求main函数调用该函数生成随机数
def random_int(size):
    return randrange(1, size + 1)

# 需求3要求main函数调用该函数获取用户新猜测
def new_guess():
    guess = int(input("请输入你的猜测(范围1-1000):"))
    return guess

# 需求2要求main函数调用该函数对比猜测值和目标值
def check_guess(guess, target):
    if guess > target:
        print("你猜的数字太大了,再试一次。")
        return False
    elif guess < target:
        print("你猜的数字太小了,再试一次。")
        return False
    else:
        return True

# 需求4、5要求该函数打印获胜提示并展示猜测次数
def win(target, attempts):
    if attempts >= 2:
        print(f"你猜对了正确数字{target},你赢了!总共猜了{attempts}次。")
    else:
        print(f"你猜对了正确数字{target},你赢了!总共猜了{attempts}次。")

# 需求1要求的主流程函数,仅做功能调度
def main():
    target_num = random_int(SIZE)
    attempts = 0
    while True:
        current_guess = new_guess()
        attempts += 1
        if check_guess(current_guess, target_num):
            break
    win(target_num, attempts)

if __name__ == "__main__":
    main()

功能匹配说明

  • 所有需求均已满足:main函数作为主调度器调用random_int()生成随机数,单独的check_guess函数负责对比猜测值和目标值,new_guess函数负责获取用户输入,win函数负责打印获胜提示和次数统计
  • 修复了原有报错问题,次数统计准确,语法逻辑符合Python规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:39:03