使用 *args 将毕达哥拉斯定理推广到 n 个事物



当您不确定可能传递多少个参数时,我已经学会了一个通常使用 *arg grim。我正在尝试创建一个广义的毕达哥拉斯定理,以便它计算出

的n个事物
pytha(*arg)

print(pytha(x,y)) = np.sqrt(x**2 + y**2)
print(pytha(x,y,z)) = np.sqrt(x**2 + y**2 + z**2)
print(pytha(x,z)) = np.sqrt(x**2 + z**2)
print(pytha(x-7,y)) = np.sqrt((x-7)**2 + y**2)
print(pytha(x-3,y-5,z-8)) = np.sqrt((x-3)**2 + (y-5)**2 + (z-8)**2)
print(pytha(x,y,z,t)) = np.sqrt(x**2 + y**2 + z**2 + t**2)

我已经完成了

def pytha(*arg):

,但我不知道如何操纵 *在功能体内的arg。那么,如何使用 *arg?

创建此函数。

您提供的参数将存储在元组中,并在函数定义过程中提供的名称。如果是*arg,则元组将是arg,然后您可以将其与该名称一起使用。

>>> import numpy as np
>>> def pytha(*arg):
...     v = [i**2 for i in arg]   # collected all in one list
...     return np.sqrt(sum(v))    # give argument by summing the list items
... 
>>> pytha(2,3,4)
5.385164807134504

下面的解决方案基本上与 @vicrobot的解决方案无需使用 numpy。您可以通过arg迭代并计算每个元素的平方值,然后将这些值总和的平方根占据:

import math
def pytha(*arg):
    return math.sqrt(sum(elem**2 for elem in arg))

最新更新