python - 带有参数列表和标准差的函数
问题描述
编写一个名为 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)
测试失败:无法导入测试模块:测试回溯(最近一次调用最后一次):文件“/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 导入(名称)文件“/autograder/source/tests/tests.py”,第 3 行,从 std_dev 导入 std_dev,Person文件“/autograder/source/std_dev.py”,第 28 行 return math.sqrt(sd / length) ^ SyntaxError: 'return' outside function
解决方案
首先,你必须import math
import math
class Person:
def __init__(self, name, age):
"""doc string 1"""
self.name = name
self.age = age
我认为不show_person
应该在你的 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
希望这可以帮助 :)
推荐阅读
- spring - 在 intellij 中不能有 spring 注释
- quickbooks - 使用 QBWC 将账单添加到 QuickBooks
- node.js - 解析带有空格的嵌套键的查询
- python - 使用另一个张量在二维 PyTorch 张量中进行索引
- java - Java 错误 ENOENT(没有这样的文件或目录)
- c - Lex 和 Yacc 符号表的生成和操作
- django - 访问用户属性时,Django Rest Framework 非常慢
- firebase - 错误!但是,您尝试要求 '@react-native-firebase/auth' 版本 '6.2.0'
- r - 在单词第二次出现后匹配所有内容
- java - 尝试测试删除请求时出现 NotAMockException