Olli Graf
2 months ago
1 changed files with 104 additions and 0 deletions
@ -0,0 +1,104 @@ |
|||||
|
#! 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.') |
Loading…
Reference in new issue