카테고리 없음

왜 숫자의 자릿수를 합하려고 할 때 "TypeError: 'int' object is not iterable" 오류가 발생하는 걸까요? [중복됨]

스택큐힙리스트 2023. 11. 26. 18:47
반응형

import math
print(안녕하세요, 과제 4를 해결해 봅시다 :))
number1 = input(몇 자리 수까지 볼까요? )
number2 = input(자리 수의 합은 얼마로 설정하시겠습니까? )
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

무엇이 잘못되었을까요?

답변 1

귀하의 문제는 다음 줄과 관련이 있습니다:


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)
>>> # 이 방법이 더 일반적이고 선호됩니다.
>>> sum(int(x) for x in a)
11
>>> # 하지만 이것도 작동합니다.
>>> sum(map(int, a))
11
>>>

답변 2

TypeError: 'int' object is not iterable'란 무엇인가?
TypeError: 'int' object is not iterable'란 오류는 파이썬에서 리스트, 튜플 또는 문자열과 같이 여러 요소가 있는 객체를 다룰 때 종종 발생하는 오류이다. 이 오류는 반복 가능한 객체가 아닌 정수형(int) 객체를 반복하려고 할 때 발생한다.
정수형 객체는 단일 값을 담고 있는 자료형으로, 개별 숫자 요소들을 하나씩 가져올 수 없다. 예를 들어, 우리가 12345라는 숫자를 가지고 있고 각 자리 숫자의 합을 구하려 한다면, 이 정수를 이루는 각 자리 숫자를 분리하여 합을 구해야 하는데, 이처럼 정수형은 반복 가능한 객체가 아니기 때문에 TypeError가 발생하는 것이다.
TypeError: 'int' object is not iterable' 오류를 해결하기 위해서는 정수형을 반복 가능한 객체로 변환해야 한다. 이를 위해 일반적으로 문자열로 변환한 뒤, 각 문자를 숫자로 다시 변환하여 처리하는 방법을 사용한다. 이러한 방법을 사용하면 정수형을 이용하여 숫자의 각 자릿수를 합산할 수 있다.
결론적으로, 'TypeError: 'int' object is not iterable' 오류는 파이썬에서 정수형을 반복 가능한 객체로 사용하려고 할 때 발생한다. 이 오류를 해결하기 위해서는 정수형을 문자열로 변환하고, 변환된 문자열을 다시 숫자로 변환하여 처리하는 방법을 사용할 수 있다.
이와 같이 파이썬에서 발생하는 'TypeError: 'int' object is not iterable' 오류에 대해 알아보았다. 이 오류를 해결하는 방법은 시퀀스 데이터와 반복 작업을 수행해야 하는 경우 계속해서 사용되므로, 이와 같은 오류가 발생한다면 해당 원인을 찾아 수정해야 한다.

반응형