Я пытаюсь создать программу, которая берет строку, которая представляет дату, из списка и сравнивает ее с двумя другими датами. Если между этими двумя датами, программа заменяет строку в списке на день, месяц и год.Ошибка значения преобразования строки в int в Python
Проблема заключается в том, что если преобразовать эту строку в «междунар», в консоли, это нормально, но когда я запускаю программу у меня есть следующее сообщение об ошибке:
ValueError: invalid literal for int() with base 10: ''
То есть мой код:
def date(lst, d1, d2):
for d in lst:
if int(d[4:])>=int(d1[4:]) or int(d[4:])<=int(d2[4:]):
if int(d[2:4])>=int(d1[2:4]) or int(d[2:4])<=int(d2[2:4]):
if int(d[0:2])>=int(d1[0:2]) or int(d[0:2])<=int(d2[0:2]):
j=d
j1=j[0:2]
j2=j[2:4]
j3=j[4:]
lst.insert(lst.index(d),j3)
lst.insert(lst.index(d),j2)
lst.insert(lst.index(d),j1)
lst.remove(d)
return lst
Так,
print date(['24012014', '22032015', '03022015', '15122014', '11112015'], '22022014', '10112015')
должен вернуть ['24012014', 22, 3, 2015, 3, 2, 2015, 15, 12, 2014, '11112015']
Yikes - не изменяйте список, пока вы пытаетесь пройти через него. Создайте новый список и верните его. – doctorlove
Я бы хотел, но это для школы, и я должен использовать тот же список .... – PadreMaronno
, если даты были в обратном порядке, например. '20141225', вы можете сравнить их, не преобразовывая их в' int' – Pynchia