【问题标题】:collatz sequence infinte loop errorcollat​​z 序列无限循环错误
【发布时间】:2017-09-28 12:46:10
【问题描述】:

我得到一个无限循环。我不确定如何将结果转换为新的数字变量并将其放回 while 循环中。

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

【问题讨论】:

    标签: python-3.x collatz


    【解决方案1】:

    以下作品:

    #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 调用,如果有人输入了错误的值,我们不想继续。

    【讨论】:

    • 所以 A=B != B=A 在 python 中。感谢您的澄清。
    • 这段代码没有按照当前的缩进运行——你能不能修复它,以便人们可以运行它并从中学习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2013-03-07
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多