这来自一本名为“用Python自动化枯燥的东西”的书。它要求读者:
a)仅使用一个参数
b)如果数字为偶数,则打印并返回数字// 2
c)如果number为奇数,则打印并返回3* number +1
d)函数应该一直被调用,直到函数返回值1。
我写的东西可以工作,但是我没有使用"return“命令,所以它是正确的吗?
def collatz():
print('Please enter a number: ')
number = int(input())
while number != 1:
if (number % 2)==0:
number = number / 2
print(number)
continue
else:
number = 3*number + 1
print(number)
continue
break
collatz()发布于 2019-11-04 10:26:11
你得到了所有正确的部分,但看起来a)和d)要求没有得到满足。一个小的重构--去掉input和while --应该能让你做到这一点:
def collatz(number): # a) use one parameter
if number % 2:
next_num = 3 * number + 1
else:
next_num = number // 2
print(next_num)
return next_num
def run():
number = int(input('Please enter a number: '))
while number != 1:
number = collatz(number) # d) call the function repeatedly
run()例如:
>>> run()
Please enter a number: 3
10
5
16
8
4
2
1
>>> run()
Please enter a number: 9
28
14
7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1https://stackoverflow.com/questions/58680951
复制相似问题