gpt4 book ai didi

python - 打印并返回 python

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:35 25 4
gpt4 key购买 nike

我想打印并返回一个值,但似乎找不到解决方法。我现在有这个:

def collatz_number(n):
# If n is not a positive integer
if n<=0:
return "Only positive integers please"


# Even numbers
elif n % 2 == 0:
return n // 2


# If n is 1
elif n == 1:
return 1


# Odd number
elif n % 2 == 1:
return 3*n+1

我希望它的功能是这样的:

>>>a = collatz_number(5)

16

>>> print(a)

16

我的问题是我要么打印 16 两次,如果我在每个 if 语句下使用 print(然后代码将打印 if 语句返回的相同数字),或者就像您看到的这段代码一样 - 我只在 print(a) 之后得到 16,但在 a = collat​​z_number(n) 之后不是。

我怎样才能使这段代码像我上面所说的那样起作用:让它打印并返回 n 的 collat​​z 数,这样它就可以像这样工作(如上所述):

>>> a = collatz_number(n)

16

>>> print(a)

16

对不起,我的表述不当

最佳答案

您几乎不想从函数中打印。如果您不想打印返回值,您将无能为力(简单)。如果您确实想要打印它,您可以在函数返回值后随时这样做。如果出于某种原因您必须同时打印和返回,请将返回值保存到一个变量中,这样您只需要一个 return 语句,它可以在调用 print 之前。

不相关,但不返回字符串来指示函数错误,否则返回数字。而是引发异常。

def collatz_number(n):
if n <= 0:
raise ValueError("Only positive integers please")

if n == 1:
rv = 1
elif n % 2 == 0:
rv = n // 2
else:
rv = 3*n+1

# print(rv)
return rv

首先检查 n==1,以避免进行不必要的除法。此外,一个数字不是偶数就是奇数;如果 n % 2 != 0,您知道它是 1;你不需要再做除法。

关于python - 打印并返回 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48831227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com