Проблема с диапазоном Jython - PullRequest
       7

Проблема с диапазоном Jython

0 голосов
/ 21 сентября 2018

Я пишу эту программу, чтобы взять список входных классов вместе с результатами.Цель состоит в том, чтобы напечатать входные данные класса вместе с буквенной оценкой, связанной с вводом числовой оценки.

Однако, когда вводится более 1 класса, появляется сообщение об ошибке, в котором говорится, что индекс последовательности выходит за пределы допустимого диапазона.Кроме того, независимо от того, какую оценку я ввожу, рядом с классом всегда печатается «А».

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 голосов
/ 21 сентября 2018

Это не имеет ничего общего с 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
...