繁体   English   中英

如何从 output python 中删除括号

[英]How to remove parenthesis from output python

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

(10.3,11.4) 

什么时候应该吐出来:

10.3 11.4 

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

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

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

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)

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语句接收元组,而不是两个单独的值。

原因在于声明“return q,r”

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

但是,print q,r的执行方式不同,作为多参数打印,并将打印所有参数,其间包含空格。

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

从官方文件;

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

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

尝试显式解包由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

math.sqrt 返回一个具有实部和虚部的复数。 将其更改为 math.sqrt(7).real,复数仅为实数。 这使印刷品如您所愿

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM