【发布时间】:2019-11-01 23:58:08
【问题描述】:
编写一个名为 Person 的类,它有两个数据成员 - 人的姓名和年龄。它应该有一个 init 方法,它接受两个值并使用它们来初始化数据成员。 编写一个名为 std_dev 的单独函数(不是 Person 类的一部分),它将 Person 对象列表作为参数并返回所有年龄的标准差(使用 N 分母的总体标准差,而不是样本标准差,它使用不同的分母)。
必须在python中
类人:
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)
测试失败:导入测试模块失败:测试 Traceback(大多数 最近通话最后):文件“/usr/lib/python3.6/unittest/loader.py”, 第 428 行,在 _find_test_path 中 模块 = 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,个人文件“/autograder/source/std_dev.py”,第 28 行 返回 math.sqrt(sd / 长度) ^ SyntaxError: 'return' 外部函数
【问题讨论】:
-
看起来你的 sn-p 中的最后八行代码应该是
std_dev函数的一部分,但它们不是。它们需要缩进。 -
除了末尾的
return语句缩进正确外,它不应该在for循环中。 -
顺便说一句,你可以写
total = sum(person.age for person in person_list) -
还有
sd = sum(math.pow(person.age - mean, 2) for person in person_list)