如何修复猜数游戏while循环中历史输入列表显示为None的问题?
问题解决办法
核心问题是**list.append()方法无返回值(返回None)**,直接把它放在print语句里就会输出None。另外代码还有几处逻辑问题需要修正,以下是完整修复方案:
主要问题点
heats.append(heat)执行后返回None,不能直接嵌入print,需先执行添加操作,再单独打印列表- 首次输入的温度未加入历史列表
- 条件判断顺序错误(比如输入10会被
heat>=7的条件先捕获,不会触发heat>=10的专属提示) - 重复执行
int(heat)转换(输入已经用int()处理过,无需二次转换)
修复后的代码
# 初始化历史温度列表 heats = [] # 获取首次输入并加入历史列表 heat = int(input("你可以把温度调到1-10之间。你想调到多少度?")) heats.append(heat) while heat != 6: if heat < 3: heat = int(input("太冷了...再试试。")) elif heat == 3: heat = int(input("温温的?再试试。")) elif heat <= 5: heat = int(input("再调高点试试。")) elif heat >= 10: heat = int(input("哇哦,太热了!调低一点再试!")) elif heat >=7: heat = int(input("再调低点试试。")) # 将新输入的温度加入历史列表 heats.append(heat) # 打印所有尝试过的温度 print("已尝试的温度:", heats) print("恭喜你,猜对了!")
关键修改说明
- 分离添加与打印操作:先执行
heats.append(heat)完成列表更新,再单独打印整个heats列表,确保历史记录正常显示 - 调整条件顺序:把范围更精准的条件(比如
heat>=10)放在范围宽泛的条件(heat>=7)之前,避免专属提示被覆盖 - 补全首次输入记录:首次输入的温度要先加入列表,否则第一次错误猜测会缺失初始输入记录
- 移除重复类型转换:删除多余的
int(heat)语句,避免无效操作
内容的提问来源于stack exchange,提问作者pythonguy99
相关产品推荐
相关产品推荐

