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
相关产品推荐
相关产品推荐

