prinsky_robin 2023-06-22 16:03 采纳率: 50%
浏览 2

关于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)
第二个问题:我要代码三结果,但为什么把循环拿出来,前两个代码就不好使了呢?是哪里出了问题吗?
  • 写回答

1条回答 默认 最新

  • 小山code 后端领域优质创作者 2023-06-22 17:53
    关注

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

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

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

    评论

报告相同问题?

问题事件

  • 创建了问题 6月22日

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型