Collatz序列Infinte循环误差



我正在获得无限循环。我不确定如何将结果掩盖为新数字变量并将其放回时循环。

#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()

以下工作:

#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呼叫,在例外,如果有人以不良价值输入,我们不想继续。

最新更新