【发布时间】:2021-02-13 20:42:31
【问题描述】:
我需要关于我的家庭作业的帮助/意见。我已经有一个可以工作的代码,但我想知道是否有更简单的方法来编写代码以缩短代码长度。
以下是作业的参考方向:
有十个名字和五个考试成绩列表。对应 名字和考试成绩之间是由职位决定的。例如,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
基本上我只是想知道是否有人有任何想法/方法可供我尝试以简化代码。我只是感到困惑,因为成绩是垂直对应的。无论哪种方式都很好,但我觉得好像可以修改。我还是个初学者,所以我可能不熟悉什么是简单的解决方法:) 谢谢!
【问题讨论】:
-
Have a look here 看看您的问题是否可以成为Code Review 的主题。
-
@khelwood 谢谢。我应该在那里重新发布吗?我没怎么用过 Stack Overflow :)
-
如果你认为你可以为 codereview 写一个很好的问题,请继续,但请确保你先阅读他们的on-topic 页面。这个问题对于 Stack Overflow 来说可能过于模糊;
标签: python python-3.x list loops for-loop