Jython范围问题

时间:2018-09-21 13:56:49

标签: python range jython

我正在编写此程序,以获取输入类的列表以及与之对应的分数。目的是打印班级输入以及与数字分数输入关联的字母等级。

但是,当放入超过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

1 个答案:

答案 0 :(得分:0)

这与Jython无关。 您要做的就是使整个if score [...]块缩进到与score_list.append(score)相同的级别。

您的代码存在的问题是此块位于while循环之外,因此您扩展了course_listscore_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