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

