Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
sys.exit() # Beendet das Programm.
if playerMove == 'r' or playerMove == 'p' or playerMove == 's':
break # Beendet die Eingabeschleife.
print('Type one of r, p, s, or q.')
Hier ist eine while-Schleife in einer anderen while-Schleife verschachtelt. Bei der äußeren handelt es sich um die Hauptschleife des Spiels. Jeder Durchlauf durch diese Schleife stellt eine einzelne Runde des Spiels dar. Die innere Schleife fordert den Spieler zu einer Eingabe auf und wird so lange wiederholt, bis der Spieler r, p, s oder q eingegeben hat, wobei r, p und s für Stein (rock), Papier (paper) und Schere (scissors) stehen und q bedeutet, dass der Benutzer das Spiel beenden will. In letzterem Fall wird sys.exit() aufgerufen und das Programm beendet. Gibt der Spieler r, p oder s ein, verlässt das Programm die Schleife. Anderenfalls fordert es ihn auf, r, p, s oder q einzugeben und kehrt wieder zum Anfang der Schleife zurück.
# Zeigt die Wahl des Spielers an:
if playerMove == 'r':
print('ROCK versus...')
elif playerMove == 'p':
print('PAPER versus...')
elif playerMove == 's':
print('SCISSORS versus...')
Damit wird die Auswahl des Spielers angezeigt.
# Zeigt die Wahl des Computers an:
randomNumber = random.randint(1, 3)
if randomNumber == 1:
computerMove = 'r'
print('ROCK')
elif randomNumber == 2:
computerMove = 'p'
print('PAPER')
elif randomNumber == 3:
computerMove = 's'
print('SCISSORS')
Danach wird der Zug des Computers zufällig ausgewählt. Allerdings gibt random.randint() nur Zahlen aus. Daher wird der zurückgegebene Integerwert 1, 2 oder 3 in der Variablen randomNumber abgelegt und dann auf der Grundlage dieses Wertes der String 'r', 'p' oder 's' in computerMove gespeichert. Anschließend wird die Wahl des Computers angezeigt.
# Zeigt Sieg/Niederlage/Unentschieden an und speichert das Ergebnis:
if playerMove == computerMove:
print('It is a tie!')
ties = ties + 1
elif playerMove == 'r' and computerMove == 's':
print('You win!')
wins = wins + 1
elif playerMove == 'p' and computerMove == 'r':
print('You win!')
wins = wins + 1
elif playerMove == 's' and computerMove == 'p':
print('You win!')
wins = wins + 1
elif playerMove == 'r' and computerMove == 'p':
print('You lose!')
losses = losses + 1
elif playerMove == 'p' and computerMove == 's':
print('You lose!')
losses = losses + 1
elif playerMove == 's' and computerMove == 'r':
print('You lose!')
losses = losses + 1
Abschließend vergleicht das Programm die Strings in playerMove und computerMove und zeigt das Ergebnis auf dem Bildschirm an. Außerdem erhöht es je nach Ausgang den Wert der Variablen wins, losses oder ties. Wenn die Ausführung am Ende angekommen ist, springt sie wieder zurück zum Anfang der Hauptschleife, sodass eine neue Runde beginnen kann.
Zusammenfassung
Mithilfe von Ausdrücken, die zu True oder False ausgewertet werden (sogenannten Bedingungen), können Sie Programme schreiben, die entscheiden, welcher Code ausgeführt und welcher übersprungen werden soll. Es ist auch möglich, Code in einer Schleife wiederholt auszuführen, während eine bestimmte Bedingung True ist. Wenn Sie eine Schleife abbrechen oder innerhalb einer Schleife zum Anfang zurückkehren müssen, können Sie die Anweisung break bzw. continue nutzen.
Diese Flusssteuerungsanweisungen erlauben es Ihnen, viel intelligentere Programme zu schreiben. Es gibt jedoch noch eine andere Form von Flusssteuerung, indem Sie eigene Funktionen schreiben. Sie bilden das Thema des nächsten Kapitels.
Wiederholungsfragen
1 Welche beiden Werte gibt es für den booleschen Datentyp? Wie werden sie geschrieben?
2 Wie heißen die drei booleschen Operatoren?
3 Schreiben Sie die Wahrheitswertetafeln aller booleschen Operatoren auf (also die Tabellen aller möglichen Kombinationen der booleschen Werte für diese Operatoren und das jeweilige Ergebnis).
4 Wie lauten die Ergebnisse der folgenden Ausdrücke?(5 > 4) and (3 == 5)not (5 > 4)(5 > 4) or (3 == 5)not ((5 > 4) or (3 == 5))(True and True) and (True == False)(not False) or (not True)
5 Wie heißen die sechs Vergleichsoperatoren?
6 Was ist der Unterschied zwischen dem Gleichheits- und dem Zuweisungsoperator?
7 Was ist eine Bedingung? Wann wird sie verwendet?
8 Bezeichnen Sie die drei Blöcke in dem folgenden Code:spam = 0if spam == 10:print('eggs')if spam > 5:print('bacon')else:print('ham')print('spam')print('spam')
9 Schreiben Sie Code, der Hello ausgibt, wenn in spam der Wert 1 gespeichert ist, Howdy, wenn spam den Wert 2 hat, und Greetings! bei jedem anderen Wert von spam.
10 Welche Tastenkombination können Sie drücken, wenn ein Programm in einer Endlosschleife gefangen ist?
11 Was ist der Unterschied zwischen break und continue?
12 Was ist der Unterschied zwischen range(10), range(0, 10) und range(0, 10, 1) in einer for-Schleife?
13 Schreiben Sie ein kurzes Programm, das die Zahlen von 1 bis 10 mithilfe einer for-Schleife ausgibt. Schreiben Sie dann ein Programm, das die СКАЧАТЬ