3.2.1 Ganzzahl gerade oder ungerade
- Eine Ganzzahl ist gerade, wenn beim ganzzahligen Teilen der Zahl durch 2 der Rest 0 ist (beispielsweise ist 24%2 gleich 0).
- Da 0 beim ganzahligen Teilen durch 2 den Rest 0 hat, ist 0 eine gerade Ganzzahl.
- Eine Ganzzahl ist ungerade, wenn beim ganzzahligen Teilen der Zahl durch 2 der Rest 1 ist (beispielsweise ist 13%2 gleich 1).
Das Programm »ganzzahl1.py«
Das Programm soll das Folgende leisten:
- (E) Eingabe einer Ganzzahl.
- (V) Verarbeitung, indem geprüft wird, ob die Ganzzahl gerade oder ungerade ist.
- (A) Ausgabe des Prüfergebnisses in einer Zeichenkette.
Zum Prüfen – ob eine vom Benutzer eingegebene Ganzzahl eine gerade oder ungerade Zahl ist – ist der in der Abbildung1 dargestellte Algorithmus gegeben.
Der Algorithmus wiederum liegt der Callback-Funktion »pruefen« des Programms zugrunde.
- Den Kern der Callback-Funktion »pruefen« bildet die if-else-Anweisung (mehrfache Auswahl) mit zwei Bedingungszweigen.
# Callback-Funktion
def pruefen():
try:
zahl=int(entry.get())
if zahl%2==0:
label2.config(text=f"{zahl} ist gerade.")
else:
label2.config(text=f"{zahl} ist ungerade.")
except ValueError:
label2.config(text="Falsche Eingabe!")
entry.delete(0, tk.END)
| 2. bis 11. Zeile | Die Callback-Funktion »pruefen« wird deklariert. |
| 3. bis 10. Zeile | Durch »try« und »except« erfolgt eine Ausnahmebehandlung. |
| 4. Zeile | Der Variable »zahl« wird die vom Benutzer eingegebene Zeichenkette durch die Funktion »int()« als Ganzzahl zugewiesen. |
| 5. bis 8. Zeile |
Die if-else-Anweisung ist eine mehrfache Auswahl (Selektion) mit zwei Bedingungszweigen:
|
| 5. Zeile | Der Modulo-Operator »%« ermittelt den Rest beim Teilen einer Ganzzahl durch eine andere. |
| 6. Zeile |
Falls »zahl« beim ganzahligen Teilen durch 2 den Rest 0 ergibt, wird der f-String
»f"{zahl} ist gerade."« ausgegeben. Hat beispielsweise die Variable »zahl« den Wert 12, dann wird die Zeichenkette » |
| 8. Zeile |
Ansonsten wird der f-String »f"{zahl} ist ungerade.« ausgegeben. Hat beispielsweise die Variable »zahl« den Wert 13, dann wird die Zeichenkette » |
| 11. Zeile | Der Inhalt des Eingebefensters wird gelöscht. |
In der Abbildung 2 ist eine mögliche grafische Benutzeroberfläche – das Hauptfenster mit Widgets – dargestellt.
Aufgabe A16
Implementiere ein Programm »ganzzahl1.py« am Computer.
- Das Programm soll aus einer grafischen Benutzeroberfläche – dem Hauptfenster mit Widgets – bestehen.
- Und das Programm enthält die Callback-Funktion »pruefen«.
Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:
- 285
- 9872
- 0
- -9
- +63
- Was geschieht bei der Eingabe 1.9e-2?
Zehner-, Hunderter- und Tausenderzahl
Eine Ganzzahl ist eine:
-
Zehnerzahl, wenn die letzte Ziffer der Zahl eine Null ist.
Beispielsweise sind die Ganzzahlen -90, 30, 120, 0, -1230, 987610 und 53070 Zehnerzahlen. -
Hunterterzahl, wenn die letzten zwei Ziffern der Zahl Nullen sind.
Beispielsweise sind die Ganzzahlen -700, 330, 100, -1230, 830500 und 4500 Hunterterzahlen. -
Tausenderzahl, wenn die letzten drei Ziffern der Zahl Nullen sind.
Beispielsweise sind die Ganzzahlen -1000, 4056000, 12000, -2000, 9000 und 24000 Tausenderzahlen.
Programm »ganzzahl2.py«
Zum Prüfen – ob eine vom Benutzer eingegebene Ganzzahl eine Tausender-, Hunderter- oder Zehnerzahl ist – ist die Callback-Funktion »pruefen« gegeben.
Interessant an der Callback-Funktion »pruefen« sind die:
- if-elif-elif-else-Anweisung (mehrfache Auswahl) mit vier Bedingungszweigen
- Reihenfolge der Bedingungen innerhalb der if-elif-elif-else-Anweisung
# Callback-Funktion
def pruefen():
try:
zahl=int(entry.get())
if zahl%1000==0:
label2.config(text=f"{zahl} ist Tausenderzahl.")
elif zahl%100==0:
label2.config(text=f"{zahl} ist Hunderterzahl.")
elif zahl%10==0:
label2.config(text=f"{zahl} ist Zehnerzahl.")
else:
label2.config(\
text=f"{zahl} ist keine der Zahlen.")
except ValueError:
label2.config(text="Falsche Eingabe!")
entry.delete(0, tk.END)
| 2. bis 16. Zeile | Die Definition der Callback-Funktion »pruefen« erfolgt. |
| 3. bis 15. Zeile | Durch »try« und »except« erfolgt die Ausnahmebehandlung. |
| 4. Zeile | Der Variable »zahl« wird die vom Benutzer eingegebene Zeichenkette durch die Funktion »int()« als Ganzzahl zugewiesen. |
| 5. bis 13. Zeile | Geprüft wird, ob die vom Benutzer eingegebene Ganzzahl eine Tausender-, Hunderter- oder Zehnerzahl ist. |
| 5., 7. und 9. Zeile |
In den Bedingung wird geprüft, ob die eingegebene Ganzzahl ohne Rest durch 1000, 100 oder 10 teilbar ist:
|
| 6., 8., 10. und 13. Zeile | Ausgegeben werden die Ergebnise des Prüfens in f-Strings. |
| 16. Zeile | Der Inhalt des Eingebefensters wird gelöscht. |
Aufgabe A17
Implementiere ein Programm »ganzzahl2.py« am Computer.
- Das Programm soll prüfen, ob die vom Benutzer eingegebene Ganzzahl eine Tausender-, Hunderter- oder Zehnerzahl ist.
Hinweis:
- Da eine Tausender Zahl zugleich eine Hunderterzahl und Zehnerzahl ist, muss die Zahl nicht gesondert als Hunderter- und Zehnerzahl geprüft und ausgegeben werden.
- Da eine Hunderterzahl zugleich eine Zehnerzahl ist, muss die Zahl nicht gesondert als Zehnerzahl geprüft und ausgegeben werden.
Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:
- 5000
- -12300
- 6
- 5603000
- 908020
- -700
- 0
- 4567