打印并返回python

时间:2018-02-16 16:40:34

标签: python return

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

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 = collat​​z_number(n)之后得不到。

如何使我的代码功能如上所述:让它打印并返回n的collat​​z数,使其像这样工作(如上所述):

>>> a = collatz_number(n)

16

>>> print(a)

16

对不起,我很抱歉

3 个答案:

答案 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))

我希望我的回答有所帮助!祝你好运!