Schummeln… äh… Debuggen lernen #
Zahlenraten mit dem Computer #
int zufallszahl = Random.randint(1, 6);
int userZahl = Input.readInt("Gib eine Zahl zwischen 1 und 6 ein:");
if(zufallszahl == userZahl) {
println("Getroffen!");
}
println("Danke fürs Spielen!");
- In der Variable
zufallszahl
speichern wir eine Zufallszahl zwischen 1 und 6, die wir mitRandom.randint(1, 6)
erzeugen lassen. - In der Variable
userZahl
speichern wir die Eingabe, zu der wir unser Nutzerin oder unseren Nutzer auffordern – ebenfalls als Zahl. - Die Anweisung
if
überprüft, ob die beiden in den Variablen gespeicherten Zahlen gleich sind – der Ausdruck in der Klammer wird dazu zu einem Wahrheitswert ausgewertet. - Die geschweiften Klammern (
{
und}
) begrenzen einen Codeblock. Zur besseren Übersicht solltest du solche Blöcke immer einrücken! - Alle Anweisungen im Block, der nach der
if
-Anweisung anfängt, werden nur ausgeführt, wenn der ausgewertete Wahrheitswerttrue
ist. Beifalse
wird der Block einfach übersprungen. - Hier bedeutet das: nur wenn unsere Nutzerin oder unser Nutzer die richtige Zahl eingegeben hat, wird Getroffen! ausgegeben.
- Danke fürs Spielen! wird in jedem Fall am Bildschirm ausgegeben, weil es nach dem Block steht.
- Vergiss nicht, das Spiel einige Runden zu spielen!
from random import randint
zufallszahl = randint(1, 6)
user_zahl = int(input('Gib eine Zahl zwischen 1 und 6 ein: '))
if zufallszahl == user_zahl:
print('Getroffen!')
print("Danke fürs Spielen!")
- In der Variable
zufallszahl
speichern wir eine Zufallszahl zwischen 1 und 6, die wir mitrandint(1, 6)
erzeugen lassen. - In der Variable
user_zahl
speichern wir die Eingabe, zu der wir unser Nutzerin oder unseren Nutzer auffordern – ebenfalls als Zahl. - Die Anweisung
if
überprüft, ob die beiden in den Variablen gespeicherten Zahlen gleich sind – der Ausdruck nach demif
wird dazu zu einem Wahrheitswert ausgewertet. - Nach dem Doppelpunkt (
:
) wird ein neuer Codeblock erwartet. (Die Einrückung markiert einen solchen Codeblock.) Python-Programmiererinnen und -Programmierer rücken solche Blöcke um exakt vier Leerzeichen ein. - Alle Anweisungen im Block, der nach der
if
-Anweisung anfängt, werden nur ausgeführt, wenn der ausgewertete WahrheitswertTrue
ist. BeiFalse
wird der Block einfach übersprungen. - Hier bedeutet das: nur wenn unsere Nutzerin oder unser Nutzer die richtige Zahl eingegeben hat, wird Getroffen! ausgegeben.
- Danke fürs Spielen! wird in jedem Fall am Bildschirm ausgegeben, weil es nach dem Block steht.
- Vergiss nicht, das Spiel einige Runden zu spielen!
Jetzt wird geschummelt debuggt!
#
Wenn dein Programm gar nicht erst läuft, solltest du dir die Fehlermeldungen gut durchlesen – auch wenn die nicht immer sofort verständlich ist, kann sie doch oft weiterhelfen.
Wenn dein Programm läuft, aber nicht die Ergebnisse erzeugt, die du möchtest, solltest du die Programmlogik untersuchen.
Wäre es nicht hilfreich, sehen zu können, welche Werte in den Variablen abgespeichert sind? Dann könntest du immer gewinnen genau überprüfen, ob dein Programm wie erwartet funktioniert.
- Der rote Punkt neben Zeile zwei wird Breakpoint genannt. Du kannst ihn mit einem Mausklick erzeugen oder wieder löschen.
- Wenn ein Breakpoint gesetzt ist, wird das Programm bis zu dieser Stelle ausgeführt und hält dann an.
- Du kannst die Werte, die deine Variablen angenommen haben, ansehen.
- Nutze den Breakpoint, um einmal den Block hinter der Bedingung ausführen zu lassen, und ihn einmal zu überspringen!
- Der rote Punkt neben Zeile vier wird Breakpoint genannt. Du kannst ihn mit einem Mausklick erzeugen oder wieder löschen.
- Wenn ein Breakpoint gesetzt ist, hält das Programm im Debug-Modus an dieser Stelle an. (Den Debugmodus startest Du mit einem Klick auf den Käfer.)
- Du kannst die Werte, die deine Variablen angenommen haben, ansehen. (Falls du die Variablen nicht sehen kannst, wähle im Menü Ansicht den Punkt Variablen aus.)
- Nutze den Breakpoint, um einmal den Block hinter der Bedingung ausführen zu lassen, und ihn einmal zu überspringen!
Flashcards #
In diesem Struktogramm sind zwei verschiedene Blöcke von Anweisungen vorgesehen, je nachdem ob eine Bedingung WAHR oder FALSCH ist:
Bei der einseitigen Bedingung ist für den FALSCH-Fall einfach nichts vorgesehen – daher nur eine Seite:
Das Schlüsselwort if
, die Überprüfung einer Bedingung (Ausdruck, der zu einem Wahrheitswert ausgewertet wird, hier: (punkte > 11)
) und einen Block von Anweisungen, der im Wahrheitsfall ausgeführt wird (hier: println("Bestanden!");
)
if (punkte > 11) {
println("Bestanden!");
}
Das Schlüsselwort if
, die Überprüfung einer Bedingung (Ausdruck, der zu einem Wahrheitswert ausgewertet wird, hier: punkte > 11
) und (nach einem Doppelpunkt) einen Block von Anweisungen, der im Wahrheitsfall ausgeführt wird (hier: print('Bestanden!')
)
if punkte > 11:
print('Bestanden!')
if (x <= 5) {
x = x + 7;
}
if (x > 12) {
x = x + 3;
}
x = x + 32;
if (x < 0) {
x = x * (-1);
}
println(x)
Nimm an, x
hat vor Ausführung dieser Zeilen den Wert
- 3
- 12
Welchen Wert gibt die Zeile print(x)
jeweils aus?
if x <= 5:
x = x + 7
if x > 12:
x = x + 3
x = x + 32
if x < 0:
x = x * -1
print(x)
Nimm an, x
hat vor Ausführung dieser Zeilen den Wert
- 3
- 12
Welchen Wert gibt die Zeile print(x)
jeweils aus?
- 42
- -44