关于collatz的问题,while与return的用法如何解决?


def collatz(number):
    if number % 2 == 0:
        number = number // 2
    else:
        number = 3 * number + 1
    return number
n = int(input('输入一个整数?\n'))
while n != 1: 
    collatz(n)
    if n == 1:
        break
    print(n)
def collatz(number):
    if number % 2 == 0:
        return number // 2
    elif number % 2 == 1:
        return 3 * number + 1

n = int(input('输入一个整数?\n'))
while n != 1: 
    print(collatz(n))
    continue
    if n == 1:
        break

第一个问题:这两个代码块的return用法结果运行起来是否一样。

def collatz(number):
    while number != 1:
        if number % 2 == 0:
            number = number // 2
        else:
            number = 3 * number + 1
        print(number)
        if number == 1:
            break
n = int(input('输入一个整数?\n'))
collatz(n)
第二个问题:我要代码三结果,但为什么把循环拿出来,前两个代码就不好使了呢?是哪里出了问题吗?

第一个代码块的函数collatz(number)在每次调用后,更新参数number的值,并通过return语句将更新后的值返回。然而,在主程序中调用函数时,没有将返回的值存储到变量中,因此不会打印或使用该值。

第二个代码块的函数collatz(number)也同样更新参数number的值,但是在调用函数时,明确地使用print()函数打印返回值。因此,每次调用函数后都会打印更新后的值。

所以这两个代码块的运行结果是不一样的。第一个代码块的输出为空,第二个代码块会打印函数返回的值