For-Schleifen, range() und Listen-Comprehensions
pizzas = ['pepperoni', 'margherita', 'hawaiian']
tiere = ['hund', 'katze', 'papagei']
zahlen = [1, 2, 3, 4, 5]
Wiederhole eine Aktion für jedes Element in einer Liste
pizzas = ['pepperoni', 'margherita', 'hawaiian']
for pizza in pizzas:
print(pizza)
# Ausgabe:
# pepperoni
# margherita
# hawaiian
Syntax: for element in liste:
pizzas = ['pepperoni', 'margherita', 'hawaiian']
for pizza in pizzas:
print(f"I like {pizza} pizza.")
print("I really love pizza!")
Ausgabe:
I like pepperoni pizza.
I like margherita pizza.
I like hawaiian pizza.
I really love pizza!
→ kapitel_4_aufgaben_4-1_4-2.ipynb
↓ Lösungen
pizzas = ['pepperoni', 'margherita', 'hawaiian']
for pizza in pizzas:
print(pizza)
for pizza in pizzas:
print(f"I like {pizza} pizza.")
print("I really love pizza!")
pepperoni
margherita
hawaiian
I like pepperoni pizza.
I like margherita pizza.
I like hawaiian pizza.
I really love pizza!
tiere = ['hund', 'katze', 'papagei']
for tier in tiere:
print(tier)
for tier in tiere:
print(f"A {tier} would make a great pet.")
print("Any of these animals would make a great pet!")
hund
katze
papagei
A hund would make a great pet.
A katze would make a great pet.
A papagei would make a great pet.
Any of these animals would make a great pet!
Erstellt eine Sequenz von Zahlen
# Zahlen von 1 bis 5
for wert in range(1, 6):
print(wert)
# Ausgabe: 1, 2, 3, 4, 5
# Zahlen von 0 bis 4
for wert in range(5):
print(wert)
# Ausgabe: 0, 1, 2, 3, 4
# Gerade Zahlen von 2 bis 10
gerade_zahlen = list(range(2, 11, 2))
print(gerade_zahlen) # [2, 4, 6, 8, 10]
# Ungerade Zahlen von 1 bis 10
ungerade_zahlen = list(range(1, 11, 2))
print(ungerade_zahlen) # [1, 3, 5, 7, 9]
# Vielfache von 3
vielfache = list(range(3, 31, 3))
print(vielfache) # [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
# Liste der Zahlen 1 bis 10
zahlen = list(range(1, 11))
print(zahlen)
# Kubikzahlen
kubikzahlen = []
for wert in range(1, 11):
kubik = wert ** 3
kubikzahlen.append(kubik)
print(kubikzahlen)
# [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
→ kapitel_4_aufgaben_4-3_4-9.ipynb
↓ Lösungen
# 4-3: Bis 20 zählen
for wert in range(1, 21):
print(wert)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 4-4: Eine Million
zahlen = list(range(1, 1000001))
for zahl in zahlen:
print(zahl) # Strg+C zum Abbrechen
1
2
3
... (würde bis 1000000 zählen)
# 4-5: Statistiken
zahlen = list(range(1, 1000001))
print(f"Min: {min(zahlen)}")
print(f"Max: {max(zahlen)}")
print(f"Sum: {sum(zahlen)}")
Min: 1
Max: 1000000
Sum: 500000500000
# 4-6: Ungerade Zahlen
for wert in range(1, 21, 2):
print(wert)
1
3
5
7
9
11
13
15
17
19
# 4-7: Vielfache von 3
for wert in range(3, 31, 3):
print(wert)
3
6
9
12
15
18
21
24
27
30
# 4-8: Kubikzahlen
for wert in range(1, 11):
print(wert**3)
1
8
27
64
125
216
343
512
729
1000
# 4-9: List Comprehension
kubik = [wert**3 for wert in range(1, 11)]
print(kubik)
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(f"Minimum: {min(zahlen)}") # 1
print(f"Maximum: {max(zahlen)}") # 10
print(f"Summe: {sum(zahlen)}") # 55
# Mit einer Million Zahlen
million = list(range(1, 1000001))
print(f"Min: {min(million)}") # 1
print(f"Max: {max(million)}") # 1000000
print(f"Summe: {sum(million)}") # 500000500000
Kompakte Syntax zum Erstellen von Listen
# Traditionelle Methode
quadrate = []
for wert in range(1, 11):
quadrate.append(wert**2)
# List Comprehension
quadrate = [wert**2 for wert in range(1, 11)]
print(quadrate)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# Kubikzahlen
kubikzahlen = [wert**3 for wert in range(1, 11)]
Teile einer Liste extrahieren
spieler = ['charles', 'martina', 'michael', 'florence', 'eli']
print(spieler[0:3]) # ['charles', 'martina', 'michael']
print(spieler[1:4]) # ['martina', 'michael', 'florence']
print(spieler[:4]) # ['charles', 'martina', 'michael', 'florence']
print(spieler[2:]) # ['michael', 'florence', 'eli']
print(spieler[-3:]) # ['michael', 'florence', 'eli']
spieler = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Die ersten drei Spieler sind:")
for spieler in spieler[:3]:
print(spieler.title())
print("\nDie letzten drei Spieler sind:")
for spieler in spieler[-3:]:
print(spieler.title())
# Falsch - Verweis auf dieselbe Liste
meine_speisen = ['pizza', 'falafel', 'kuchen']
freund_speisen = meine_speisen # Nur Verweis!
# Richtig - Echte Kopie
meine_speisen = ['pizza', 'falafel', 'kuchen']
freund_speisen = meine_speisen[:] # Kopie durch Slice
meine_speisen.append('cannoli')
freund_speisen.append('eis')
print("Meine Speisen:", meine_speisen)
print("Freund Speisen:", freund_speisen)
→ kapitel_4_aufgaben_4-10_4-12.ipynb
↓ Lösungen
spieler = ['charles', 'martina', 'michael', 'florence', 'eli']
print("The first three items in the list are:")
print(spieler[:3])
print("Three items from the middle of the list are:")
print(spieler[1:4])
print("The last three items in the list are:")
print(spieler[-3:])
The first three items in the list are:
['charles', 'martina', 'michael']
Three items from the middle of the list are:
['martina', 'michael', 'florence']
The last three items in the list are:
['michael', 'florence', 'eli']
# 4-11: Meine Pizza, deine Pizza
pizzas = ['pepperoni', 'margherita', 'hawaiian']
friend_pizzas = pizzas[:] # Kopie erstellen
pizzas.append('meat lovers')
friend_pizzas.append('vegetarian')
pizzas: ['pepperoni', 'margherita', 'hawaiian', 'meat lovers']
friend_pizzas: ['pepperoni', 'margherita', 'hawaiian', 'vegetarian']
# 4-12: For-Schleifen
print("My favorite pizzas are:")
for pizza in pizzas:
print(pizza)
print("My friend's favorite pizzas are:")
for pizza in friend_pizzas:
print(pizza)
My favorite pizzas are:
pepperoni
margherita
hawaiian
meat lovers
My friend's favorite pizzas are:
pepperoni
margherita
hawaiian
vegetarian
Unveränderliche Listen
# Tupel definieren
dimensionen = (200, 50)
print(dimensionen[0]) # 200
print(dimensionen[1]) # 50
# Fehler - Tupel sind unveränderlich
# dimensionen[0] = 250 # TypeError!
# Tupel durchlaufen
for dimension in dimensionen:
print(dimension)
# Ursprüngliches Tupel
dimensionen = (200, 50)
print("Ursprüngliche Dimensionen:")
for dimension in dimensionen:
print(dimension)
# Tupel komplett überschreiben
dimensionen = (400, 100)
print("\nGeänderte Dimensionen:")
for dimension in dimensionen:
print(dimension)
→ kapitel_4_aufgaben_4-13.ipynb
↓ Lösungen
# Ursprüngliches Büffet
buffet = ('pizza', 'salat', 'suppe', 'pasta', 'brot')
for gericht in buffet:
print(gericht)
# Versuch zu ändern (Fehler!)
# buffet[0] = 'hamburger' # TypeError!
# Neues Büffet
buffet = ('hamburger', 'salat', 'curry', 'pasta', 'reis')
print("Neues Büffet:")
for gericht in buffet:
print(gericht)
pizza
salat
suppe
pasta
brot
Neues Büffet:
hamburger
salat
curry
pasta
reis
# Gut
for pizza in pizzas:
print(f"I like {pizza} pizza.")
# Schlecht (zu viele Leerzeilen)
for pizza in pizzas:
print(f"I like {pizza} pizza.")
# Guter Stil
meine_liste = [1, 2, 3, 4, 5]
for nummer in meine_liste:
if nummer % 2 == 0:
print(f"{nummer} ist gerade")
# Schlechter Stil
meineListeMitEinemSehrLangenNamen=[1,2,3,4,5]
for x in meineListeMitEinemSehrLangenNamen:
if x%2==0:
print(f"{x} ist gerade")
URL: https://python.org/dev/peps/pep-0008/
→ kapitel_4_aufgaben_4-14_4-15.ipynb
↓ Lösungen
# 4-14: PEP 8 durchlesen
# https://python.org/dev/peps/pep-0008/
print("PEP 8 gelesen und verstanden!")
PEP 8 gelesen und verstanden!
# Vorher (schlecht)
pizzas=['pepperoni','margherita','hawaiian']
for x in pizzas:
print(f"I like {x} pizza.")
print("I really love pizza!")
# Nachher (gut - PEP 8)
pizzas = ['pepperoni', 'margherita', 'hawaiian']
for pizza in pizzas:
print(f"I like {pizza} pizza.")
print("I really love pizza!")
I like pepperoni pizza.
I like margherita pizza.
I like hawaiian pizza.
I really love pizza!
I like pepperoni pizza.
I like margherita pizza.
I like hawaiian pizza.
I really love pizza!
neue_liste = alte_liste[:]
for item in items
# Gute Praxis
for pizza in pizzas:
print(f"I love {pizza}!")
zahlen = [x**2 for x in range(10)]