网站首页 > 技术文章 正文
原文: Int Object is Not Iterable – Python Error [Solved]
如果你在运行你的 Python 代码时看到报错 “TypeError: 'int' object is not iterable”,这意味着你正试图遍历一个整数或其他不能应用循环的数据类型。
在 Python 中,可迭代的数据是列表、元组、集合、字典等等。
此外,这个错误是 “TypeError”,意味着你正试图对一个不合适的数据类型进行操作,例如,将一个字符串与一个整数相加。
今天之后,你在运行 Python 代码时就不会遇到这个错误了。因为在这篇文章中,我不仅会告诉你如何解决它,我还会告诉你如何查看 __iter__ 魔法方法,以便你能看到一个对象是否可迭代。
如何解决 Int 对象不可迭代的问题
如果你试图遍历一个整数,你会得到这个报错:
count = 14
for i in count:
print(i)
# Output: TypeError: 'int' object is not iterable
解决这个问题的一个方法是将变量传入 range() 函数。
在 Python 中,range 函数检查传入的变量,并返回一系列从 0 开始、在指定数字之前停止的数字。
现在循环将运行:
count = 14
for i in range(count):
print(i)
# Output: 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
# 13
另一个使用该解决方案的例子是下面的片段:
age = int(input("Enter your age: "))
for num in range(age):
print(num)
# Output:
# Enter your age: 6
# 0
# 1
# 2
# 3
# 4
# 5
如何检查数据或对象是否是可迭代的?
要检查某些特定的数据是否是可迭代的,你可以使用 dir() 方法。如果你能看到神奇的 __iter__ 方法,那么这些数据就是可迭代的。如果没有,那么这些数据就不是可迭代的,你不应该费力地去遍历它们。
perfectNum = 7
print(dir(perfectNum))
# Output:['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__',
# '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
在输出中没有找到 __iter__ 魔法方法,所以变量 perfectNum 是不可迭代的。
jerseyNums = [43, 10, 7, 6, 8]
print(dir(jerseyNums))
# Output: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
找到了魔法方法 __iter__,所以列表 jerseyNums 是可迭代的。
小结
在这篇文章中,你了解了 “Int Object is Not Iterable” 错误以及如何解决它。
你也了解了如何检查一个对象或一些数据是否可迭代。
如果你在一些数据中查找 __iter__ 魔法方法而没有找到它,最好不要试图在这些数据中循环,因为它们不是可迭代的。
谢谢你阅读本文。
猜你喜欢
- 2024-12-02 「第2周」Python基本图形绘制 实例3——turtle五角星绘制
- 2024-12-02 青少年 Python 编程 Lesson9: 面向对象设计
- 2024-12-02 「Python条件结构」将两个数从小到大输出
- 2024-12-02 Python包中__init__.py文件的作用和用法
- 2024-12-02 分享一个Python实例脚本--如何判断输入日期是第几天
- 2024-12-02 python编程 石头剪刀布游戏,练手题目
- 2024-12-02 Python每日一练之打印所有水仙花数
- 2024-12-02 [oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
- 2024-12-02 零基础学python第七天之随机整数randint
- 2024-12-02 Python数据类型的转换
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 530℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 493℃MySQL service启动脚本浅析(r12笔记第59天)
- 473℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 470℃启用MySQL查询缓存(mysql8.0查询缓存)
- 451℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 430℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 427℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)