小编典典

制作collat​​z程序可以自动完成无聊的工作

python

我正在尝试使用在使用Python自动完成无聊的东西的第3章末尾找到的项目中的准则编写Collat​​z程序。我正在使用python
3.4.0。以下是项目概述:

编写一个名为的函数collatz(),该函数具有一个名为number的参数。如果数字是偶数,collatz()则应打印number // 2并返回该值。如果数字为奇数,collatz()则应打印并返回3 * number + 1。然后编写一个程序,让用户键入一个整数,并不断调用collatz()该数字,直到函数返回该值为止1

该程序的输出可能类似于以下内容:

Enter number: 3 10 5 16 8 4 2 1

我试图做一个在while循环内使用ifelif语句的函数。我希望打印该数字,然后返回循环的开头,并使用Collat​​z序列将其减少为一个,并在循环过程中打印结果数字的每个实例。使用当前代码,我只能打印该数字的第一个实例,并且此后该数字不会循环。以下是我的代码:

#collatz

print("enter a number:")
try:
    number = (int(input()))
except ValueError:
          print("Please enter a valid INTEGER.")


def collatz(number):
    while number != 1:

        if number % 2==0:
            number = (number//2)
            #print(number)
            return (print(int(number)))

        elif nnumber % 2==1:
            number = (3*number+1) 
            #print(number)
            return (print(int(number)))

        continue


collatz(number)

阅读 129

收藏
2020-12-20

共1个答案

小编典典

def collatz(number):

    if number % 2 == 0:
        print(number // 2)
        return number // 2

    elif number % 2 == 1:
        result = 3 * number + 1
        print(result)
        return result

n = input("Give me a number: ")
while n != 1:
    n = collatz(int(n))

输出:

Give me a number: 3
10
5
16
8
4
2
1

Give me a number: 11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
2020-12-20