如何从输出python中删除括号

时间:2013-10-07 20:09:03

标签: python parentheses

所以我有一个不断吐出的功能:

(10.3,11.4) 

应该吐出来的时间:

10.3 11.4 

我玩了并编写了一个简单的python代码,我似乎理解了这个概念

a=3
b=3
print a,b #returns 3 3

但它不适用于下面的函数,所以我想知道它为什么一直返回()

import math

x=10.01
y=9.01

def d():
    b = 2.00 *  x / math.sqrt(7)
    q=round(y-b,2)
    r=round(y+b,2)
    return q,r

print d() #returns (1.4399999999999999, 16.579999999999998)

3 个答案:

答案 0 :(得分:4)

print(正确)打印从d返回的元组。要单独打印值,请尝试以下操作:

print '{} {}'.format(*d())

或者这个:

dret = d()
print dret[0],dret[1]

print a,b不会将a,b解释为元组,而是将其解释为print语句的参数序列。请注意,print语句会更改Python3中的语法,以增加混淆。

要使a,b案例与q,r案例平行,它看起来更像是这样:

c = a,b
print c

在这种情况下,print语句接收元组,而不是两个单独的值。

答案 1 :(得分:2)

原因在于“return q,r”

您无法从函数返回多个值。 python正在做的是用q和r创建一个元组,并返回它,因为返回q,r被解释为return(q,r)然后print接受并输出一个元组。因此,打印(q,r)

非常公平

但是,打印q,r的执行方式不同,作为多参数打印,并打印所有带有空格的参数。

希望这可以解决任何困惑。

答案 2 :(得分:0)

来自官方文件;

  • return语句使用表达式列表保留当前函数调用。
  • 包含至少一个逗号的expression list会产生一个元组。

因此,像这样返回函数中的多个值会按照定义将它们返回到元组中。

尝试显式解包由d()返回的元组:

In [1]: import math

In [2]: x=10.01

In [3]: y=9.01

In [4]: def d():
   ...:         b = 2.00 *  x / math.sqrt(7)
   ...:         q=round(y-b,2)
   ...:         r=round(y+b,2)
   ...:         return q,r
   ...: 

In [5]: a, b = d()

In [6]: print a, b
1.44 16.58