Warum stehen in den ersten 5 Zeilen Zuweisungen, die du aber erst am Ende des Skripts brauchsts?
Der Name schaltjahr ist schlecht gewählt. Erzeugt es ein Schaltjahr? Nein, es überprüft, also wäre `is_schaltjahr` besser. Zeile 8 ist überflüssig. Sorg lieber vorher dafür, dass du eine Zahl übergeben bekommst. Statt 1 und 0 verwende lieber True und False und lass die Klammern weg:
Code: Alles auswählen
def is_schaltjahr(jahr):
if not jahr%400 or not jahr%4 and jahr%100:
return True
else:
return False
Zeile 61 wird nie angewendet werden, da der if-Block davor schon fündig geworden ist.
Warum einmal mit und einmal ohne `int`? Ah, ich habs verstanden. Um den Rest wegzubekommen mach lieber 2 `/` Verwende lieber divmod:
Code: Alles auswählen
j=jahr%100
c=int(jahr/100) #c=jahr//100
c,j = divmod(jahr,100)
Zeilen 79-92 lässt sich verkürzen.
Code: Alles auswählen
return ('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag')[d]
Sich wiederholende Sachen wie `[1,3,5,7,8,10]` lassen sich besser an eine Variable binden. Das ist übersichtlicher. Zeilen 120 und 121 lassen sich verkürzen:
Code: Alles auswählen
monat==2 and (tag == 28+is_schaltjahr(jahr)