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

如何为Python猜数字游戏添加猜数次数统计功能?

猜数字游戏:补全猜数次数统计功能

程序说明:
编写一个程序,生成1到100范围内的随机数,让用户猜测该数字。如果用户猜测的数字大于随机数,程序应显示“Too high, try again.”;如果小于随机数,显示“Too low, try again.”;如果猜对,程序应祝贺用户并生成新的随机数重新开始游戏。游戏需要记录用户的猜数次数,当用户停止游戏时,显示正确猜中的次数。
目前已完成大部分代码,仅缺少统计猜数次数的功能。

修改后的完整代码

def main():
    print("********* Welcome to the random number guessing game *********")
    total_guesses = 0  # 记录总猜中次数
    while True:
        # 单次游戏的猜数次数累加到总次数
        total_guesses += run_game()
        # 判断是否继续游戏
        if not play_again(total_guesses):
            break

def run_game():  
    import random
    n = random.randrange(1, 101)  # 修正范围:覆盖1到100(randrange左闭右开)
    guess_count = 0  # 单次游戏的猜数计数器
    
    while True:
        guess = int(input("Enter any number: "))
        guess_count += 1
        if guess < n:
            print("Too low, try again.")
        elif guess > n:
            print("Too high, try again.")
        else:
            print("You guessed it right!!")
            return guess_count  # 返回本次游戏的猜数次数

def play_again(total):
    while True:
        retry = input("Would you like to play again?: ").lower()
        if retry == "yes":
            return True
        elif retry == "no":
            print(f"Good game! Total number of guesses to win: {total}")
            return False
        else:
            print("Please enter either yes or no")

if __name__ == "__main__":
    main()

关键修改说明

  • 总次数统计:在main函数中初始化total_guesses变量,每次调用run_game后累加单次游戏的猜数次数,避免原递归调用main导致的变量重置问题。
  • 单次游戏计数:run_game中新增guess_count变量,用户每输入一次猜数就自增,猜对后返回该值给main进行累加。
  • 修正随机数范围:原代码randrange(1,100)生成的是1到99的数,改为randrange(1,101)才能覆盖需求中的1到100范围。
  • 统一提示语:按照需求修改提示内容为Too low, try again.和Too high, try again.。
  • 优化游戏循环:将原有的递归调用main改为main内部的while True循环,逻辑更清晰,同时保留总次数的持续统计。
  • 退出时显示总次数:修改play_again函数,接收总次数参数,用户选择退出时打印累计的猜中次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:42:03