At My Fingertips

Documentation

Selektion mit Schleifen

Loading...

Selektion in Schleifen

Sie gehen mit Ihrer grossen Familie in den Freizeitpark Phantasialand (Deutschland) und wollen auf die Achterbahn Winja's Force. Auf diese dürfen jedoch nur Personen, die zwischen 140 und 195cm gross sind.

# Eingabe
groessenliste = [140, 155, 199, 181, 165, 177, 134, 120]
erlaubnis = rectangle(1, 1, transparent)

# Verarbeitung
for groesse in groessenliste:
    if groesse < 140:
        erlaubnis = nein
    elif 140 <= groesse <= 195:
        erlaubnis = ja
    else:
        erlaubnis = nein

    # Ausgabe
    show_graphic(erlaubnis)

Überprüfen Sie:

Loading...

Achten Sie darauf, dass sich der Ausgabebefehl in der Schleife befindet, damit nach jedem Schleifendurchlauf das Ergebnis ausgegeben wird.

Loading...
  1. eine Liste von Zahlen wie [4, 7, 10, 15, 18] durchläuft und für jede Zahl ausgibt, ob sie gerade oder ungerade ist (Paritätsprüfung). Tipp: Verwenden Sie als Bedingung zahl % 2 == 0.
  2. eine Liste von Namen wie ["Maria", "Alice", "Bob", "Charlie"] durchläuft und prüft, ob der Name „Alice“ in der Liste enthalten ist. Es wird eine entsprechende Nachricht ausgegeben, wenn der Name gefunden wird. Wenn der Name nicht gefunden wird, passiert nichts.
Loading...
Musterlösung 1
zahlen = [4, 7, 10, 15, 18]

for zahl in zahlen:
    if zahl % 2 == 0:
        print(zahl, "ist gerade.")
    else:
        print(zahl, "ist ungerade.")
        
# Erklärung:
# if zahl % 2 == 0: Überprüft, ob die Zahl gerade ist, und gibt die entsprechende Nachricht aus.
# else: Gibt aus, dass die Zahl ungerade ist, wenn sie nicht gerade ist.
Loading...
Musterlösung 2
namen = ["Maria", "Alice", "Bob", "Charlie"]

for name in namen:
    if name == "Alice":
        print("Alice wurde gefunden.")
        break
    
# Erklärung:
# if name == "Alice": Überprüft, ob der Name „Alice“ ist.
# break: Beendet die Schleife sofort (wenn der Name gefunden wurde).

for-else oder for if-else?

Loading...

Für die Alice-Aufgabe ist natürlich elegant, wenn das Programm meldet, falls Alice nicht gefunden wurde. Dafür bietet Python die for-else Kontrollstruktur, die wie folgt aussieht:

namen = ["Maria", "Bob", "Alice", "Charlie", "Amna"]

for name in namen:
    if name == "Alice":
        print("Alice wurde gefunden.")
        break
else: # gleicher Einzug wie for
    print("Alice wurde nicht gefunden.")

Die for-else Kontrollstruktur braucht drei Elemente:

  1. eine for-Schleife (oder while-Schleife),
  2. einen break-Aufruf, um die Schleife abzubrechen, falls die Suche erfolgreich war und
  3. einen else-Block nach der Schleife, falls die Suche erfolglos war. Dieser Block wird also nur ausgeführt, wenn die Schleife nie mit break abgebrochen (terminiert) wurde.

else hat den gleichen Einzug wie for, nicht wie if.

Antwort

Sobald das Programm zum ersten Mal "Alice" findet, gibt es die passende Meldung aus und das Schlüsselwort break lässt das Programm abbbrechen. Egal wie oft Alice also in der Liste vorkommt, die Erfolgsmeldung wird höchstens einmal ausgegeben.

Antwort

Jetzt wird für jedes Listenelement "Alice" die Erfolgsmeldung ausgegeben (also 3 Mal), weil das Schlüsselwort break fehlt. Auch wird die Misserfolgsmeldung fälschlicherweise ausgegeben, auch weil das Schlüsselwort break fehlt.

  1. eine Zahlenliste wie [0.0, 1.1, 2.2, 3.3, 4.4] durchläuft und prüft, ob die Zahl 3.3 vorkommt. Geben Sie eine entsprechende Nachricht aus, je nachdem, ob die Zahl enthalten ist oder nicht. Überprüfen Sie auch mit 3.4.
  2. einen String wie "Programmieren" durchläuft und prüft, ob der Buchstabe "e" im String vorkommt. Geben Sie eine entsprechende Nachricht aus, je nachdem, ob der Buchstabe "e" enthalten ist oder nicht. Überprüfen Sie auch mit x. Tipp: Sie können Strings genau gleich durchlaufen wie Listen.
  3. einen String wie "Programmieren" durchläuft und für jeden Vokal ("a", "e", "i", "o", "u") im Wort eine Nachricht ausgibt.
Loading...
Musterlösung 3
zahlenliste = [0.0, 1.1, 2.2, 3.3, 4.4]

for zahl in zahlenliste:
    if zahl == 3.3: # oder 3.4
        print("Die Zahl 3.3 wurde gefunden.")
        break
else:
    print("Die Zahl 3.3 wurde nicht gefunden.")
    
# Erklärung:
# if zahl == 3.3: Überprüft, ob die Zahl 3.3 in zahlenliste vorkommt.
# break: Beendet die Schleife, wenn die Zahl gefunden wurde.
# else (nach der Schleife): Wird nur ausgeführt, 
#   wenn die Schleife nicht mit einem break abgebrochen 
#   wurde (d.h., 3.3 wurde nicht gefunden).
Loading...
Musterlösung 4
wort = "Programmieren"

for buchstabe in wort:
    if buchstabe == "e":
        print("Der Buchstabe 'e' wurde gefunden.")
        break
else:
    print("Der Buchstabe 'e' wurde nicht gefunden.")
    
# Erklärung:
# if buchstabe == "e": Überprüft, ob der Buchstabe "e" im Wort vorkommt.
# break: Beendet die Schleife, wenn der Buchstabe gefunden wurde.
Loading...
Musterlösung 5
wort = "Programmieren"
vokale = "aeiou"

for buchstabe in wort:
    if buchstabe.lower() in vokale:
        print("Der Buchstabe", buchstabe, "ist ein Vokal.")
        
# Erklärung:
# buchstabe.lower() in vokale: Überprüft, ob der Buchstabe ein Vokal ist, 
# .lower(): die Gross-/Kleinschreibung wird ignoriert.
# print: Gibt eine Nachricht für jeden Vokal aus, der im Wort vorkommt.

Was Sie geübt und gelernt haben

Lösungsstrategien

  • Sie können Probleme lösen, indem Sie sie in Teilprobleme zerlegen.

Python

  • Sie können Selektion (if, elif, else) sinnvoll verwenden.
  • Sie können mit break eine Schleife abbrechen.
  • Sie können die Kontrollstruktur for-else sinnvoll verwenden.
  • Sie können Schleifen und Selektion sinnvoll kombinieren.
  • Sie können verschiedene Vergleichsoperatoren sinnvoll verwenden.

PyTamaro

  • Sie können Grafiken mit Selektion verwenden.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Selektion mit Schleifen

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version 6ea4c91 (Wed, 05 Feb 2025 09:34:19 GMT)