【发布时间】:2020-04-28 01:45:32
【问题描述】:
我正在尝试从使用 Python 自动化无聊的东西的第 3 章末尾找到的项目中编写一个 Collatz 程序。以下是项目描述:
编写一个名为 collatz() 的函数,它有一个名为 number 的参数。如果数字是偶数,那么 collatz() 应该打印数字 // 2 并返回这个值。如果数字是奇数,则 collatz() 应该打印并返回 3 * number + 1。然后编写一个程序,让用户输入一个整数,并在该数字上不断调用 collatz(),直到函数返回值 1。
此程序的输出可能如下所示:
输入号码:3 10 5 16 8 4 2 1
问题:为什么我在输入整数时会陷入无限循环?无论我读了多少次关于 while 循环的内容,我似乎都无法摆脱这种状态。有人可以解释一下我如何让程序在第一次运行 collatz 函数时使用结果一次又一次地运行 collatz 函数?
def collatz(number):
if number % 2 == 0:
print(number//2)
return number//2
elif number % 2 != 0:
print(3 * number + 1)
return 3 * number + 1
while True:
print('Enter integer: ')
digit = int(input())
while digit > 1:
collatz(digit)
if collatz(digit) == 1:
print('This is the end of the collatz test.')
break
if digit < 0:
print('This is an error. Please try again')
【问题讨论】:
标签: python