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()
函数打印返回值。因此,每次调用函数后都会打印更新后的值。
所以这两个代码块的运行结果是不一样的。第一个代码块的输出为空,第二个代码块会打印函数返回的值