1. ホーム
  2. python

[解決済み] Python - TypeError: 'int' オブジェクトは反復可能ではありません。

2022-03-01 16:23:28

質問

以下は私のコードです。

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

何が間違っているのでしょうか?

どうすればいいですか?

この行に問題があるようです。

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]
>>>


また、2つのことを取り上げたいと思いました。

  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
>>>