2017-09-28 2 views
1

무한 루프가 발생합니다. 결과를 새로운 숫자 변수로 변환하고 while 루프에 다시 넣는 방법에 대해서는 잘 모르겠습니다.collatz 시퀀스 오류 루프 오류

#Collatz squence 

import sys 
def collatz(): 
    try: 
     print('Enter a number') 
     number = int(input()) 
    except: 
     ValueError 
     print('Please type an integer') 

    while number != 1: 
     if number %2 == 0: 
      result = number//2 

      print(result) 

     elif number %2 == 1: 

      result = 3*number + 1 

      print(result) 

     **result = number** 


    while number == 1: 
     print ('You have arrived at the number itself') 
     sys.exit() 

collatz() 

답변

0

다음 작품 : 나는 결과에 수를 설정

#Collatz squence 

import sys 
def collatz(): 
    try: 
     print('Enter a number') 
     number = int(input()) 
    except ValueError: 
     print('Please type an integer') 
     sys.exit(1) 

    while number != 1: 
     if number %2 == 0: 
      result = number//2 
      print(result) 

    elif number %2 == 1: 
     result = 3*number + 1 
     print(result) 
    number = result # set the number to the result 

    while number == 1: 
     print ('You have arrived at the number itself') 
     sys.exit() 

collatz() 

공지 사항, 코드의 수는 변경되지 않습니다, 그래서 반복 동일한 코드 블록을 타격 유지 않았다. 또한 예외에서 sys.exit 호출을 추가했습니다. 잘못된 값으로 입력 한 경우 계속 진행하고 싶지 않습니다.

+1

그래서 A = B! = B = A in python. 해명 해줘서 고마워. –

+0

이 코드는 현재 들여 쓰지 않은 상태로 실행되지 않습니다. 여러분이 고칠 수 있으므로 고칠 수 있습니다. – cdlane