我希望有人可以解释/回答有关以下代码的一些问题(取自在线培训来源,而不是我的代码)。我开始学习和练习函数,这段代码通过将方法链接在一起并引用一个字典来进一步发展:
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
students=[lloyd,alice,tyler]
for student in students:
print(student['name'])
print (student["homework"])
print (student["quizzes"])
print (student["tests"])
def average(numbers):
total=sum(numbers)
total=float(total)
media= total/ (len(numbers))
return media
def get_average(student):
homework=average(student["homework"])
quizzes=average(student["quizzes"])
tests=average(student["tests"])
final=0.1*homework +0.3*quizzes + 0.6*tests
return final
def get_letter_grade(score):
if score >= 90:
return "A"
elif score >=80:
return "B"
elif score >=70:
return "C"
elif score >=60:
return "D"
else:
return "F"
print (get_letter_grade(get_average(lloyd)))
我的问题是:
下面这部分如何知道引用它上面的字典值?我看到列表中的学生碰巧与dict键具有相同的值但是如何知道从字典中获取详细信息?
students=[lloyd,alice,tyler]
for student in students:
print(student['name'])
print (student["homework"])
print (student["quizzes"])
print (student["tests"])
如果我正确地阅读这个,那么以下两个函数纯粹得到平均值,然后是最终平均值/百分比,并且可以作为该程序之外的任何数字集的独立函数运行,并且不依赖于特定的学生在这一点上,对吗? ?
def average(numbers):
total=sum(numbers)
total=float(total)
media= total/ (len(numbers))
return media
def get_average(student):
homework=average(student["homework"])
quizzes=average(student["quizzes"])
tests=average(student["tests"])
final=0.1*homework +0.3*quizzes + 0.6*tests
return final
即。 “学生”:
def get_average(student):
根本没有在它上面的For循环中引用学生,对吗?
最后,功能被“链接”在一起的部分:
print (get_letter_grade(get_average(lloyd)))
我将其读作:无论你在那里插入什么学生,它都会首先在定义的get_average函数中获取该学生的平均值,然后从那里向外工作并获取该数字的字母等级。学生之间的转换会明显改变结果。我读得对吗?基本上,当它以这种方式链接在一起时,它可以在里面工作吗?
感谢您的任何解释!
**编辑** - 我猜这篇文章的所有负面投票都认为这个问题过于宽泛。我道歉
答案 0 :(得分:1)
A1。在
students=[lloyd,alice,tyler]
for student in students:
print(student['name'])
print (student["homework"])
print (student["quizzes"])
print (student["tests"])
变量student
将连续保留与lloyd
,alice
和tyler
相同的对象的引用。这些对象恰好是字典。所以例如在第一次迭代student
中引用与lloyd
相同的dict对象,因此student ['name']
引用与lloyd ['name']
相同的字典条目
A2。你的解释是正确的
A3。你的解释是正确的