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

为何向Python array模块创建的整数数组追加输入float值时会报TypeError?

报错核心原因解析

基础代码与报错复现

原实现代码:

from array import *
a=array('i',[])
for i in range (5):
    x = float(input("enter the element of array:"))
    a.append(x)
for i in range (5):
    print(a[i], end="  ")

运行触发的报错输出:

enter the element of array:3.5

TypeError Traceback (most recent call last)
in ()
5 for i in range (5):
6 x=float(input("enter the element of array:"))
----> 7 a.append(x)
8 for i in range (5):
9 print(a[i],end=" ")

TypeError: integer argument expected, got float

错误根因

Python标准库array模块创建的数组具备强类型锁定特性,和无类型约束的普通Python列表不同:

  • 数组初始化时传入的第一个参数为固定类型码,会从创建阶段就锁死整个数组可存储的数据类型,后续所有追加、插入的元素都必须匹配该预设类型,否则会直接触发类型校验错误。
  • 代码中初始化数组时使用的类型码'i',对应C语言标准带符号整型(int),即该数组从创建起就被限定只能存储整数,无法容纳浮点数。当将转换为float类型的输入值传入append方法时,模块的类型校验识别到传入参数和预设的整数类型不匹配,最终抛出对应类型错误,也就是报错提示中“期望收到整数参数,实际获取到浮点数”的来源。

修正方向

如果需要存储浮点数,仅需将初始化阶段的类型码替换为对应浮点数的标识即可:

  • 类型码'f'对应单精度浮点数数组
  • 类型码'd'对应双精度浮点数数组,和Python原生float的精度完全匹配

例如将初始化语句修改为a = array('d', [])后,追加浮点数的操作即可正常运行。

内容的提问来源于stack exchange,提问作者Mehedi Hasan Rony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 18:45:04