为什么在要求返回math.pi时python返回“无值”?

时间:2019-10-02 11:32:08

标签: python-3.x math

我正在做作业,任务是用函数math.pi中给定的数字四舍五入pi(d=0)。因此,如果输入pi(2),该函数将返回3.14。如果在函数中输入超过15,它将打印“小数太多”,并返回math.pi。我的问题是我的函数现在返回math.pi和一个“无值”

我尝试了不同的方法,包括不同的if语句和完全删除打印语句。这样可以解决问题,但是我不会回答我的任务

import math
def pi(d=0):

    if d<=15:
         return round((math.pi), d)
    if d>15:
         return math.pi, print('Too many decimals!')

我希望if d>15的输出为Too many decimals!, 3.141592653589793

2 个答案:

答案 0 :(得分:0)

表达式

print('Too many decimals!')

可以打印'Too many decimals!',但其值为None。那是

return x, print('foo')

将返回元组(x, None),其副作用是将'foo'输出到控制台。您可以直接返回字符串本身:

return math.pi, 'Too many decimals!'

答案 1 :(得分:0)

return math.pi, print('Too many decimals!')

return语句始终返回一个值;在这种情况下,因为您在两个值之间使用逗号,所以它返回两个元素的 tuple

让我们重写该行,尽管它仍然做同样的事情:

result = (math.pi, print('Too many decimals!'))
return result

因此,在这里我们看到元组的第一个元素是math.pi,第二个元素是返回值None的任意值print('小数太多!')。

相反,这就是您的意思:

print('Too many decimals!')
return math.pi