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

Python循环接收输入代码报错排查:为何仅运行一次?

问题分析与修复方案

嘿,我来帮你揪出代码里的问题!你的代码只能运行一次的核心原因,是对input()函数的返回值类型理解错了——不管你输入的是整数、浮点数还是纯字符串,input()都会把它以字符串类型返回。

举个例子:你输入123,data的类型是str而不是int;输入3.14,data还是str。所以你的判断条件type(data) is int or type(data) is float永远不会成立,第一次输入后直接就触发else分支跳出循环了,这就是代码只能跑一次的根本原因。

修复方案

我们需要主动尝试把输入的字符串转换成数字类型,如果转换成功就加入列表,转换失败(说明输入的是纯字符串)就停止循环。这里用try-except异常处理是最稳妥的方式:

方案一:区分整数和浮点数

如果你想严格区分存入列表的是int还是float,可以用两层try-except:

list1 = []
print("Enter the values (enter a non-numeric string to stop)")
while True:
    data = input()
    try:
        # 先尝试转整数
        num = int(data)
        list1.append(num)
    except ValueError:
        try:
            # 转整数失败,再尝试转浮点数
            num = float(data)
            list1.append(num)
        except ValueError:
            # 两次转换都失败,说明是纯字符串,停止循环
            break
print("Final list:", list1)

方案二:统一转成浮点数(更简洁)

如果不需要严格区分int和float,直接转成float就行,因为整数也能被成功转成浮点数:

list1 = []
print("Enter the values (enter a non-numeric string to stop)")
while True:
    data = input()
    try:
        num = float(data)
        list1.append(num)
    except ValueError:
        break
print("Final list:", list1)

这样修改后,就能持续接收数字输入直到你输入纯字符串啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:02:39