Python :: Aufgabe #159 :: Lösung #3

5 Lösungen Lösungen öffentlich
#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.
#3
vote_ok
von 0 (0 Punkte) - 23.09.2017 um 15:35 Uhr
[CODE]
Quellcode ausblenden Python-Code
# 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.
# repräsentiere Montag = 1, Dienstag = 2, ... , Sonntag = 0 mod 7

monate = [31, 'feb', 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

counter13 = [0, 0, 0, 0, 0, 0, 0]  # Wochentage

# 13.Dez 2017 Mittwoch, von da an rückwärts
tag13 = 3  # mod 7
mon13 = 0  # mod 12


def februar(jahreszahl):
    if jahreszahl % 4 != 0:
        return 28
    if jahreszahl % 100 == 0 and jahreszahl % 400 != 0:
        return 28
    else:
        return 29


for jahr in range(2017, -1, -1):
    for monat in range(11, 0, -1):
        if monate[monat] != 'feb':
            tag13 = (tag13 - monate[monat]) % 7
            counter13[tag13] += 1
        elif monate[monat] == 'feb':
            feb = februar(jahr)
            tag13 = (tag13 - feb) % 7
            counter13[tag13] += 1

gesamt = sum(counter13)
dicttage = {0: 'Sonntag', 1: 'Montag', 2: 'Dienstag', 3: 'Mittwoch', 4: 'Donnerstag', 5: 'Freitag', 6: 'Samstag'}

print('Häufigster Tag:', dicttage[counter13.index(max(counter13))])
print('Relative Häufigkeit:', max(counter13) / gesamt * 100, '%')
print('Unwahrscheinlichster Tag:', dicttage[counter13.index(min(counter13))])
print('Relative Häufigkeit:', min(counter13) / gesamt * 100, '%')
# print(counter13)

[/CODE]

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben