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

Python猜数字游戏:5次猜测后COM值未更新问题求助

问题分析与修复

你的代码里有两个核心问题导致5次猜测后重置数字的逻辑不生效:

  • 计数不完整:uno()里第一次输入的猜测没给count加1,只有dos()里的猜测才会计数,相当于第一次猜测不算次数,永远凑不到5次。
  • 递归打断逻辑流:每次猜错后调用dos()是递归调用,一旦进入递归,uno()里循环体后面的if self.count ==5代码永远不会执行——递归会一直跑到猜对为止,根本轮不到这段判断代码执行。

修复后的代码

import random

class Emo:
    def __init__(self, x):
        self.x = x
        self.com = random.randint(1, x)
        self.count = 0

    def start_game(self):
        while True:
            self.count += 1
            number = int(input(f"Guess a number between 1 and {self.x}: \n"))
            
            if number < self.com:
                print("Higher")
            elif number > self.com:
                print("Lower")
            else:
                print("Correct!! You won..\n\n~旦_(^O^ )\n")
                one_more = input("Want to play one more time? (e/h)\n")
                if one_more == "e":
                    Emo(100).start_game()
                else:
                    print("\nThanks For Playing :)")
                    return
            
            # 检查是否达到5次猜测
            if self.count == 5:
                self.com = random.randint(1, self.x)
                print("You Guessed 5 Number. Computer Generated A New Number.")
                self.count = 0

Emo(100).start_game()

关键修改点

  • 删掉冗余的dos()递归方法,把所有猜测逻辑统一放到start_game()的循环里,保证每一次猜测都会执行计数和后续判断。
  • 每次输入猜测前先给count加1,确保所有猜测都被计数,包括第一次。
  • 把5次猜测的判断逻辑放到每次猜错后的位置,确保每猜一次就检查一次次数。
  • 去掉没用的self.number变量,直接用局部变量处理输入,简化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:23