Browse Source

Plausibilitätsprüfung für Datumseingabe

stguegen 5 years ago
parent
commit
d62ec5f85b
1 changed files with 50 additions and 9 deletions
  1. 50 9
      Schaltjahr1.py

+ 50 - 9
Schaltjahr1.py

@@ -1,19 +1,56 @@
 # Schaltjahre
 # Autoren: Gunnar, Jan
 # Python 2.7.15
-# 27.1.19
+# 2.2.19
 
-#noch zu erledigen: Eingabefehler abfangen, Datum auf Plausibilitaet pruefen
+#noch zu erledigen: Eingabefehler abfangen in Funktion packen, um Falscheingabe im x-ten Versuch abzufangen.
 
 import math as m
+
+monate = ["Januar", "Februar", "Maerz", "April", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
+einunddreissigtage = [1, 3, 5, 7, 8, 10, 12]
+dreissigtage = [4, 6, 9, 11]
 def Programm():
     print ""
     print "Bitte geben Sie ein Datum ein."
     print ""
-    jahr = input("Jahr: ")
-    monat = input("Monat: ")
-    tag = input("Tag: ")
-
+    while True:
+        try:
+            jahr = raw_input("Jahr: ")
+            jahr = int(jahr)
+            break
+        except ValueError:
+            print "Bitte natuerliche Zahl eingeben!"
+    while True:
+        try:            
+            monat = raw_input("Monat: ")
+            monat = int(monat)
+            break
+        except ValueError:
+            print "Bitte natuerliche Zahl eingeben!"    
+    if monat > 12:
+        print "Fuer den Monat bitte Zahl zwischen 1 und 12 eingeben!"
+        monat = input("Monat: ")
+    while True:
+        try:            
+            tag = raw_input("Tag: ")
+            tag = int(tag)
+            break
+        except ValueError:
+            print "Bitte natuerliche Zahl eingeben!"  
+    if tag > 31:
+        print "Fuer den Tag bitte Zahl zwischen 1 und 31 eingeben!"
+        tag = input("Tag: ")
+    if monat in einunddreissigtage and tag > 31:
+        print "Der", monate[monat - 1], "hat nur 31 Tage!"
+        tag = input("Tag: ")
+    elif monat in dreissigtage and tag > 3:
+        print "Der", monate[monat - 1], "hat nur 30 Tage!"
+        tag = input("Tag: ")
+    elif monat == 2 and tag > 29:
+        print "Der Februar hat maximal 29 Tage!"
+        tag = input("Tag: ")
+        
     tagemonate = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] #Anzahl der Tage im Jahr, zu Beginn eines jeden Monats
     monatetage = tagemonate[monat - 1] #Anzahl der Tage im Jahr, zu Beginn des gewaehlten Monats
     jahrtage = monatetage + tag #Anzahl der Tage im Jahr, zum gewaehlten Datum
@@ -43,9 +80,13 @@ def Programm():
 
 
     tage = tage + jahrtage #Tage vor dem gewaehlten Jahr und Tage im gewaehlten Jahr werden addiert.
-    print ""
-    print "Das Jahr", jahr, "ist", schaltjahr
-    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.
+    if schaltjahr == "kein Schaltjahr." and monat == 2 and tag == 29:
+        print "Das Jahr", jahr, "ist kein Schaltjahr."
+        print "Daher gibt es in diesem Jahr keinen 29. Februar"
+    else:
+        print ""
+        print "Das Jahr", jahr, "ist", schaltjahr
+        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.
     print ""
     print "Zum Berechnen eines weiteren Datums druecken Sie J. "
     nochmal = raw_input("Beenden des Programms mit beliebiger Taste. ")