복붙노트

[PYTHON] int 객체는 반복 가능하지 않습니까?

PYTHON

int 객체는 반복 가능하지 않습니까?

inp = int(input("Enter a number:"))

for i in inp:
    n = n + i;
    print (n)

... 'int'객체가 반복 가능하지 않습니다.

각 숫자를 더하여 합계를 찾고 싶습니다. 예를 들어, 110. 1 + 1 + 0 = 2입니다. 어떻게 할 수 있습니까?

감사

해결법

  1. ==============================

    1.먼저, int에 대한 호출을 잃어 버린다. - 문자열을 정수로 변환한다. 이것은 원하는 것이 아니다. (각 문자를 자신의 숫자로 취급하고 싶다.) 변화:

    먼저, int에 대한 호출을 잃어 버린다. - 문자열을 정수로 변환한다. 이것은 원하는 것이 아니다. (각 문자를 자신의 숫자로 취급하고 싶다.) 변화:

    inp = int(input("Enter a number:"))
    

    에:

    inp = input("Enter a number:")
    

    이제 inp는 자릿수 문자열입니다. 자릿수로자를 수 있습니다.

    다음으로, n에 초기 값을 할당하십시오. 코드가 바로 지금 의미하는 것처럼 초기화하지 않기 때문에 NameError를 얻습니다. 아마 당신은 for 루프 앞에 n = 0을 원할 것입니다.

    다음으로 문자와 정수의 차이점을 다시 고려하십시오. 이제 당신은 :

    n = n + i;
    

    불필요한 세미콜론 (파이썬은 들여 쓰기 기반 구문입니다) 외에도, 문자 i를 정수 n으로 합산하려고합니다. 그래서 이것은

    n = n + int(i)
    

    문자 '7'을 정수 7로 바꾸는 등.

  2. ==============================

    2.시험:

    시험:

    for i in str(inp):
    

    문자열 표현의 문자를 반복합니다. 각 캐릭터가 생기면 별도의 숫자처럼 사용할 수 있습니다.

  3. ==============================

    3.숫자를 표현하는 문자열을 처리하기를 원합니다. 번호 자체는 아닙니다 (로마 숫자로 "CX"또는 110에 대해 모두 "0x6e"16 진수와 같이 다르게 쓰여질 수있는 추상 엔티티입니다) 또는 무엇이든).

    숫자를 표현하는 문자열을 처리하기를 원합니다. 번호 자체는 아닙니다 (로마 숫자로 "CX"또는 110에 대해 모두 "0x6e"16 진수와 같이 다르게 쓰여질 수있는 추상 엔티티입니다) 또는 무엇이든).

    따라서:

    inp = input('Enter a number:')
    
    n = 0
    for digit in inp:
         n = n + int(digit)
         print(n)
    

    루프에 들어가기 전에 n = 0이 필요합니다. 존재하지 않는 변수의 값을 취할 수 없습니다 (n = n + int (digit)의 오른쪽은 n의 값을가집니다). 그리고 그 시점에 n이 존재한다면, 그것은 현재의 필요와 완전히 무관 한 무언가를 보유 할 수 있습니다. 당신은 그것을 막을 필요가 있습니다.

    이 솔루션은 사용자가 제공 한 입력이 실제로 숫자가되도록 보장하지 않습니다. 생각할 수 있도록이 문제를 남겨 둘 것입니다 (힌트 : 필요한 모든 것은 Python 자습서에 있습니다).

  4. ==============================

    4.참고 : 모든 자릿수의 합계를 얻고 싶다면 간단하게 할 수 있습니다.

    참고 : 모든 자릿수의 합계를 얻고 싶다면 간단하게 할 수 있습니다.

    print sum(int(digit) for digit in raw_input('Enter a number:'))
    
  5. ==============================

    5.어쩌면 너는하려고하는거야.

    어쩌면 너는하려고하는거야.

    for i in range(inp)
    

    range ()를 사용하지 않았기 때문에 방금이 오류가 발생했습니다.

  6. ==============================

    6.for .. in 문은 반복자가 정의 된 유형을 사용해야합니다. 단순한 int 형에는 반복자가 없습니다.

    for .. in 문은 반복자가 정의 된 유형을 사용해야합니다. 단순한 int 형에는 반복자가 없습니다.

  7. ==============================

    7.ghills는 이미 언급했듯이

    ghills는 이미 언급했듯이

    inp = int(input("Enter a number:"))
    
    n = 0
    for i in str(inp):
        n = n + int(i);
        print n
    

    당신이 무언가를 통해 반복 할 때, 키워드는 "IN"이고, 단지 항상 그것을 무언가의 목록으로 생각합니다. 평범한 정수는 반복 할 수 없습니다. 따라서 iterable이 아닙니다.

  8. ==============================

    8.입력을 받아서 iterable 인 문자열인지 확인하십시오.

    입력을 받아서 iterable 인 문자열인지 확인하십시오.

    그런 다음 목록 이해를 수행하고 각 값을 다시 숫자로 변경하십시오.

    원하는 경우 모든 숫자의 합계를 계산할 수 있습니다.

    inp = [int(i) for i in str(input("Enter a number:"))]
    print sum(inp)
    

    또는 실행 중에 실제로 출력을보고 싶다면 다음을 수행하십시오.

    def printadd(x,y):
        print x+y
        return x+y
    
    inp = [int(i) for i in str(input("Enter a number:"))]
    reduce(printadd,inp)
    
  9. ==============================

    9.변경 시도 할 수 있습니다. inp in : 으로 범위 (1, inp)의 i에 대해 : 반복은 단일 int로는 작동하지 않습니다. 대신 실행 범위를 제공해야합니다.

    변경 시도 할 수 있습니다. inp in : 으로 범위 (1, inp)의 i에 대해 : 반복은 단일 int로는 작동하지 않습니다. 대신 실행 범위를 제공해야합니다.

  10. ==============================

    10.그것을 int ()로 만들지 말고 범위로 만들면 ()이 문제를 해결할 것입니다.

    그것을 int ()로 만들지 말고 범위로 만들면 ()이 문제를 해결할 것입니다.

    inp = range(input("Enter a number: "))
    
  11. ==============================

    11.OP의 질문에 대한 한 가지 가능한 대답 ( "각 숫자를 추가하여 합계를 찾고 싶습니다. 예를 들어, 110. 1 + 1 + 0 = 2입니다. 어떻게합니까?")는 내장 함수를 사용하는 것입니다 divmod ()

    OP의 질문에 대한 한 가지 가능한 대답 ( "각 숫자를 추가하여 합계를 찾고 싶습니다. 예를 들어, 110. 1 + 1 + 0 = 2입니다. 어떻게합니까?")는 내장 함수를 사용하는 것입니다 divmod ()

    num = int(input('Enter a number: ')
    nums_sum = 0
    
    while num:
        num, reminder = divmod(num, 10)
        nums_sum += reminder
    
  12. from https://stackoverflow.com/questions/1938227/int-object-is-not-iterable by cc-by-sa and MIT license