You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复猜数游戏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("恭喜你,猜对了!")

关键修改说明

  1. 分离添加与打印操作:先执行heats.append(heat)完成列表更新,再单独打印整个heats列表,确保历史记录正常显示
  2. 调整条件顺序:把范围更精准的条件(比如heat>=10)放在范围宽泛的条件(heat>=7)之前,避免专属提示被覆盖
  3. 补全首次输入记录:首次输入的温度要先加入列表,否则第一次错误猜测会缺失初始输入记录
  4. 移除重复类型转换:删除多余的int(heat)语句,避免无效操作

内容的提问来源于stack exchange,提问作者pythonguy99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:15:21