Python :: Aufgabe #89
2 Lösungen

BashCal - grafischer Konsolenkalender
Anfänger - Python
von Michi
- 07.09.2015 um 14:34 Uhr
Schreiben Sie ein Programm das einen simplen Kalender grafisch in der Konsole darstellt.
Folgende Befehle mit Parametern sollen zur Verfügung stehen
- cal -m -> bestimmten Monat aus dem aktuellen Jahr anzeigen
- cal -y -> alle Kalender für ausgewähltes Jahr anzeigen
- cal -my -> bestimmten Monat aus bestimmten Jahr anzeigen
Beispiel:
"cal -m 2" zeigt den Kalender Februar des aktuellen Jahres
"cal -y 2013" zeigt alle Monate von Januar bis Dezember des Jahres 2013
"cal -my 2 2011" zeigt den Kalender Februar des Jahres 2011
Im Anhang befindet sich ein Beispiel der möglichen grafischen Ausgabe in der Konsole.
Folgende Befehle mit Parametern sollen zur Verfügung stehen
- cal -m -> bestimmten Monat aus dem aktuellen Jahr anzeigen
- cal -y -> alle Kalender für ausgewähltes Jahr anzeigen
- cal -my -> bestimmten Monat aus bestimmten Jahr anzeigen
Beispiel:
"cal -m 2" zeigt den Kalender Februar des aktuellen Jahres
"cal -y 2013" zeigt alle Monate von Januar bis Dezember des Jahres 2013
"cal -my 2 2011" zeigt den Kalender Februar des Jahres 2011
Im Anhang befindet sich ein Beispiel der möglichen grafischen Ausgabe in der Konsole.
Lösungen:

import sys import calendar from datetime import date def print_cal(y=date.today().year, m=date.today().month) : first_day, nr_days = calendar.monthrange(y,m) print('\n', calendar.month_name[m], y) print(' MO TU WE TH FR SA SU') mth_str = '' for i in range(first_day * (-1) +1, nr_days +1) : if i <= 0: mth_str += ' ' else: mth_str += (' ' + str(i)) if i < 10 else (' ' + str(i)) if (first_day + i) % 7 == 0 and i > 0: mth_str += '\n' print(mth_str) def main(): if len(sys.argv) == 1: print_cal() elif '-y' == sys.argv[1] : for i in range(1,13) : print_cal(int(sys.argv[2]),i) elif '-m' == sys.argv[1] : print_cal(date.today().year, int(sys.argv[2])) elif '-my' == sys.argv[1] : print_cal(int(sys.argv[3]), int(sys.argv[2])) else: print('Unknown input parameters') if __name__ == "__main__": main()

""" #89: Schreiben Sie ein Programm das einen simplen Kalender grafisch in der Konsole darstellt. """ import calendar import datetime def cal(kz, ja, mo): if kz == "-m": aktuell = datetime.datetime.now() datum = aktuell.date() ja = datum.strftime("%Y") kalender = calendar.TextCalendar(calendar.MONDAY) ausgabe = kalender.formatmonth(int(ja), mo) print(ausgabe) if kz == "-y": kalender = calendar.TextCalendar(calendar.MONDAY) ausgabe = kalender.formatyear(ja) print(ausgabe) if kz == "-my": kalender = calendar.TextCalendar(calendar.MONDAY) ausgabe = kalender.formatmonth(ja, mo) print(ausgabe) cal("-m", 0, 8) # cal -m -> bestimmten Monat aus dem aktuellen Jahr anzeigen cal("-y", 2022, 0) # cal -y -> alle Kalender für ausgewähltes Jahr anzeigen cal("-my", 2023, 1) # cal -my -> bestimmten Monat aus bestimmten Jahr anzeigen