我正在编写此程序,以获取输入类的列表以及与之对应的分数。目的是打印班级输入以及与数字分数输入关联的字母等级。
但是,当放入超过1个类时,它给我一个错误,提示序列索引超出范围。同样,无论我输入什么分数,它总是在班级旁边显示“ A”。
course_list = []
score_list = []
grade_list = []
while True:
course = requestString("Enter a class name or 'q' to quit")
if course == 'q':
break
else:
course_list.append(course)
score = requestString("Enter the class score")
score_list.append(score)
if score >= 90:
grade_list.append(" A")
elif score >= 80:
grade_list.append(" B")
elif score >= 70:
grade_list.append(" C")
elif score >= 60:
grade_list.append(" D")
else:
grade_list.append(" F")
print "-=Class Scores=-"
final_list = [course_list, grade_list]
for i in range(len(course_list)):
final = ''
for j in range(len(final_list)):
final += (final_list[j][i])
print final
答案 0 :(得分:0)
这与Jython无关。
您要做的就是使整个if score [...]
块缩进到与score_list.append(score)
相同的级别。
您的代码存在的问题是此块位于while
循环之外,因此您扩展了course_list
和score_list
直到输入为q
,但是只有在完成此操作后,您才能获得最后的分数并延长grade_list
一次。
因此grade_list
的长度始终为1(如果没有给出路线,则为0),并且索引final_list[j][i]
失败,因为它期望course_list
的长度为等于grade_list
的长度。
course_list = []
score_list = []
grade_list = []
while True:
course = requestString("Enter a class name or 'q' to quit")
if course == 'q':
break
else:
course_list.append(course)
score = requestString("Enter the class score")
score_list.append(score)
# this has to happen inside the while-loop:
if score >= 90:
grade_list.append(" A")
elif score >= 80:
grade_list.append(" B")
elif score >= 70:
grade_list.append(" C")
elif score >= 60:
grade_list.append(" D")
else:
grade_list.append(" F")
print "-=Class Scores=-"
final_list = [course_list, grade_list]
for i in range(len(course_list)):
final = ''
for j in range(len(final_list)):
final += (final_list[j][i])
print final