Код работает правильно но после правильного ответа также выводит и свое возмущение, помогите пожалуйста
У нас есть файл з сотрудниками в котором инфа о них а вот сам код:
def workers():
infile = open("C:/Users/OWNER/Desktop/2/workers.txt","r")
arr = []
arr1 = []
arr = infile.readlines()
for i in arr:
arr1.append(i.split(","))
#------------task 1--------
for i in arr1:
if(35>(2017-int(i[4]))):
print(i[1], "-", 2017-int(i[4]),"годика")
workers()
После запуска программы результат выводит правильный, но также выводит и ошибку:
Юрий С.О. - 22 годика
Мария Ф. Н.- 19 годика
это правильный ответ о котором я говорила выше а за ним и ошибочка:
Traceback (most recent call last):
File "C:\Users\OWNER\Desktop\2\Lab.py", line 20, in <module>
workers()
File "C:\Users\OWNER\Desktop\2\Lab.py", line 13, in workers
if(35>(2017-int(i[4]))):
IndexError: list index out of range
Как можно заметить оно и так работает но очень бы хотелось убрать это ошибку также когда игралась с кодом заметила что если вставить return ошибка уходит но выводит уже только одну персону возраст которой подходит под условие
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
Содержимое файла workers.txt приходится додумывать так что код может потребовать адаптации.
Немного переписал Вашу реализацию:
def worker():
with open("asd.txt","r") as f:
lst = f.readlines()
for i in lst:
if i and i != "\n":
s = i.split(" ") # разбить строку по пробелу
a = 2017 - int(s[4])
if 35 > a :
print(s[1], "-", a,"годика")
worker()
- Ошибка скорее всего из за пустых строк в конце файла, что решается проверкой
if i and i != "\n":. Можно просто добавить ее в Ваш код, что скорее всего должно решить проблему. - В моей реализации строка разбивается по пробелу
s = i.split(" ")подставьте актуальное разбитие для вашего файла.