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.
Programm »betrag.py«
- 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).
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.
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.
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()
| 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.
|
| 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.
|
| 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. |
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?