Woche 04 WS 2025#
Vorschau auf Runde 2
Funktionen#
def fibonacci(N):
L = []
[a, b] = [0, 1]
while len(L) < N:
a, b = b, a + b
L.append(a)
return L
fibonacci(5)
[1, 1, 2, 3, 5]
L
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 1
----> 1 L
NameError: name 'L' is not defined
L2 = [ "Willkommen" ]
def fibonacci_2(N):
#print("INFO 90", L2)
L2 = []
print("INFO 100", L2)
[a, b] = [0, 1]
while len(L2) < N:
a, b = b, a + b
L2.append(a)
print("INFO 200", L2)
return L2
f = fibonacci_2(5)
f
INFO 100 []
INFO 200 [1, 1, 2, 3, 5]
[1, 1, 2, 3, 5]
L2
['Willkommen']
L2 = [ "Hallo" ]
fibonacci_2(5)
INFO 100 []
INFO 200 [1, 1, 2, 3, 5]
[1, 1, 2, 3, 5]
L2
['Hallo']
L3 = [ "eins", "zwei" ]
def test():
L3.append("neunzig")
print(L3)
test()
['eins', 'zwei', 'neunzig']
L4 = 1
def test():
L4 = L4 + 1
print(L4)
L4 = 1
def test():
#L4 = L4 + 1
print(L4)
test()
1
test()
1
test()
1
L5 = 99
def test():
global L5
L5 = L5 + 1
print(L5)
test()
100
for x in range(0,7):
zweix = 2 * x
print(zweix)
0
2
4
6
8
10
12
zweix
12
pi = 3.1415
def mein_volumen(x,y,z, typ):
if typ == "Würfel":
return x*y*z
elif typ == "Kugel":
return 4/3 * pi * x**3
mein_volumen(1,1,1, "Kugel")
4.188666666666666
mein_volumen(2,2,2, "Würfel")
8
pi = 3.14
def mein_volumen(*, laenge, breite, hoehe, typ="Kugel"):
if typ == "Würfel":
return laenge * breite * hoehe
elif typ == "Kugel":
return 4/3 * pi * laenge**3
mein_volumen(laenge=3, breite=7, hoehe=5)
113.03999999999999
mein_volumen(
Cell In[26], line 1
mein_volumen(
^
SyntaxError: incomplete input
import v
v.mein_volumen(1,1,1, "Kugel")
4.188666666666666
print( 2 * v.pi )
6.283
from v import mein_volumen
mein_volumen(1,1,1, "Kugel")
4.188666666666666
import random
print(random.__file__)
/home/dsci/miniconda3/lib/python3.12/random.py
Aufgabe: erzeugen Sie eine Liste von 2-Tupeln der Form:
n = 4
zweitupel = [ (1,2), (1,3), ..., (1,n), (2, 3), (2,4), ..., (2, n) ]
zweitupel
[(1, 2), (1, 3), Ellipsis, (1, 4), (2, 3), (2, 4), Ellipsis, (2, 4)]
for außen in range(1,n+1):
print( f"{außen=}")
for innen in range( außen+1, n+1):
print(außen, innen)
außen=1
1 2
1 3
1 4
außen=2
2 3
2 4
außen=3
3 4
außen=4
zweitupel = []
for außen in range(1,n+1):
print( f"{außen=}")
for innen in range( außen+1, n+1):
#print(außen, innen)
zweitupel.append( (außen, innen) )
zweitupel
außen=1
außen=2
außen=3
außen=4
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
Woche 04 WS 2024#
Funktionen definieren
"hallo" * 2
'hallohallo'
def doppelt(x):
return x * 2
doppelt( "hallo" )
'hallohallo'
doppelt(2)
4
doppelt( [ 1,2,3] )
[1, 2, 3, 1, 2, 3]
def multi(x):
n = 3 # n ist lokal in der Funktion, äußeres n wird nicht geändert
return x * n
multi("hallo")
'hallohallohallo'
n = 99
multi("hallo") # n ist lokal in der Funktion, äußeres n wird nicht geändert
'hallohallohallo'
n
99
positional argument#
def x_mal_y( x, y):
return x * y
# wirft fehler
# x_mal_y( "Hallo", "Welt")
# wift fehler
# x_mal_y(3)
def x_mal_y( x, y=2): # default wert
return x * y
x_mal_y(3)
6
def p_plus_q_r_s(p,q,r,s):
return p + q
p_plus_q_r_s(1,2,3,4)
3
p_plus_q_r_s( s=4, p=1, q=2, r=3)
3
# wirft Fehler
# p_plus_q_r_s( s=4, p=1, q=2)
def x_mal_y_hoch_z(x, y, *, z=1, p=1, q=1, r=1):
return (x*y)**z
x_mal_y_hoch_z(2, 3)
6
Rückgabewert None#
def a_minus_b(a,b):
ergebnis = a - b
if ergebnis != 0:
return ergebnis
else:
return None
a_minus_b(5,3)
2
a_minus_b(5,5)
z = a_minus_b(5,5)
z
Wiederholung: mutables#
l1 = [ 1,2,3]
l2 = l1
l2
[1, 2, 3]
l1.append(99)
l2
[1, 2, 3, 99]
l1 = [1,2,3]
#l2 = l1 # Pointer auf das selbe Objekt
#l2 = l1[:] # Slicing erzeugt Kopie
#l2 = l1 + [] # "+" erzeugt Kopie
l1.extend( [] ) ## JB : liefert None zurück
l1.append(99)
l2
[1, 2, 3, 99]
l789 = [ 7,8,9]
l789.extend([10,11,12])
l789
[7, 8, 9, 10, 11, 12]
l8 = [1,2,3]
l9 = l8 * 2
l8 *2
[1, 2, 3, 1, 2, 3]
l9
[1, 2, 3, 1, 2, 3]
l9 is l8 *2
False
def doppelt(xx):
xx = 2* xx
return xx
a = 42
doppelt(a)
84
a
42
## wirft fehler, weil undefiniert
# xx
l1 = [1, 2,3]
l2 = doppelt(l)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[74], line 2
1 l1 = [1, 2,3]
----> 2 l2 = doppelt(l)
NameError: name 'l' is not defined
l
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[75], line 1
----> 1 l
NameError: name 'l' is not defined
l2
[1, 2, 3, 99]
def list_append_99(xxx):
return xxx.append(99)
l = [1,2,3]
list_append_99(l) # Pointer auf l
l
[1, 2, 3, 99]
l = [1,2,3]
list_append_99( l[:] ) # Kopie von l
l
[1, 2, 3]
Wiederholung: Dicts#
d = { "Otto Müller": "2020-01-01" }
d["Otto Müller"]
'2020-01-01'
d = { ("Otto", "Müller") : "2020-01-01" }