Python :: Aufgabe #89

2 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von hak (980 Punkte) - 10.09.2016 um 23:41 Uhr
Quellcode ausblenden Python-Code
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()
vote_ok
von eisheiliger (3750 Punkte) - 14.08.2021 um 19:54 Uhr
Quellcode ausblenden Python-Code

"""
#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