Python While循环持续打印无法接收用户输入,请求技术协助
问题分析与解决方案
代码存在的核心问题
- 循环未更新输入值:进入
while循环后没有重新获取用户输入,num始终保持第一次输入的值,导致循环条件永远成立,无限打印提示信息 - 逻辑执行顺序错误:
break语句写在计算平均值的代码之前,一旦触发if num == -1判断,会直接跳出循环,后续计算和打印代码永远无法运行 - 冗余代码:循环结束后的
print("Nope, guess again:")属于无效输出,会在程序结束时错误显示 - 条件判断冗余:
-abs(1)等价于-1,直接写-1更直观
修正后的代码
# 创建存储输入数字的列表 wrong = [] # 游戏说明 input("Hi, We're gonna play a guessing game. When asked enter a number between -10 and 10.\nIf not correct you'll have to guess again ^-^") # 循环获取输入 while True: num = int(input("number:")) if num == -1: # 输入-1时计算平均值,先判断列表是否为空避免除以0 if wrong: av = sum(wrong) / len(wrong) print("You got it! The average of your wrong answers is: ") print(av) else: print("You didn't enter any numbers before inputting -1!") print("The End") break # 非-1的数字加入列表 wrong.append(num)
修改说明
- 改用
while True无限循环,内部通过if num == -1判断终止条件,逻辑更清晰 - 每次循环开始先获取用户输入,确保
num能实时更新 - 将计算平均值的代码放在
break之前,保证输入-1时能正常执行计算 - 添加空列表判断,避免用户直接输入-1导致的除以0错误
- 移除冗余的无效打印语句
内容的提问来源于stack exchange,提问作者xsshii
相关产品推荐
相关产品推荐

