Python猜数字代码逻辑异常:错答两次后正确输入仍判定失败
代码核心问题
- 执行顺序错位,漏掉了对第三次输入的对错校验
逐行走现有代码的执行流就能复现bug:当你第二次猜错时,错误计数guesscount会累加到2,这时程序会弹出第三次输入提示。但你输入正确数字后,代码不会回到循环开头检查“当前输入是不是等于secretnum”,反而会顺着嵌套在else分支里的判输逻辑,直接判定你输了,完全跳过对本次输入的对错校验,根本没给第三次正确输入生效的机会。实际执行场景复现:
- 第一次输入错值,
guesscount=0,进入循环 - 判定猜错,计数加1变成1,弹出第二次输入提示
- 第二次输入错值,回到循环判定,
1<2成立,再次进入循环 - 判定猜错,计数加1变成2,弹出第三次输入提示
- 你这次输入正确值9,代码顺着else分支直接判断“计数等于最大猜测数”,立刻打印“You Lost!”,全程没有校验你刚输入的9是不是正确答案。
- 第一次输入错值,
- 循环计数和判定逻辑不匹配
你把“达到最大猜测次数就判输”的判断,放在了“猜错”的专属分支里,导致新获取的输入只要出现在计数达到上限的节点,就不会被对错校验逻辑覆盖,直接走到判输流程。
修正后的正常实现
secretnum = 9 max_wrong_guess = 2 wrong_count = 0 while True: guess = int(input('Guess: ')) # 每次拿到输入先校验对错 if guess == secretnum: print('Well done') break # 猜错后的处理 print('Try Again') wrong_count += 1 if wrong_count >= max_wrong_guess: print('You Lost!') break
这个逻辑下,不管是第几次输入,只要拿到数值就先判断对错,累计满2次错误才会判输,不会出现第三次输对还被判定错误的问题。
内容的提问来源于stack exchange,提问作者Abd Elrahman Yousry Mansour
相关产品推荐
相关产品推荐

