функции с параметром список и стандартное отклонение - PullRequest
0 голосов
/ 02 ноября 2019

Напишите класс с именем Person, в котором есть два элемента данных - имя и возраст человека. Он должен иметь метод init, который принимает два значения и использует их для инициализации элементов данных. Напишите отдельную функцию (не являющуюся частью класса Person) с именем std_dev, которая принимает в качестве параметра список объектов Person и возвращает стандартное отклонение всех их возрастов (стандартное отклонение совокупности, в котором используется знаменатель N, а не образец стандартного отклонения). , который использует другой знаменатель).

Должен быть в python

class Person:

def __init__(self, name, age):
    """doc string 1"""
    self.name = name
    self.age = age

def show_person(person_list):
    """doc string 2"""
    for person in person_list:
        print("Name:", person.name, "\t Age:", person.age)

def std_dev(person_list, length):
    """doc string 3"""
    total, mean, sd = 0.0, 0.0, 0.0

for person in person_list:
    total += person.age

mean = total / length

for person in person_list:
    sd += math.pow(person.age - mean, 2)
    return math.sqrt(sd / length)

Test Failed: Не удалось импортировать тестовый модуль: тесты Traceback(последний вызов был последним): файл "/usr/lib/python3.6/unittest/loader.py", строка 428, в файле _find_test_path module = self._get_module_from_name (name), файл "/usr/lib/python3.6/unittest/loader.py ", строка 369, в _get_module_from_name import (имя) файла" /autograder/source/tests/tests.py ", строка 3, из std_dev, импорт std_dev, Person File" / autograder /source / std_dev.py ", строка 28 return math.sqrt (sd / length) ^ SyntaxError: 'return' вне функции

1 Ответ

0 голосов
/ 02 ноября 2019

Во-первых, ты должен import math

import math

class Person:

  def __init__(self, name, age):
    """doc string 1"""
    self.name = name
    self.age = age

Я не думаю, что show_person должно быть выделено внутри твоего класса

def show_person(person_list):
    """doc string 2"""
    for person in person_list:
      print("Name:", person.name, "\t Age:", person.age)

То же самое относится и к твоему std_dev функция. Другое дело, что вам не нужно принимать длину списка в качестве аргумента в функции. Мы можем легко найти его с помощью len(person_list), как показано ниже:

def std_dev(person_list):
  """doc string 3"""
  total, mean, sd = 0.0, 0.0, 0.0
  # No reason to take length of list as argument
  # We can just get it this way
  length = len(person_list)
  for person in person_list:
    total += person.age

  mean = total / length

  for person in person_list:
    sd += math.pow(person.age - mean, 2)
  return math.sqrt(sd / length)

Пример выполнения:

p1 = Person("Alex", 36)
p2 = Person("Billie", 34)
p3 = Person("Carol", 32)
persons = [p1, p2, p3]
show_person(persons)
print(std_dev(persons))

Вывод:

Name: Alex   Age: 36
Name: Billie   Age: 34
Name: Carol    Age: 32

1.632993161855452

Надеюсь, это поможет:)

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