我想打印并返回一个值,但似乎无法找到我的方法。 我现在有这个:
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语句返回的相同数字),或者就像你看到的这段代码那样 - 我只有在打印(a)之后得到16,但是在a = collatz_number(n)之后得不到。
如何使我的代码功能如上所述:让它打印并返回n的collatz数,使其像这样工作(如上所述):
>>> a = collatz_number(n)
16
>>> print(a)
16
对不起,我很抱歉
答案 0 :(得分:4)
您几乎不想从某个功能打印。如果您不希望打印返回值,那么您可以做任何事情(简单)。如果执行希望打印,则可以在函数返回值后始终执行此操作。如果由于某种原因你必须同时打印并返回,请将返回值保存到变量中,这样你只需要一个 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;你不需要再做分工了。
答案 1 :(得分:0)
您可以在返回之前在函数内部打印变量。
def foo(x):
return_value= x+5
print(return_value)
return return_value
a=foo(10)
答案 2 :(得分:0)
'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))
我希望我的回答有所帮助!祝你好运!