90

这是我的代码:

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

我究竟做错了什么?

4

4 回答 4

121

您的问题出在这一行:

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 语句:最后缺少 a 。
  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
>>>
于 2013-10-22T16:40:40.950 回答
4

如果情况是:

n=int(input())

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

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

于 2020-12-30T20:22:07.830 回答
3

这很简单,您试图将整数转换为列表对象!!!当然它会失败,它应该......

通过使用您提供的示例向您演示/证明这一点......只需对每个案例使用 type 函数,如下所示,结果将不言而喻!

>>> type(cow)
<class 'range'>
>>> 
>>> type(cow[0])
<class 'int'>
>>> 
>>> type(0)
<class 'int'>
>>> 
>>> >>> list(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> 
于 2018-12-29T23:19:56.673 回答
0
def hourglassSum(arr):
    sum1 = []
    # Write your code here
    for i in range(0,len(arr)-2):
        for j in range(0,len(arr)-2):
            x = sum(arr[i][j]+arr[i+1][j+1]+arr[i+2][j]+arr[i][j+1]+arr[i][j+2]+arr[i+2][j+1]+arr[i+2][j+2])
            sum1.append(x)
            #sum1.append(arr[i][j]+arr[i][j+1]+arr[i][j+2]+arr[i+1][j+1]+arr[i+2][j]+arr[i+2][j+1]+arr[i+2][j+2])
    return max(sum1)

# Why x = sum(arr[i][j]+arr[i+1][j+1]+arr[i+2][j]+arr[i][j+1]+arr[i][j+2]+arr[i+2][j+1]+arr[i+2][j+2]) is showing TypeError: 'int' object is not iterable

如果我们在语句下面运行注释语句,它就会正常运行..

于 2021-07-26T06:18:38.117 回答