使用 *args 将毕达哥拉斯定理推广到 n 个事物
Generalise Pythagoras' Theorem to n things using *args
我了解到当您不确定有多少参数可以传递给我的函数时,通常会使用 *arg 参数。我正在尝试创建一个广义的毕达哥拉斯定理,以便它计算 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))
我了解到当您不确定有多少参数可以传递给我的函数时,通常会使用 *arg 参数。我正在尝试创建一个广义的毕达哥拉斯定理,以便它计算 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))