用python自动化枯燥的东西第3章实践项目

用python自动化枯燥的东西第3章实践项目,python,Python,请帮帮我 对于“用python自动化无聊的东西”第3章中的实践项目,我编写了自己的代码。但它有我无法修复的错误 def collatz(number): if number == 1: print('the sequence is done') elif number % 2 == 0: print(number / 2) collatz(number / 2) else: print(number *

请帮帮我

对于“用python自动化无聊的东西”第3章中的实践项目,我编写了自己的代码。但它有我无法修复的错误

def collatz(number):

    if number == 1:
        print('the sequence is done')

    elif number % 2 == 0:
        print(number / 2)
        collatz(number / 2)

    else:
        print(number * 3 + 1)
        collatz(number * 3 + 1)

def begin():

    try:
        num = int(input("enter an integer: "))

    except ValueError:
        print("Please enter an integer greater than 1.")
        begin()

    if not num > 1:
        print("Please enter an integer greater than 1.")
        begin()

    collatz(num)

begin()

运行它会产生循环错误。我已经尝试过修复它,但我只是陷入了困境。

您错过了重新创建程序的基本条件。
您需要了解递归,以便了解代码的行为和功能。
目前,递归程序的迭代版本是:

def collatz(number):

    if number == 1:
        print("the sequence is done")

    elif number % 2 == 0:
        print(number / 2)
        collatz(number / 2)

    else:
        print(number * 3 + 1)
        collatz(number * 3 + 1)


def begin():

    while True:
        try:
            num = int(input("enter an integer: "))
            if not num > 1:
                print("Please enter an integer greater than 1.")
                continue
        except ValueError:
            print("Please enter a valid integer greater than 1.")
            continue
        collatz(num)
        break


if __name__ == "__main__":
    begin()

你能添加错误吗?我刚刚运行了你的代码,效果很好。不确定要编写什么代码。您已经陷入了递归。当您运行我的代码时,首先输入大于1的整数不会出错。但是一旦你输入1或0或小于它们,然后如果你输入一个好的整数,比如10,17等等,你可以看到错误。