我的家庭作业需要帮助/输入。我已经有了一个可以工作的代码,但我想知道是否有一种更简单的方法来编写代码,使其不那么冗长
以下是作业说明,以供参考:
有十个名字和五份考试成绩表。通信 姓名和考试成绩之间的差距由职位决定。例如,Cindy的考试分数是67、92、67、43、78。从每个学生的五个考试分数中取最低的一个,取其余分数的平均值,然后确定该学生的字母分数。确保您的打印输出与我的相同,列宽相同
这是我的密码:
names = ['April','Bill','Cindy','Dave','Emily', 'Frank','Gene','Hank','Irene','Jeff']
test1 = [34,21,67,45,88, 77,63,96,89,88]
test2 = [11,67,92,35,89, 25,78,94,81,63]
test3 = [94,33,67,34,67, 88,55,99,23,43]
test4 = [27,83,43,67,93, 45,67,77,86,90]
test5 = [43,76,78,45,65, 99,65,65,79,43]
total = [0,0,0,0,0,0,0,0,0,0]
min = [0,0,0,0,0,0,0,0,0,0]
percent = [0,0,0,0,0,0,0,0,0,0]
grade = ['F','F','F','F','F','F','F','F','F','F']
for i in range (10):
total[i] = test1[i]
min[i] = test1[i]
for i in range (10):
total[i] = total[i] + test2[i]
total[i] = total[i] + test3[i]
total[i] = total[i] + test4[i]
total[i] = total[i] + test5[i]
min[i] = min[i] if min[i] < test2[i] else test2[i]
min[i] = min[i] if min[i] < test3[i] else test3[i]
min[i] = min[i] if min[i] < test4[i] else test4[i]
min[i] = min[i] if min[i] < test5[i] else test5[i]
total[i] = total[i] - min[i]
for i in range (10):
percent[i] = total[i]/4.0
if percent[i] >= 90: grade[i] = 'A'
elif percent[i] >= 80: grade[i] = 'B'
elif percent[i] >= 70: grade[i] = 'C'
elif percent[i] >= 60: grade[i] = 'D'
elif percent[i] >= 50: grade[i] = 'F'
print (" %s\t%d %2.2f %s \n" %(names[i], total[i], percent[i], grade[i]))
输出应如下所示:
April 198 49.50 F
Bill 259 64.75 D
Cindy 304 76.00 C
Dave 192 48.00 F
Emily 337 84.25 B
Frank 309 77.25 C
Gene 273 68.25 D
Hank 366 91.50 A
Irene 335 83.75 B
Jeff 284 71.00 C
基本上,我只是想知道是否有人有任何想法/方法供我尝试,以简化代码。我只是感到困惑,因为分数是垂直的。这两种方式都很好,但我觉得它可以修改。我还是一个初学者,所以我可能不熟悉什么是简单的修复:)谢谢
这是字典而不是列表的理想用例。字典允许您为键指定值。在这种情况下,关键是学生姓名及其分数。例如:
通过这种方式,将分数与任何给定的学生联系起来要容易得多
此外,一些非常的基本功能定义(例如平均等级)在这里也非常有用。事实证明,使用f-string创建干净的输出非常有用
总之:查找字典、函数和f字符串可以教给您许多有用的技能,以便进一步编码。我在下面举了一个例子,希望能理解
相关问题 更多 >
编程相关推荐