Python - 类型错误:“int”对象不可迭代

新手上路,请多包涵

这是我的代码:

 import math

print("Hey, lets solve Task 4 :)")

number1 = input("How many digits do you want to look at? ")
number2 = input("What would you like the digits to add up to? ")

if number1 == 1:
    cow = range(0,10)
elif number1 == 2:
    cow = range(10,100)
elif number1 == 3:
    cow = range(100,1000)
elif number1 == 4:
    cow = range(1000,10000)
elif number1 == 5:
    cow = range(10000,100000)
elif number1 == 6:
    cow = range(100000,1000000)
elif number1 == 7:
    cow = range(1000000,10000000)
elif number1 == 8:
    cow = range(10000000,100000000)
elif number1 == 9:
    cow = range(100000000,1000000000)
elif number1 == 10:
    cow = range(1000000000,10000000000)

number3 = cow[-1] + 1

n = 0
while n < number3:
    number4 = list(cow[n])
    n += 1

我正在寻找一个循环,以便对于列表中的每个元素,它将被分解成它的每个字符。例如,假设数字 137 在列表中,那么它将变成 [1,3,7] 。然后我想将这些数字加在一起(我还没有开始,但我知道如何做)。

但是,我不断收到此错误消息:

 TypeError: 'int' object is not iterable

我究竟做错了什么?

原文由 user2908001 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

您的问题出在这一行:

 number4 = list(cow[n])

它尝试取 cow[n] ,它返回一个整数,并使它成为一个列表。这不起作用,如下所示:

 >>> a = 1
>>> list(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>

也许您打算将 cow[n] 放入 列表中:

 number4 = [cow[n]]

请参阅下面的演示:

 >>> a = 1
>>> [a]
[1]
>>>


另外,我想解决两件事:

  1. 您的 while 语句末尾缺少 :
  2. 像这样使用 input 被认为是非常危险的,因为它将其输入评估为真正的 Python 代码。最好在这里使用 raw_input ,然后使用 int 将输入转换为整数。

要拆分数字然后根据需要添加它们,我首先将数字设为字符串。然后,由于字符串是可迭代的,您可以使用 sum

 >>> a = 137
>>> a = str(a)
>>> # This way is more common and preferred
>>> sum(int(x) for x in a)
11
>>> # But this also works
>>> sum(map(int, a))
11
>>>

原文由 user2555451 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果情况是:

n=int(input())

而不是 -> for i in n: -> 给出错误 int 对象不是 iterable

使用 -> for i in range(0,n): 工作正常..!

原文由 Augustine Jose 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题