【发布时间】:2015-11-03 20:03:04
【问题描述】:
我正在尝试使用 Automate the Boring Stuff with Python 第 3 章末尾的一个项目中的指南编写一个 Collatz 程序。我正在使用 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 循环中使用 if 和 elif 语句的函数。我想要打印数字,然后返回到循环的开头并使用 Collatz 序列将自身减少为一个,结果数字的每个实例在它通过循环时被打印。使用我当前的代码,我只能打印数字的第一个实例,之后该数字不会通过循环。以下是我的代码:
#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)
【问题讨论】:
标签: python python-3.4