首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用*args将毕达哥拉斯定理推广到n个事物

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

Stack Overflow用户
提问于 2019-02-17 03:52:28
回答 2查看 93关注 0票数 0

我了解到,当您不确定有多少参数可以传递给我的函数时,通常使用*arg参数。我正在尝试创建一个推广的毕达哥拉斯定理,这样它就可以计算n个事物,其中

代码语言:javascript
复制
pytha(*arg)

使用

代码语言:javascript
复制
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)

我已经做了

代码语言:javascript
复制
def pytha(*arg):

但是我不知道如何在函数体中操作*arg。那么如何使用*arg创建这个函数呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-17 03:59:38

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

代码语言:javascript
复制
>>> 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
票数 2
EN

Stack Overflow用户

发布于 2019-02-17 04:28:58

下面的解决方案与@Vicrobot的解决方案基本相同,不使用numpy。您可以遍历arg并计算每个元素的平方值,然后取这些值之和的平方根:

代码语言:javascript
复制
import math

def pytha(*arg):
    return math.sqrt(sum(elem**2 for elem in arg))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54727066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档