小白请教各位,这个代码为什么每个print了2次?

以下是代码

def collatz(number):
    if number%2==0:
        number=number//2
        print(str(number))
        return number
    else:
        number=number*3+1
        print(str(number))
        return number
print('enter your number')
number=int(input())
while number!=1:
    collatz(number)
    number=collatz(number)

这是结果
enter your number
5
16
16
8
8
4
4
2
2
1

阅读 2.6k
4 个回答

改成:

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

把这句注释掉 collatz(number)

因为调用了两次函数 collatz, 而 number数值类型, 函数中的修改不会影响到函数外部。

函数调用了两次

推荐问题