我一直在努力创建一个带有数字的函数并通过猜想运行它。我写了这段代码,但它不起作用。我是初学者,所以我不知道为什么它不起作用。它不是通过数字运行而是停在1处,而是永远持续下去。如果有人可以查看我的代码并告诉我它的错误,那将非常有用。
def collatz(number):
number = int(number)
while number != 1:
if number == 1:
break()
if number%2 == 0:
number = number//2
print(str(number))
if number%2 == 1:
number = 3*number+1
print(str(number))
collatz(5)
答案 0 :(得分:1)
任何将在1处停止的数字必须先通过值2。
但是,由于你对偶数和奇怪性的测试是正确的,如果在你的循环开始时number == 2
,那么:
然后循环继续number == 3
。
要解决此问题,请将if
替换为elif
,以便每次只测试一个选项。
答案 1 :(得分:0)
有人已经提到过你的if / else问题。这是您的代码的缩写版本:
def collatz(number):
while number != 1:
print(number)
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
collatz(5)
及其输出:
$ python test.py
5
16
8
4
2
1