#! python import datetime import sys today = datetime.date.today() #birthday = datetime.date(1969,8,19) birthday = datetime.datetime.strptime(sys.argv[1],'%d.%m.%Y').date() #Konstanten HAIR_GROWTH_PER_DAY = 0.4 NAIL_GROWTH_PER_DAY = 0.17 BREATHING_PER_DAY = 20000 HEART_RATE_PER_DAY = 100000 BLINKS_PER_DAY = 14400 URINE_PER_DAY = 1.5 DISTANCE_PER_DAY = 6 TAGNAMEN = ['Montag', 'Dienstag', ' Mittwoch', 'Donnerstag', 'Freitag', 'Samstag','Sonntag'] alterInTagen = (today - birthday).days def wochentage(geburtsdatum): wochentage_abgedeckt = set() # Ein Set, um die Wochentage zu verfolgen jahr = geburtsdatum.year alter = 0 while len(wochentage_abgedeckt) < 7: # Solange nicht alle 7 Wochentage abgedeckt sind aktueller_geburtstag = geburtsdatum.replace(year=jahr) wochentag = aktueller_geburtstag.weekday() # 0=Montag, ..., 6=Sonntag wochentage_abgedeckt.add(wochentag) # Füge den Wochentag hinzu jahr += 1 alter += 1 return alter def sternzeichen(geburtsdatum): tag = geburtsdatum.day monat = geburtsdatum.month if (monat == 3 and tag >= 21) or (monat == 4 and tag <= 19): return "Widder" elif (monat == 4 and tag >= 20) or (monat == 5 and tag <= 20): return "Stier" elif (monat == 5 and tag >= 21) or (monat == 6 and tag <= 20): return "Zwillinge" elif (monat == 6 and tag >= 21) or (monat == 7 and tag <= 22): return "Krebs" elif (monat == 7 and tag >= 23) or (monat == 8 and tag <= 22): return "Löwe" elif (monat == 8 and tag >= 23) or (monat == 9 and tag <= 22): return "Jungfrau" elif (monat == 9 and tag >= 23) or (monat == 10 and tag <= 22): return "Waage" elif (monat == 10 and tag >= 23) or (monat == 11 and tag <= 21): return "Skorpion" elif (monat == 11 and tag >= 22) or (monat == 12 and tag <= 21): return "Schütze" elif (monat == 12 and tag >= 22) or (monat == 1 and tag <= 19): return "Steinbock" elif (monat == 1 and tag >= 20) or (monat == 2 and tag <= 18): return "Wassermann" elif (monat == 2 and tag >= 19) or (monat == 3 and tag <= 20): return "Fische" def format_number(num, num_type = 'dec', sep = '.'): # num_type = 'dec' num_string = str(num) prefix = '' dist = 3 num_formated = '' # Format Hexadezimal if num_type == 'hex': num_string = hex(num)[2:] prefix = '0x' dist = 2 # Format Binär elif num_type == 'bin': num_string = bin(num)[2:] prefix = '0b' dist = 4 # Trennzeichen einfügen for i, l in enumerate(num_string[::-1]): if i > 0 and i%dist == 0: num_formated += sep num_formated += l # formatierten String in korrekter Reihenfolge zurückgeben return prefix + num_formated[::-1] print(f'Dein Geburstag war ein {TAGNAMEN[birthday.weekday()]}') print(f'Dein Sternzeichen ist {sternzeichen(birthday)}.') print(f'Du bist heute {alterInTagen} Tage alt.') print(f'Hättet du dir niemals die Haare geschnitten, wären sie jetzt {alterInTagen * HAIR_GROWTH_PER_DAY/100} cm lang') print(f'Hättet du dir niemals die Fingernägel geschnitten, wären sie jetzt {alterInTagen * NAIL_GROWTH_PER_DAY/100} cm lang') print(f'Im Schnitt hat dein Herz seit deiner Geburt {format_number(alterInTagen * HEART_RATE_PER_DAY)} mal geschlagen') print(f'Im Schnitt hast du {format_number(alterInTagen * BREATHING_PER_DAY)} Atemzüge gemacht.') print(f'Während du wach bist hast du bislang {format_number(alterInTagen * BLINKS_PER_DAY)} Lidschläge mit den Augen gemacht.') print(f'Deine Nieren haben bislang etwa {(URINE_PER_DAY * alterInTagen)} Liter Urin produziert.') print(f'zu Fuss hast du ca. eine Strecke von {format_number(alterInTagen * DISTANCE_PER_DAY)}km zurückgelegt.') print(f'An deinem {wochentage(birthday)}. Geburtstag hast du an jedem Wochentag einmal Geburtag gehabt.')