2014-04-21 2 views
2

초급 파이썬에서이 프로그램 코드를하려고 :파이썬에서 숫자의 자릿수를 정렬하고 다른 숫자를 얻는 방법?

a = 0 
number = int(input("Choose a four digit number: ")) 

while number != 6174:         #Kaprekar's constant 
    sorted(number) 
    sorted(number, reverse=True) 

    large = "".join(sorted(number, reverse=True)) 
    small = "".join(sorted(number)) 
    number = (int(large) - int(small)) 
    a += 1 
print(a + "iterations.") 

나는 다음과 같은 오류 얻을 :

sorted(number)  
TypeError: 'int' object is not iterable 

그래서 어떻게 number의 숫자를 정렬하고 다른 번호를 얻을 수 있습니까? 이를 위해

+0

* * 숫자를 정렬하거나 숫자 *를 정렬하려고하는 이유는 무엇입니까? –

+0

@CristianCiupitu : 자릿수를 정렬 하시겠습니까? –

+0

네, 숫자를 최대 숫자와 최소 숫자로 다시 배열하고 싶습니다. – LavransL

답변

4

우선, 반복 가능 코드 주위에 sorted을 두어도 iterable 자체는 변경되지 않습니다. a = sorted(a)과 같은 작업을해야합니다.

이제는 numberintstr으로 작업하려고합니다. 당신은 str 사이에 여기에 필요한 int 변환 할 필요가 : 마지막으로, aint입니다

a=0 
number = input("Choose a four digit number: ") 

while number != "6174": 
    large = "".join(sorted(number, reverse=True)) 
    small = "".join(sorted(number)) 
    number = str(int(large) - int(small)) 
    a+=1 
print(a, "iterations.") 

, 그래서 당신은 마지막 인쇄 문에 int+str 할 수 없습니다. 내가 가진 것처럼 콤마를 넣거나 print(str(a)+" iterations").

+0

대단히 감사합니다. Simon! :) – LavransL

1

, 당신은 간단하게 수행 할 수 있습니다 이제 당신의 제안에 대해 @SimonT에

감사를 작동 분류

number = input("Choose a four digit number: ") 

.

+1

'list()'는 다음과 같다. 많은. –

+0

@MartijnPieters, 감사합니다. 답변이 업데이트되었습니다. – sshashank124

+0

'number = input ("네 자리 숫자를 선택하십시오 :")'와 같은 결과를 얻을 수 있습니다. – SimonT