3.2 Selektion (Auswahl)

In diesem Abschnitt liegen der Programmablaufsteuerung die Kontrollstrukturen Sequenz (Aufeinanderfolge) und Selektion (einfache und mehrfache Auswahl) zugrunde.

Die Kontrollstruktur Selektion betreffend gibt es In Python die if-Anweisung, if-else-Anweisung und if-elif-else-Anweisung.

Bild 39
Abbildung 1: Die if-Anweisung (einfache Auswahl) mit einem Bedingungszweig
Bild 40
Abbildung 2: Die if-else-Anweisung (mehrfache Auswahl) mit zwei Bedingungszweigen
Bild 41
Abbildung 3: Die if-elif-else-Anweisung (mehrfache Auswahl) mit drei Bedingungszweigen

Programm »betrag.py«

Definition
Begriff »Betrag einer Ganzzahl«
  • Ist die Zahl positiv, ist die positive Zahl der Betrag (beispielsweise ist der Betrag von 45 gleich 45).
  • Ist die Zahl negativ, ist die positive Zahl der Bertrag (Betrag von -45 ist 45).
  • Ist die Zahl Null, ist die Null der Betrag (Betrag von 0 ist 0).
Übung

Aufgabe A14

Von welchen Ganzzahlen kann 81 der Betrag sein?

In der Abbildung 4 ist der Algorithmus zum Ermitteln des Betrags einer Ganzzahl im Struktogramm dargestellt.

Bild 42
Abbildung 4: Darstellung des Algorithmus mit einer einfachen Auswahl

Das Programm »betrag.py« besteht aus zwei Teilen.

  • Der grafischen Benutzeroberfläche – dem Hauptfenster.
  • Der Callback-Funktion »betragsfunktion«.

Nachfolgend ist der Quelltext des Programms »betrag.py« gegeben.

  • Der Callback-Funktion »betragsfunktion« liegt der in der Abbildung 4 dargestellte Algorithmus zugrunde.
  • Den Kern der Callback-Funktion »betragsfunktion« bildet die if-Anweisung (einfache Auswahl) mit einem Bedingungszweig.
Quelltext des Programms »betrag.py«
import tkinter as tk

# Callback-Funktion
def betragsfunktion():
    try:
       zahl=int(entry.get())
       if zahl<0:
          zahl=-zahl
       label2.config(text=f"Der Betrag ist {zahl}.")
    except ValueError:
       label2.config(text="Falsche Eingabe!")
    entry.delete(0, tk.END)

# grafische Benutzeroberfläche    
root = tk.Tk()
root.title("Betrag einer Ganzzahl")
root.geometry("400x250")
root.resizable(False, False)

# Widgets
label1=tk.Label(root, text="Gib eine Ganzzahl ein!")
entry=tk.Entry(root, width=5)
button1=tk.Button(root, text="Betrag",\
                  command=betragsfunktion)
label2 = tk.Label(root, text="")
button2 = tk.Button(root, text="Programm beenden",\
                    command=root.destroy)

label1.pack(pady=10)
entry.pack(pady=10)
button1.pack(pady=10)
label2.pack(pady=10)
button2.pack()

root.mainloop()

Erklärungen zum Quelltext
5. bis 12. Zeile Die Callback-Funktion »betragsfunktion« wird deklariert.
5. bis 11. Zeile In Python erfolgt durch »try« und »except« die Ausnahmebehandlung der Eingabe.
  • Ist im try-Block die Eingabe unzulässig, wird der except-Block ausgeführt.
  • Im execpt-Block wird die Ausnahme behandelt, indem auf dem Label-Widget »Falsche Eingabe!« ausgegeben wird.
6. Zeile Der Variable »zahl« wird die vom Benutzer eingegebene Zeichenkette durch die Funktion »int()« als Ganzzahl zugewiesen.
7. und 8. Zeile Die if-Anweisung ist eine einfache Auswahl (Selektion) mit einem Bedingungszweig.
  • Die Wertzuweisung »zahl=-zahl« bedeutet, dass der Variable »zahl« der Wert
    »-zahl« zugewiesen wird.
  • Hat die Variable »zahl« beispielsweise den Wert -2, dann ist »-zahl« gleich 2.
    Durch die Wertzuweisung »zahl=-zahl« bekommt die Variable &aquo;zahl« den neuen Wert 2 zugewiesen.
9. Zeile Der Betrag wird im f-String ausgegeben.
12. Zeile Der Inhalt des Eingabefensters wird gelöscht.
21. Zeile Das Label-Widget (Beschriftung) mit der Aufschrift »Gib eine Ganzzahl ein!« wird erzeugt.
22. Zeile Das Entry-Widget (Eingabefeld) der Breite 5 wird erzeugt.
23. und 24. Zeile Das Button-Widget (Schaltfläche) mit der Aufschrift »Betrag« und dem Kommando – die Callback-Funktion »betragsfunktion« aufzurufen –wird erzeugt.
25. Zeile Das Label-Widget (Beschriftung) wird ohne Aufschrift erzeugt.
23. und 24. Zeile Das Button-Widget (Schaltfläche) mit der Aufschrift »Programm beenden« und dem Kommando, das Programm zu beneden wird erzeugt.
29. bis 33. Zeile Die Widgets werden als Elemente auf dem Hauptfenster platziert.
Bild 43
Abbildung 5: Hauptfenster mit Widgets
Übung

Aufgabe A15

Implementiere das das Programm »betrag.py« am Computer.

Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:

  • -76
  • 0
  • 234
  • Was geschieht, wenn 5abc6 eingegeben wird?