【发布时间】:2021-07-02 21:31:06
【问题描述】:
我正在尝试创建一个生成最终成绩的函数。此函数应将课程成绩乘以课程奖金,因此第一个课程列表([55,21,30,58,49])应乘以 1.0 依此类推,考试成绩也是如此,但取而代之的是考试奖金。然后它将调整后的考试成绩和课程成绩相乘,得出总成绩。 if 语句中的 print 语句没有打印,我已经查看了有关 print() 不起作用的类似问题,但似乎没有任何相关性。
注意:我无法更改主程序
def finalized_grades(course_grades, exam_grades, course_exam_bonus, exam_bonus):
adj_course = []
adj_exam = []
total = []
print('Before update:')
print('Coursework = {}'.format(course_grades))
print('Exams = {}'.format(course_grades))
print('Course Bonus = {},'.format(course_exam_bonus),end=' ')
print('Exam Bonus = {}'.format(exam_bonus))
print('After update:')
for c in course_grades:
if c == [0]:
adj_course = [x*course_exam_bonus[0] for x in course_grades[c]]
print('Coursework = {}'.format(adj_course))
if c == [1]:
adj_course = [x*course_exam_bonus[1] for x in course_grades[c]]
print('Coursework = {}'.format(adj_course))
if c == [2]:
adj_course = [x*course_exam_bonus[2] for x in course_grades[c]]
print('Coursework = {}'.format(adj_course))
for e in exam_grades:
if e == [0]:
adj_exam = [x*exam_bonus[0] for x in exam_grades[e]]
print('Exams = {}'.format(adj_exam))
if e == [1]:
adj_exam = [x*exam_bonus[1] for x in exam_grades[e]]
print('Exams = {}'.format(adj_exam))
if e == [2]:
adj_exam = [x*exam_bonus[2] for x in exam_grades[e]]
print('Exams = {}'.format(adj_exam))
for t in range(len(adj_course)):
total = [adj_exam[t]*adj_course[t]]
print('Total = {}'.format(total))
return
################################# MAIN PROGRAM ####################################
def test_finalized_grades():
course_grades = [[55,21,30,58,49], [47,39,29], [43,32,28,60]]
exam_grades = [[35,14, 32,18,31] , [32,32,19], [15,21,24,39]]
course_exam_bonus = [1.0,1.25,1.2]
exam_bonus = [3.0,0.0,2.0]
for i in range(len(exam_bonus)):
grades = finalized_grades(course_grades[i],exam_grades[i],course_exam_bonus[i],exam_bonus[i])
return
这就是我的输出的样子
Before update:
Coursework = [55, 21, 30, 58, 49]
Exams = [55, 21, 30, 58, 49]
Scale = 1.0, Bonus = 3.0
After update:
Before update:
Coursework = [47, 39, 29]
Exams = [47, 39, 29]
Scale = 1.25, Bonus = 0.0
After update:
Before update:
Coursework = [43, 32, 28, 60]
Exams = [43, 32, 28, 60]
Scale = 1.2, Bonus = 2.0
After update:
在“更新前”和“更新后”之间应该有语句。这就是它应该的样子。
Before update:
Coursework = [55, 21, 30, 58, 49]
Exams = [35, 14, 32, 18, 31]
Scale = 1.0, Bonus = 3.0
After update:
Coursework = [55.0, 21.0, 30.0, 58.0, 49.0]
Exams = [38.0, 17.0, 35.0, 21.0, 34.0]
Total = [93.0, 38.0, 65.0, 79.0, 83.0]
【问题讨论】:
-
adj_exam[t]不正确。t是adj_exam的元素,而不是索引。 -
显然,您的
if条件永远不会为真。你为什么不 a) 将第二个和后续的if语句变成elif(因为条件是排他的),然后 b) 然后添加一个else:打印例如c或e的值与前面的条件不匹配。 -
finalized_grades()没有返回任何内容,为什么要将结果分配给grades? -
不是
print,是你的if永远不匹配 -
不,它正在测试
c是否是一个包含单个零的列表。
标签: python list for-loop if-statement