Обобщите теорему Пифагора на n вещей, используя * args - PullRequest
0 голосов
/ 16 февраля 2019

Я узнал, что обычно используются аргументы * 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?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Решение, приведенное ниже, в основном такое же, как у @ Vicrobot, без использования numpy.Вы можете перебрать arg и вычислить квадратное значение каждого элемента, а затем взять квадратный корень из суммы этих значений:

import math

def pytha(*arg):
    return math.sqrt(sum(elem**2 for elem in arg))
0 голосов
/ 16 февраля 2019

Аргументы, которые вы предоставите, будут сохранены в кортеже с именем, которое вы указали при определении функции.Если это *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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...