Python :: Aufgabe #159 :: Lösung #2
5 Lösungen

#159
Ist Freitag der 13. ein Unglücks- oder Glückstag?
Anfänger - Python
von hollst
- 26.06.2017 um 13:14 Uhr
Wir betrachten den Gregorianischen Kalender mit den üblichen 12 Monaten und Schaltjahren.
Schaltjahr ist, wenn die Jahreszahl durch 4 teilbar ist, mit Ausnahme der Jahre, die durch 100,
jedoch nicht durch 400 teilbar sind. Im Schaltjahr hat der Februar 29 Tage.
Unsere Zeitrechnung beginne mit dem 1. Januar 00.
Frage: Welcher Wochentag fällt
a) am häufigsten auf einen 13. des Monats und
b) welcher bzw. welche am wenigsten.
Schaltjahr ist, wenn die Jahreszahl durch 4 teilbar ist, mit Ausnahme der Jahre, die durch 100,
jedoch nicht durch 400 teilbar sind. Im Schaltjahr hat der Februar 29 Tage.
Unsere Zeitrechnung beginne mit dem 1. Januar 00.
Frage: Welcher Wochentag fällt
a) am häufigsten auf einen 13. des Monats und
b) welcher bzw. welche am wenigsten.
#2

von 0 (0 Punkte)
- 09.09.2017 um 08:44 Uhr

class Jahr(): '''Klasse für die Liste von 12 Objekten der Klasse Monate nach dem gregorianischen Kalender,Jan,Feb,Maer,Apr,Mai,Juni,Juli,Aug,Sep,Okt,Nov,Dez''' Monate=['Jan','Feb','Maer','Apr','Mai','Juni','Juli','Aug','Sep','Okt','Nov','Dez'] def __init__(self,Jahreszahl): self.Jahreszahl=int(Jahreszahl) self.Monatsliste=[] for i in self.Monate: monat=Monat(i,Jahreszahl) self.Monatsliste+=[monat] def getJahr(self): return str(self.Jahreszahl) def __str__(self): beschreibung=self.getJahr() for i in self.Monatsliste: for j in i.getTage(): beschreibung+='\n'+str(j) return beschreibung class Monat(): '''Klasse für die Anzahl der Objekte Tag eines Monats''' def __init__(self,name,Jahreszahl): self.Jahreszahl=Jahreszahl self.name=name self.Tagesliste=[] if self.name in ['Jan','Maer','Mai','Juli','Aug','Okt','Dez']: for i in range(1,32): tag=Tag(i,name,Jahreszahl) self.Tagesliste+=[tag] elif self.name in ['Apr','Juni','Sep','Nov']: for i in range(1,31): tag=Tag(i,name,Jahreszahl) self.Tagesliste+=[tag] elif self.name in ['Feb']: if self.Jahreszahl==0: for i in range(1,30): tag=Tag(i,name,Jahreszahl) self.Tagesliste+=[tag] elif (self.Jahreszahl%4==0 and not (self.Jahreszahl%400!=0 and self.Jahreszahl%100==0)): for i in range(1,30): tag=Tag(i,name,Jahreszahl) self.Tagesliste+=[tag] else : for i in range(1,29): tag=Tag(i,name,Jahreszahl) self.Tagesliste+=[tag] def getTage(self): return self.Tagesliste def getName(self): return self.name class Tag(): '''Objekt Tag''' Tage=['Mo','Di','Mi','Do','Fr','Sa','So'] x=0 def __init__(self,i,name,Jahreszahl): self.Jahreszahl=Jahreszahl self.name=name self.nr=i self.day=self.Tage[self.x] Tag.x+=1 if Tag.x%7==0: Tag.x=0 def beginDay(begin): if begin in Tag.Tage: Tag.x=Tag.Tage.index(begin) return 'umgestellt' else: return 'Montag' def getDay(self): return self.day def getNr(self): return self.nr def __str__(self): return self.getDay()+' '+str(self.getNr())+' '+self.name+' '+str(self.Jahreszahl) def erschaffeKalender(): text=''' Dies ist ein gregorianischer Kalender. Die Zählung startet bei Jesu Geburt am 01.01.00\n Der Starttag des ersten Jahres kann festgelegt werden. Nach Start werden nacheinander \n Objekte der Klasse Jahr erzeugt, bis die eingegebene Jahreszahl erreicht ist\n ''' print(text) Ende=int(input('Bitte geben Sie die Endjahreszahl an: ')) Jahreszahl=int(input('Bitte geben Sie die Startjahreszahl an: ')) begin=input("Bitte geben Sie einen der Tage Mo, Di, Mi, Do, Fr, Sa, So als Start an: ") Tag.beginDay(begin) Kalender=[] while Jahreszahl<=Ende: jahr=Jahr(Jahreszahl) Kalender+=[jahr] Jahreszahl+=1 moz=0 diz=0 miz=0 doz=0 frz=0 saz=0 soz=0 for i in Kalender: for j in i.Monatsliste: for k in j.Tagesliste: if k.nr==13: if k.day=='Mo': moz+=1 elif k.day=='Di': diz+=1 elif k.day=='Mi': miz+=1 elif k.day=='Do': doz+=1 elif k.day=='Fr': frz+=1 elif k.day=='Sa': saz+=1 elif k.day=='So': soz+=1 ErgFr=[(moz,'Montag'),(diz,'Dienstag'),(miz,'Mittwoch'),(doz,'Donnerstag'),(frz,'Freitag'),(saz,'Samstag'),(soz,'Sonntag')] ErgFr.sort() print("Häufigkeiten der 13. eines Monats:") for i in ErgFr: print(i) erschaffeKalender()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1