根据给定的参数数量打印

2024-09-28 01:29:54 发布

您现在位置:Python中文网/ 问答频道 /正文

Python初学者在这里尝试边做边学,这里我有两个函数'main','area'。 有两个参数的应该打印 y = math.pi *a*b,没有两个参数的应该打印 x = math.pi *a**2。在我的代码中,它当前是这样打印的“第一”(153.93804002589985,0.0) 第二个(78.5398163397483,62.83185307179586)”(为什么要打印这些0.0和78.5398163397483?),如何让它检查是否给定了一个参数来执行此操作,以及两个参数是否执行此操作

import math

def area(a,b=0):
     y = math.pi *a*b
     x = math.pi *a**2
     
     return x,y
  

def main():
     
     print("First", area(7))

     print("Second", area(5, 4))


main()

Tags: 函数代码import参数returnmaindefpi
2条回答

函数返回一个元组,但函数的调用方不知道使用哪个值。相反,函数应该只返回一个或另一个值,具体取决于提供的输入。另外,我建议使用None作为b的默认值,因为0可能是一个有效值

def area(a, b=None):
    if b is None:
        return math.pi * a**2
    else:
        return math.pi * a * b

或者,您也可以使用三元... if ... else ...表示整个表达式或仅表示不同的部分:

def area(a, b=None):
    return math.pi * a * (b if b is not None else a)

然后,输出将是公正的

First 153.93804002589985
Second 62.83185307179586

如果我没弄错的话,你想要这样的东西:

import math

def area(a, b=None):
    if b is None:
        # b not specified:
        x = math.pi * a**2
    else:
        # b specified:
        x = math.pi * a*b 
    return x
  
def main():
     print("First", area(7))
     print("Second", area(5, 4))

main()

输出为

First 153.93804002589985
Second 62.83185307179586

如果未指定b,则将其设置为None。然后在函数中进行测试

它在原始示例中打印(153.93804002589985, 0.0)的原因是您使用return x,y从函数返回一个元组(x, y)

相关问题 更多 >

    热门问题