только начал программировать с питоном (на самом деле программирования в целом) и написал короткую программу, которая упорно отказывается работать должным образом. Хотя вывод выглядит отлично, есть еще некоторые строки ошибок, от которых я не могу избавиться. Поэтому я был бы благодарен за любую помощь/предложения. Вот код:странно индексации Ошибка
# takes a list with 5 columns per line as an input
# last name, first name, 3 score - values (exam1, exam2, final)
# prints out a formatted table with first name, last name and a weighted score sum
def parse_line(line_str):
'''
:param line_str: expects a line of form last, first, exam 1, exam2, final
:return: a tuple containing first+last and list of scores
'''
field_list = line_str.strip().split(",")
name_str = field_list[1] + " " + field_list[0]
score_list = []
for element in field_list[2:]:
score_list.append(int(element))
return name_str, score_list
def weighted_grade(score_list, weights=(0.3, 0.3, 0.4)):
'''
:param score_list: expects 3 elements in score_list
:param weights: multiples each element by its weigth
:return: returns the sum
'''
grade_float = \
(score_list[0] * weights[0]) + \
(score_list[1] * weights[1]) + \
(score_list[2] * weights[2])
return grade_float
grade_file = open("/home/jan/Desktop/Grades.txt", "r")
print("{:>13s} {:>15s}".format("Name", "Grade")) # header of the table
print("-" * 30)
for line_str in grade_file:
name_str, score_list = parse_line(line_str) # passing it the first function, multiple assignment
grade_float = weighted_grade(score_list)
print("{:>15s} {:14.2f}".format(name_str, grade_float)) # final table
И это сообщение об ошибке:
Traceback (most recent call last):
File "/home/jan/PycharmProjects/introduction/more.py", line 27, in <module>
Name Grade
name_str, score_list = parse_line(line_str)
------------------------------
File "/home/jan/PycharmProjects/introduction/more.py", line 8, in parse_line
John Smith 30.00
name_str = field_list[1] + " " + field_list[0]
Larry CableGuy 30.00
IndexError: list index out of range
Try Harder 40.00
Monty Python 100.00
кстати. Я действительно впечатлен тем, как быстро вы обнаружили ошибку –