我想打印并返回一个值,但似乎无法找到我的方法。我现在有这个:
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语句返回的相同数字),或者就像你看到的这个代码一样 - 我只得到16 print(a),但不是a = collatz_number(n)之后。
我如何使这个代码功能如上所述:让它打印并返回n的collatz数,使其像这样工作(如上所述):
>>> 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;你不需要再做分工了。
您可以在返回之前在函数内部打印变量。
def foo(x):
return_value= x+5
print(return_value)
return return_value
a=foo(10)
'return'语句不打印任何内容,您只能将返回的值存储到变量中,然后打印它。我不确定我是否理解你的问题..但情况是,如果你想要打印两次,正如你在你的例子中所示,你必须这样做:
def collatz_number(n):
# If n is not a positive integer
if n<=0:
print "Only positive integers please"
return -1 #for example, you could return any other value..
# Even numbers
elif n % 2 == 0:
print str(n // 2)
return n // 2
# If n is 1
elif n == 1:
print str(1)
return 1
# Odd number
elif n % 2 == 1:
print str(3*n+1)
return 3*n+1
观察要打印一个数字你必须先将它转换为'str'类型...所以,你不能打印(a),而是打印(str(a))
我希望我的回答有所帮助!祝好运!