Aus diesem Teil
if month in months:
days_m = int(months[month])
days_y = 0
for y in range(year ):
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
days_y += 366
else:
days_y += 365
mach diesen:
days_m = months[month]
if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0) and month > 2:
days_m += 1
days_y = 0
for y in range(1,year):
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
days_y += 366
else:
days_y += 365
Erläuterung:
Die Abfrage "if month in months" ist überflüssig, wenn du anschließend den Fehler (dass month nicht 1..12 ist) nicht behandelst. Du prüfst ja ansonsten auch nicht die Gültigkeit des Datums (z.B. day=40 oder day=31 und month=4)
Danach schiebe in Schaltjahren nach Ende Februar einen zusätzlichen Schalttag ein.
for y in range(1,year)
Zähle die Jahre ab 1 zusammen, nicht ab 0. Alternativ: starte mit days_y = -2
Dann passt's