Schaltjahr1.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # Schaltjahre
  2. # Autoren: Gunnar, Jan
  3. # Python 2.7.15
  4. # 27.1.19
  5. #noch zu erledigen: Eingabefehler abfangen, Datum auf Plausibilitaet pruefen
  6. import math as m
  7. def Programm():
  8. print ""
  9. print "Bitte geben Sie ein Datum ein."
  10. print ""
  11. jahr = input("Jahr: ")
  12. monat = input("Monat: ")
  13. tag = input("Tag: ")
  14. tagemonate = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] #Anzahl der Tage im Jahr, zu Beginn eines jeden Monats
  15. monatetage = tagemonate[monat - 1] #Anzahl der Tage im Jahr, zu Beginn des gewaehlten Monats
  16. jahrtage = monatetage + tag #Anzahl der Tage im Jahr, zum gewaehlten Datum
  17. wochentage = ["Montag.", "Dienstag.", "Mittwoch.", "Donnerstag.", "Freitag.", "Samstag.", "Sonntag."]
  18. schaltjahr = "kein Schaltjahr." #Kein Jahr ist ein Schaltjahr,
  19. if jahr % 4 == 0: #ausser es ist durch 4 teilbar,
  20. schaltjahr = "ein Schaltjahr."
  21. if jahr % 100 == 0: #es sei denn, es ist auch durch 100 teilbar,
  22. schaltjahr = "kein Schaltjahr."
  23. if jahr % 400 == 0: #aber trotzdem, wenn es auch durch 400 teilbar ist.
  24. schaltjahr = "ein Schaltjahr."
  25. tage = (jahr - 1)* 365 #Anzahl Tage gesamt, zu Beginn des gewaehlten Jahrs
  26. if jahr >= 4: #Alle 4 Jahre
  27. tage = tage + m.floor(jahr / 4) #wird 1 Tag addiert.
  28. if jahr >= 100: #Alle 100 Jahre
  29. tage = tage - m.floor(jahr / 100) #wird ein Tag abgezogen.
  30. if jahr >= 400: #Alle 400 Jahre
  31. tage = tage + m.floor(jahr / 400) #wird ein Tag addiert.
  32. if monat < 3 and schaltjahr == "Schaltjahr.": #Liegt das gewaehlte Datum in einem Schaltjahr und im Januar oder Februar,
  33. tage = tage - 1 #wird ein Tag abgezogen.
  34. tage = tage + jahrtage #Tage vor dem gewaehlten Jahr und Tage im gewaehlten Jahr werden addiert.
  35. print ""
  36. print "Das Jahr", jahr, "ist", schaltjahr
  37. print "Das gewaehlte Datum ist ein", wochentage[int(tage % 7 - 1)] #Teilt gesamte Tage durch Laenge einer Woche und ordnet dem Rest einen Wochentag zu.
  38. print ""
  39. print "Zum Berechnen eines weiteren Datums druecken Sie J. "
  40. nochmal = raw_input("Beenden des Programms mit beliebiger Taste. ")
  41. if nochmal == "j" or nochmal == "J":
  42. Programm()
  43. Programm()