Woche 06#

Intro: Fakultät#

Def: https://de.wikipedia.org/wiki/Fakultät_(Mathematik)

insbesondere fak(0) == 1

Mikroaufgabe: Fakultät in einer Schleife berechnen … Übung!

def fak(n):
    if n == 0 or n == 1: ## Laut Def Ergebis = 1
        return 1
    else:
        return n * fak(n-1)
fak(4)
24

Wert einer Liste#

l = [ 1, 3, "Hallo", 20 ]
wert = 0

for x in l:
    if isinstance(x, (int, float)):
        wert = wert + x
    elif isinstance(x, str):
        wert = wert + len(x)
    else:
        print( f"unbekannter Wert-Typ (x), {type(x)} ")
wert
29
def wel(l):  # wert einer liste

    wert = 0
    for x in l:
        if isinstance(x, (int, float)):
            wert = wert + x
        elif isinstance(x, str):
            wert = wert + len(x)
        elif isinstance(x, list):
            # Rekursion!
            wert = wert + wel( x )
        else:
            print( f"unbekannter Wert-Typ {x}, {type(x)} ")
    return wert
wel(l)
29
l2 = [ 1, 2, "Hallo", [10,11], 100 ]
wel( l2 )
129

ausführlich: https://www.jbusse.de/jvdp-jb/e_r1c.html

Vorübung: isinstance()

x = 3.14159
isinstance(x, int)
False
isinstance(x, (int, float))
True
isinstance(x, str)
False

CSV einlesen#

mit pandas:

import pandas as pd
df = pd.read_csv('geburtstage.csv') 
df.head()
FamName Vornamen Jahr Monat Tag Stundensatz
0 Musterfrau Erika 2001 5 29 400.99
1 Knuth Donald 1919 1 10 12.31
df.to_dict(orient='dict') # default
{'FamName': {0: 'Musterfrau', 1: 'Knuth'},
 'Vornamen': {0: 'Erika', 1: 'Donald'},
 'Jahr': {0: 2001, 1: 1919},
 'Monat': {0: 5, 1: 1},
 'Tag': {0: 29, 1: 10},
 'Stundensatz': {0: 400.99, 1: 12.31}}
df.to_dict(orient='list')
{'FamName': ['Musterfrau', 'Knuth'],
 'Vornamen': ['Erika', 'Donald'],
 'Jahr': [2001, 1919],
 'Monat': [5, 1],
 'Tag': [29, 10],
 'Stundensatz': [400.99, 12.31]}
df.to_dict(orient='index')
{0: {'FamName': 'Musterfrau',
  'Vornamen': 'Erika',
  'Jahr': 2001,
  'Monat': 5,
  'Tag': 29,
  'Stundensatz': 400.99},
 1: {'FamName': 'Knuth',
  'Vornamen': 'Donald',
  'Jahr': 1919,
  'Monat': 1,
  'Tag': 10,
  'Stundensatz': 12.31}}