数字猜谜游戏问题排查:猜测次数未递减或while循环条件失效?
数字猜谜游戏问题修复
核心问题分析
循环条件逻辑错误:原代码用
rightnumber1 != True or guesses != 0作为循环判断条件,这会导致两种异常情况:- 就算猜对数字(
rightnumber1为True),只要剩余次数不为0,循环会继续执行 - 次数用完后(
guesses为0),只要没猜对,循环会无限运行
正确的循环逻辑应该是没猜对且还有剩余次数,即not rightnumber1 and guesses > 0
- 就算猜对数字(
输入异常未处理:当用户输入非整数内容时,
int(input(...))会直接抛出错误导致程序崩溃,猜测次数无法正常递减无效分支存在:原代码的else分支永远不会触发,因为
if和elif已经覆盖了数字相等/不等的所有情况
修复后的代码
import random def guess_func(): numberrange1 = random.randint(1, 100) rightnumber1 = False guesses = 3 # 修正循环条件:未猜对且还有次数才继续 while not rightnumber1 and guesses > 0: try: numberguess1 = int(input('范围已设定,请输入猜测的数字:')) if numberguess1 == numberrange1: print('恭喜你,猜对了!') rightnumber1 = True else: guesses -= 1 if numberrange1 > numberguess1: print(f'猜小了!剩余次数:{guesses}') else: print(f'猜大了!剩余次数:{guesses}') # 次数耗尽时提示正确答案 if guesses == 0: print(f'次数用完了,正确数字是:{numberrange1}') except ValueError: print('请输入有效的整数!') # 输入错误不消耗猜测次数
修复说明
- 调整循环条件,确保只有未猜对且还有剩余次数时才继续游戏
- 加入
try-except捕获输入非整数的异常,避免程序崩溃,且输入错误不扣除次数 - 简化分支逻辑,移除无效的else分支
- 每次猜错后显示剩余次数,次数耗尽时主动告知正确答案
内容的提问来源于stack exchange,提问作者FatRat747
相关产品推荐
相关产品推荐

