Python 报错 Int Object is Not Iterable 的解决办法

您所在的位置:网站首页 Python报错类型 Python 报错 Int Object is Not Iterable 的解决办法

Python 报错 Int Object is Not Iterable 的解决办法

2024-07-14 16:53| 来源: 网络整理| 查看: 265

原文: 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__ 魔法方法而没有找到它,最好不要试图在这些数据中循环,因为它们不是可迭代的。

谢谢你阅读本文。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3