Как напечатать аргументы из генератора в Python? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу решить предмет в моем университете, поэтому мне нужно создать функцию с параметрами (* args). После этого я должен найти среднее из всех них. Продолжаем с математическим типом .. мы должны распечатать квадрат абстракции для каждого элемента - среднее значение, и я должен использовать генератор. Например: у меня есть функция «квадраты (* args). Когда я называю это как» квадраты (3,4,5), мы находим среднее значение, 4 для этого, например, и мы начинаем абстракцию. 3-4, 4,4, 5, -4, но также нам нужен квадрат этого. Итак (3-4) ** 2 и др. c. У меня есть этот код, но .. не работает, есть идеи?

from statistics import mean
def squares(*args):
  avg=mean(args)
  i = 0
  while (i <= len(args)):
    yield (args[i]-avg)**2
    i=i+1
squares(2, 7, 3, 12)
for k in squares():
  print(k)

1 Ответ

2 голосов
/ 24 марта 2020

Проблема здесь:

squares(2, 7, 3, 12)
for k in squares():
  print(k)

вы звоните squares() в первый раз - который возвращает объект генератора, который вы отбрасываете (вы не назначаете его переменной). Затем вы вызываете его во второй раз и перебираете возвращаемый генератор, но так как вы не передали ни одного аргумента, genrator является «пустым» (ему нечего дать), и тело для l oop не выполняется .

IOW, замените это на:

squared = squares(2, 7, 3, 12)
for k in squared:
  print(k)

Или просто:

for k in squares(2, 7, 3, 12):
  print(k)

Примечание: я не проверял ваш код, могут возникнуть другие проблемы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...