Kalender.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. """
  2. Programmieren_I
  3. Autor1:Tang,Lizhong(4068443)
  4. Autor2:Song,Zhaorui(4068539)
  5. Fachbereich:EIT 1
  6. Gruppe:3
  7. Datum:09.05.2019
  8. Version 5
  9. Ueberblick:
  10. Das ist ein Programm ueber einen Kalender.
  11. Das anfangsdatum ist 01,01,1899.
  12. Das eingegebene Jahr muss Zahl sein ,und zwar groesser als 1899.
  13. Der eingegebene Monat muss Zahl sein ,und zwar von 1 bis 12.
  14. Monate fuer 1,3,5,7,8,10,12 ,jeden Monat hat 31 Tage.
  15. Monate fuer 4,6,9,11,jeden Monat hat 30 Tage.
  16. Der Monat fuer 2,wenn schaltjahr ist,dann hat 29 Tage,sonst 28 Tage.
  17. """
  18. #Module time
  19. import time as t
  20. #Ausgabe des Kalenders
  21. def ausgabe(jahr,monat):
  22. #Name des Monates
  23. print " ----------",monat_dict[int(monat)],jahr,"----------"
  24. print " Sun Mon Tue Wed Thu Fri Sat"
  25. return main(jahr,monat)
  26. #Urteilung des Schaltjahres
  27. def schalt(jahr):
  28. jahr=int(jahr)
  29. if jahr % 4 == 0 and jahr %100 !=0 or jahr % 400==0:
  30. return True
  31. else:
  32. return False
  33. #Analyse der Anzahl der Tage in jedem Monat
  34. def m(monat):
  35. monat=int(monat)
  36. if monat in (1,3,5,7,8,10,12):
  37. return 31
  38. elif monat in(4,6,9,11):
  39. return 30
  40. elif schalt(jahr):
  41. return 29
  42. else:
  43. return 28
  44. #gesamte Tage von 01,01,1899 bis bestimmtes Jahr,bestimmter Monat.01,01,1899 ist Sonntag
  45. def gesamttage(jahr,monat):
  46. jahr=int(jahr)
  47. monat=int(monat)
  48. tag=0
  49. for i in range (1899,jahr):
  50. if schalt(i):
  51. tag=tag+366
  52. else:
  53. tag=tag+365
  54. for j in range (1,monat):
  55. tag=tag+m(j)
  56. return tag
  57. def main(jahr,monat):
  58. x=gesamttage(jahr,monat)
  59. b=x%7
  60. #b=Wochentag (z.B.b=1,d.h.dieser Tag ist Montag)
  61. if b!=0:
  62. # sun mon tue
  63. #12301234012340 (1234 bedeutet die Anzahl des Leerzeichens,0 bedeutet Zahl im Kalender)
  64. print " "*b+" "*(b-1),
  65. for v in range(1,m(monat)+1):
  66. #Ausgabe ab 4-te Stelle ,Bereite sind 4 zwischen den Zahlen
  67. print "%4d"%v,
  68. b=b+1
  69. #Zeilen wechseln
  70. if b %7==0:
  71. print " "
  72. print " "
  73. #Monat im Woerterbuch
  74. monat_dict={1:"Januar",2:"Februar",3:"Maerz",4:"April",5:"Mai",6:"Juni",7:"Juli",8:"August",9:"September",10:"Oktober",11:"November",12:"Dezember"}
  75. #Analyse der Fehler
  76. while True:
  77. print"a-----bestimmten Monat aus dem aktuellen Jahr anzeigen\nb-----alle Kalender fuer ausgewaehltes Jahr anzeigen\nc-----bestimmten Monat aus bestimmten Jahr anzeigen\nd-----beenden"
  78. option=raw_input("Geben Sie Option:")
  79. if option=="a":
  80. jahr=t.strftime("%Y")
  81. while True:
  82. monat=raw_input("cal -m")
  83. #bei normalem Fall:
  84. try :
  85. if int(monat) in (1,2,3,4,5,6,7,8,9,10,11,12):
  86. break
  87. else:
  88. print "Monat muss von 1 bis 12 sein"
  89. #bei dem Fall des existierenden Fehlers
  90. except:
  91. print "Monat muss zahl sein"
  92. ausgabe(jahr,monat)
  93. elif option=="b":
  94. while True:
  95. jahr=raw_input("cal -y")
  96. try:
  97. if int(jahr)>1899:
  98. break
  99. else:
  100. print "Jahr muss groesser als 1899 sein"
  101. except:
  102. print "Jahr muss ein Zahl sein"
  103. for i in range (1,13):
  104. monat=i
  105. ausgabe(jahr,monat)
  106. t.sleep(1)
  107. elif option == "c":
  108. #Eingabe der zwei Argumente in einer Zelle
  109. while True:
  110. try:
  111. monat,jahr=raw_input("cal -my").split()
  112. if int(monat) in (1,2,3,4,5,6,7,8,9,10,11,12) and int(jahr)>1899:
  113. break
  114. else:
  115. print "ungueltig,bitte nochmal\nMonat muss von 1 bis 12\nJahr muss groesser als 1899 sein"
  116. except:
  117. print "ungueltig,bitte nochmal\nGeben Sie bitte 2 Argumente ein \nerste ist Monat \ndann Leerzeichen \nzweite ist Jahr \nund zwar sie muessen Zahlen sein\nz.B.3 2019"
  118. ausgabe(jahr,monat)
  119. elif option=="d":
  120. break
  121. else:
  122. print "ungueltig,nochmal bitte \nGeben Sie bitte nur a,b,c oder d ein."