如何在while循环中设置条件输出?猜数字游戏代码异常排查
猜数字游戏代码错误分析与修复
错误点总结
- 循环条件逻辑错误:你写的
while user > secret_answer or user >= secret_answer等价于user >= secret_answer,只要用户猜的数字小于目标数,循环就直接终止,这就是程序两次输入后停止的核心原因。正确逻辑应该是只要没猜对就继续循环,即条件改为user != secret_answer(或者更直观用while True配合break)。 - 猜测计数与成功提示逻辑失效:
- 第一次输入的猜测在循环外,没有被计入次数
x; - 若用户第一次就猜对,循环条件不满足,完全进不了循环体,成功提示的代码永远不会执行。
- 第一次输入的猜测在循环外,没有被计入次数
- import语句位置不合理:
from random import randint放在函数内部虽能运行,但常规写法是放在文件开头,更符合代码规范。
修正后的代码
from random import randint def guessing_game(): print('Guess a number between 1 and 100') secret_answer = randint(1, 100) guess_count = 0 while True: user_guess = int(input('')) guess_count += 1 if user_guess > secret_answer: print('Lower!') elif user_guess < secret_answer: print('Higher!') else: print(f'Impressive! You got the correct answer in {guess_count} guesses!') break
修正说明
- 将随机数生成放在输入之前,逻辑更合理;
- 使用
while True实现无限循环,直到猜对后主动break,逻辑更清晰; - 每次循环内先获取用户输入并计数,确保所有猜测都被统计;
- 用更清晰的变量名
guess_count、user_guess提升可读性; - 采用f-string简化字符串拼接,代码更简洁。
内容的提问来源于stack exchange,提问作者Arc Kong
相关产品推荐
相关产品推荐

