Genießen Sie diesen Titel jetzt und Millionen mehr, in einer kostenlosen Testversion

Nur $9.99/Monat nach der Testversion. Jederzeit kündbar.

Eigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache

Eigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache

Vorschau lesen

Eigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache

Länge:
828 Seiten
5 Stunden
Herausgeber:
Freigegeben:
Sep 18, 2017
ISBN:
9783960883234
Format:
Buch

Beschreibung

Dieses Buch wird Ihnen beibringen, wie man Computerspiele mit der beliebten Python- Programmiersprache entwickelt – auch wenn Sie noch nie zuvor programmiert haben!

Beginnen Sie mit dem Entwurf klassischer Spiele wie Galgenmännchen, einem Zahlenratespiel und Tic-Tac-Toe. Mit fortgeschrittenen Spielen bauen Sie Ihre Programmierkenntnisse weiter aus, beispielsweise mit einer textbasierten Schatzsuche und einem animierten Kollisionsspiel mit Soundeffekten. Dabei lernen Sie grundlegende Konzepte der Programmierung und der Mathematik, die Ihnen helfen, Ihre Spieleprogrammierung auf die nächste Stufe zu heben.

Lernen Sie, wie Sie

• Loops, Variablen und Flusssteuerungsanweisungen in funktionierenden Programmen kombinieren.
• die richtigen Datenstrukturen für die jeweilige Aufgabe einsetzen, also Listen, Dictionarys und Tupel.
• mit dem pygame-Modul Ihre Spiele mit Grafiken und Animation bereichern.
• Benutzereingaben über Tastatur und Maus in Ihren Spielen einsetzen.
• einfache künstliche Intelligenz programmieren, um gegen den Computer zu spielen.
• Kryptografie verwenden, um Text in geheimen Code zu verschlüsseln.
• Ihre Programme debuggen und Fehler aufspüren.

Entdecken Sie mit diesem Buch spielerisch das Potenzial von Python – und programmieren Sie schon bald Ihre eigenen Spiele!
Herausgeber:
Freigegeben:
Sep 18, 2017
ISBN:
9783960883234
Format:
Buch

Über den Autor


Ähnlich wie Eigene Spiele programmieren – Python lernen

Ähnliche Bücher

Ähnliche Artikel

Buchvorschau

Eigene Spiele programmieren – Python lernen - Al Sweigart

programmieren!

1

Die interaktive Shell

Bevor Sie Spiele entwickeln können, müssen Sie erst einige elementare Programmierprinzipien lernen. In diesem Kapitel erfahren Sie daher, wie Sie die interaktive Shell von Python nutzen und grundlegende Rechenoperationen durchführen.

Themen in diesem Kapitel

Operatoren

Integer und Fließkommazahlen

Werte

Ausdrücke

Syntaxfehler

Werte in Variablen speichern

Einfaches Rechnen

Starten Sie IDLE nach der Anleitung im Abschnitt »IDLE starten« in der Einleitung. Als Erstes wollen wir Python nutzen, um einige einfache Rechenaufgaben zu lösen. Die interaktive Shell lässt sich wie ein Taschenrechner benutzen. Geben Sie 2 + 2 heißen kann). Abbildung 1–1 zeigt, wie die Rechenaufgabe in der interaktiven Shell angezeigt wird. Wie Sie sehen, antwortet die Shell mit der Zahl 4.

Abb. 1–1Eingabe von 2 + 2 in die aktive Shell

Diese Rechenaufgabe ist ein einfacher Programmbefehl. Das Pluszeichen weist den Computer an, die beiden Zahlen 2 und 2 zu addieren. Der Computer erledigt diese Aufgabe und gibt in der folgenden Zeile die Zahl 4 aus. Tabelle 1–1 nennt weitere mathematische Symbole, die in Python zur Verfügung stehen.

Tab. 1–1Mathematische Operatoren

Das Minuszeichen subtrahiert Zahlen, das Sternchen multipliziert sie und der Schrägstrich teilt sie. Bei der Verwendung auf diese Weise werden +, –, * und / als Operatoren bezeichnet. Sie weisen Python an, was es mit den Zahlen auf beiden Seiten tun soll.

Integer und Fließkommazahlen

Integer sind ganze Zahlen wie 4, 99 oder 0. Bei Fließkommazahlen dagegen handelt es sich um Dezimalbrüche wie 3.5, 42.1 oder 5.0 (wobei in Programmiersprachen statt des im Deutschen üblichen Kommas ein Punkt verwendet wird). In Python ist 5 ein Integer und 5.0 eine Fließkommazahl.

Diese Zahlen werden als Werte bezeichnet. (Wir werden später noch andere Arten von Werten kennenlernen.) In der Rechenaufgabe, die Sie in die Shell eingegeben haben, sind 2 und 2 Integerwerte.

Ausdrücke

Die Rechenaufgabe 2 + 2 ist ein Beispiel für einen Ausdruck. Wie Abbildung 1–2 zeigt, bestehen Ausdrücke aus Werten (den Zahlen), die durch Operatoren (die Rechenzeichen) verbunden sind, um daraus einen neuen Wert zu bilden, der im Code verwendet werden kann. Computer können Millionen von Ausdrücken in Sekundenschnelle berechnen.

Abb. 1–2Ausdrücke bestehen aus Werten und Operatoren

:

>>> 2+2+2+2+2

10

>>> 8*6

48

>>> 10-5+6

11

>>> 2 +      2

4

Diese Ausdrücke sehen alle wie ganz normale Rechenaufgaben aus. Beachten Sie aber die Leerzeichen in dem Beispiel 2 +2. In Python können Sie beliebig viele Leerzeichen zwischen Werte und Operatoren schreiben. Eingaben in die aktive Shell müssen jedoch immer am Anfang der Zeile beginnen (ohne Leerzeichen davor).

Ausdrücke auswerten

Wenn ein Computer den Ausdruck 10 + 5 verarbeitet und den Wert 15 zurückgibt, so spricht man davon, dass er den Ausdruck auswertet. Das bedeutet, dass der Ausdruck auf einen einzigen Wert reduziert wird. Wenn Sie eine Rechenaufgabe lösen, reduzieren Sie sie damit auch auf einen einzigen Wert, nämlich das Ergebnis. Die Ausdrücke 10 + 5 und 10 + 3 + 2 werden beide zu 15 ausgewertet.

Wenn Python einen Ausdruck auswertet, führt es die Operationen in der gleichen Reihenfolge aus, wie Sie es beim Rechnen tun. Dabei gelten die folgenden Regeln:

Teile des Ausdrucks, die in Klammern stehen, werden zuerst ausgewertet.

Multiplikation und Division erfolgen vor Addition und Subtraktion.

Die Auswertung erfolgt von links nach rechts.

Der Ausdruck 1 + 2 * 3 + 4 ergibt daher 11 und nicht 13, da zuerst 2 * 3 berechnet wird. Lautete die Aufgabe stattdessen (1 + 2) * (3 + 4), würde sich 21 ergeben, da (1 + 2) und (3 + 4) in Klammern sehen und daher vor der Multiplikation ausgewertet werden.

Ausdrücke können eine beliebige Größe aufweisen, werden aber stets zu einem einzigen Wert ausgewertet. Auch einzelne Werte können Ausdrücke sein. So wird beispielsweise der Ausdruck 15 zu dem Wert 15 ausgewertet. Der Ausdruck 8 * 3 / 2 + 2 + 7 - 9 ergibt 21. Dabei erfolgt die Berechnung in den folgenden Schritten:

Der Computer führt zwar alle diese Schritte durch, doch in der interaktiven Shell sehen Sie nichts davon, sondern nur das Ergebnis:

>>> 8 * 3 / 2 + 2 + 7 - 9

12.0

Ausdrücke mit dem Divisionsoperator / werden stets zu einer Fließkommazahl ausgewertet, hier beispielsweise 24 / 2 zu 12.0. Mathematische Operationen, an denen auch nur ein Fließkommawert beteiligt ist, ergeben wiederum Fließkommawerte. In unserem Beispiel wird deshalb 12.0 + 2 zu 14.0 ausgewertet.

Syntaxfehler

Wenn Sie 5 + in die interaktive Shell eingeben, erhalten Sie die folgende Fehlermeldung:

>>> 5 +

SyntaxError: invalid syntax

Das liegt daran, dass 5 + kein Ausdruck ist. Ausdrücke bestehen aus Werten, die durch Operatoren verbunden sind, und der Operator + erwartet einen Wert davor und dahinter. Wenn ein erwarteter Wert fehlt, wird eine Fehlermeldung angezeigt.

SyntaxError bedeutet, dass Python den Befehl nicht versteht, da Sie ihn falsch eingegeben haben. Bei der Programmierung geht es nicht einfach darum, dem Computer Befehle zu erteilen; man muss auch schon genau wissen, wie man diese Befehle auf die richtige Weise gibt!

Machen Sie sich jedoch keine Sorgen über solche Fehler. Durch diese Art falscher Angaben können Sie den Computer nicht beschädigen. Geben Sie den Befehl einfach an der nächsten Eingabeaufforderung (>>>) korrekt in die Shell ein.

Werte in Variablen speichern

Wenn ein Ausdruck zu einem Wert ausgewertet wird, können Sie diesen Wert später nutzen, wenn Sie ihn in einer Variablen speichern. Eine solche Variable können Sie sich als eine Schachtel vorstellen, in der Sie den Wert ablegen.

Eine Zuweisungsanweisung speichert einen Wert in einer Variablen. Geben Sie dazu den Namen der Variablen ein, dann ein Gleichheitszeichen – den sogenannten Zuweisungsoperator – und schließlich den Wert, den Sie speichern wollen:

>>> spam = 15

>>>

Abb. 1–3Variablen fungieren wie Schachteln, in denen Sie Werte aufbewahren können.

drücken, scheint nichts zu passieren. In Python wissen Sie, dass ein Befehl erfolgreich ausgeführt wurde, wenn keine Fehlermeldung erscheint. Es wird einfach wieder die Eingabeaufforderung >>> angezeigt, sodass Sie den nächsten Befehl eingeben können.

Im Gegensatz zu Ausdrücken werden Anweisungen nicht zu einem Wert ausgewertet. Das ist der Grund, aus dem in der nächsten Zeile der interaktiven Shell nach spam = 15 nichts mehr angezeigt wird. Wenn Ihnen nicht ganz klar ist, ob es sich bei einer Ihrer Eingaben um einen Ausdruck oder eine Anweisung handelt, so denken Sie daran, dass Ausdrücke immer zu einem einzelnen Wert ausgewertet werden. Alles andere sind Anweisungen.

In Variablen können Sie Werte festhalten, aber keine Ausdrücke. Betrachten Sie zum Beispiel die Ausdrücke in den Anweisungen spam = 10 + 5 und spam = 10 + 7 - 2. Beide Ausdrücke werden zu 15 ausgewertet, und beide Anweisungen speichern den Wert 15 in der Variablen spam.

Die Beispielvariablen in diesem Kapitel tragen nichtssagende Namen wie spam, eggs und bacon, doch für die Variablen in Ihren Programmen sollten Sie Namen verwenden, die die enthaltenen Daten beschreiben. Stellen Sie sich vor, Sie würden bei einem Umzug alle Kartons einfach mit Sachen beschriften. Sie würden nichts mehr wiederfinden!

Python erstellt die Variable, wenn sie zum ersten Mal in einer Zuweisungsanweisung verwendet wird. Um zu prüfen, ob sich ein Wert in der Variablen befindet, geben Sie den Variablennamen in die interaktive Shell ein:

>>> spam = 15

>>> spam

15

Der Ausdruck spam wird zu dem Wert ausgewertet, der sich in der Variablen spam befindet, also 15.

Variablen können Sie auch in Ausdrücken verwenden. Geben Sie Folgendes in die interaktive Shell ein:

>>> spam = 15

>>> spam + 5

20

Hier haben Sie zunächst den Wert der Variablen spam auf 15 gesetzt, sodass die Eingabe spam + 5 dem Ausdruck 15 + 5 entspricht. Die Auswertung von spam + 5 läuft wie folgt ab:

Es ist nicht möglich, eine Variable schon vor der Zuweisungsanweisung zu verwenden, mit der sie erstellt wird. Sollten Sie das versuchen, so gibt Python die Fehlermeldung NameError aus, da eine Variable des angegebenen Namens noch nicht existiert. Der gleiche Fehler ergibt sich auch, wenn Sie den Variablennamen falsch schreiben:

>>> spam = 15

>>> spma

Traceback (most recent call last):

File , line 1, in

spma

NameError: name 'spma' is not defined

Der Fehler tritt auf, da es nur eine Variable namens spam gibt, aber nicht spma.

Den Wert, der in einer Variablen gespeichert ist, können Sie mit einer weiteren Zuweisungsanweisung ändern. Probieren Sie das folgende Beispiel in der interaktiven Shell aus:

>>> spam = 15

>>> spam + 5

20

>>> spam = 3

>>> spam + 5

8

Wenn Sie zum ersten Mal spam + 5 eingeben, wird der Ausdruck zu 20 ausgewertet, da in spam der Wert 15 gespeichert ist. Dann allerdings geben Sie spam = 3 ein, wodurch der Wert 15 in der »Schachtel« der Variablen gegen den Wert 3 ausgetauscht oder mit ihm überschrieben wird, da eine Variable immer nur einen Wert auf einmal enthalten kann. Der Wert von spam lautet jetzt 3, weshalb der Ausdruck spam + 5 bei der erneuten Eingabe zu 8 ausgewertet wird. Beim Überschreiben wird praktisch der vorherige Wert aus der Variablenschachtel herausgenommen und der neue hineingelegt, wie Abbildung 1–4 illustriert.

Abb. 1–4Der Wert 15 in spam wird durch den Wert 3 überschrieben.

Sie können den Wert in spam sogar dazu verwenden, spam selbst einen neuen Wert zuzuweisen:

>>> spam = 15

>>> spam = spam + 5

>>> spam

20

Die Zuweisungsanweisung spam = spam + 5 bedeutet: »Der neue Wert der Variablen spam ist der alte Wert von spam plus 5.« Um den Wert in spam wiederholt um 5 zu erhöhen, geben Sie Folgendes in die interaktive Shell ein:

>>> spam = 15

>>> spam = spam + 5

>>> spam = spam + 5

>>> spam = spam + 5

>>> spam

30

In der ersten Anweisung dieses Beispiels speichern Sie den Wert 15 in spam. In der nächsten addieren Sie 5 zu dem Wert von spam und weisen den neuen Wert spam + 5, der 20 ergibt, der Variablen spam zu. Wenn Sie das dreimal tun, enthält spam schließlich den Wert 30.

Bis jetzt haben wir uns nur mit einer einzigen Variablen beschäftigt, doch Sie können in Ihren Programmen so viele Variablen verwenden, wie Sie benötigen. Als Beispiel wollen wir den beiden Variablen eggs und bacon unterschiedliche Werte zuweisen:

>>> bacon = 10

>>> eggs = 15

Die Variable bacon enthält jetzt den Wert 10, während sich in eggs der Wert 15 befindet. Jede Variable stellt eine eigene Schachtel mit einem eigenen Wert dar, wie Sie in Abbildung 1–5 sehen.

Abb. 1–5Unterschiedliche Werte in den Variablen bacon und eggs

Geben Sie jetzt spam = bacon + eggs in die interaktive Shell ein und prüfen Sie dann den Wert von spam:

>>> bacon = 10

>>> eggs = 15

>>> spam = bacon + eggs

>>> spam

25

Der Wert in spam beträgt jetzt 25. Bei der Addition von bacon und eggs werden deren Werte addiert, also 10 und 15. Da Variablen Werte enthalten und keine Ausdrücke, wurde spam der Wert 25 und nicht der Ausdruck bacon + eggs zugewiesen. Nachdem Sie mit der Anweisung spam = bacon + eggs den Wert 25 zu spam zugewiesen haben, haben anschließende Änderungen von bacon oder eggs keinen Einfluss auf spam.

Zusammenfassung

In diesem Kapitel haben Sie die Grundlagen zum Schreiben von Python-Programmbefehlen gelernt. Da Computer nicht denken können und nur bestimmte Befehle verstehen, müssen Sie Python genau sagen, was es tun soll.

Ausdrücke sind Werte (wie 2 oder 5), die durch Operatoren (wie + und -) verbunden sind. Python kann Ausdrücke auswerten, wobei sie auf einen einzigen Wert reduziert werden. Werte können Sie auch in Variablen speichern, sodass das Programm sich diese Werte merkt und später verwenden kann.

Es gibt noch mehr Operatoren und Werte in Python. Im nächsten Kapitel lernen Sie weitere Grundprinzipien kennen und schreiben Ihr erstes Programm. Dabei erfahren Sie, wie Sie mit Text in Ausdrücken umgehen. Python ist nicht auf Zahlen beschränkt – es kann weit mehr als ein Taschenrechner!

2

Programme schreiben

Sehen wir uns nun an, was Python alles mit Text anstellen kann. Praktisch alle Programme zeigen den Benutzern Text an, und die Benutzer geben über die Tastatur auch oft Text ein. In diesem Kapitel schreiben Sie Ihr erstes Programm, und dabei kommt beides vor. Sie lernen dabei, wie Sie Text in Variablen speichern können, wie Sie Texte kombinieren und wie Sie sie auf dem Bildschirm anzeigen. Das Programm, das Sie schreiben, zeigt die Begrüßung Hello world! an und fragt den Benutzer nach seinem Namen.

Themen in diesem Kapitel

Strings

Stringverkettung

Datentypen (wie Strings oder Integer)

Programme im Dateieditor schreiben

Programme in IDLE speichern und ausführen

Ausführungsfluss

Kommentare

Die Funktion print()

Die Funktion input()

Unterscheidung zwischen Groß- und Kleinschreibung

Stringwerte

Textwerte werden in Python als Strings bezeichnet. Sie können sie ähnlich verwenden wie Integer- und Fließkommawerte. Unter anderem können Sie Strings auch in Variablen speichern. Im Code steht am Anfang und am Ende eines Stringwerts jeweils ein einfaches Anführungszeichen. Geben Sie den folgenden Code in die interaktive Shell ein:

>>> spam = 'hello'

Die einfachen Anführungszeichen teilen Python mit, wo der String anfängt und wo er endet, aber sie gehören nicht zum eigentlichen Text des Stringwerts. Wenn Sie anschließend spam in die Shell eingeben, wird der Inhalt dieser Variablen angezeigt. Wie Sie bereits wissen, wertet Python zu dem Wert aus, der darin gespeichert ist, in diesem Fall also zu dem String 'hello':

>>> spam = 'hello'

>>> spam

'hello'

Strings können beliebige Zeichen enthalten und beliebig lang sein, wie die folgenden Beispiele zeigen:

'hello'

'Hi there!'

'KITTENS'

'7 apples, 14 oranges, 3 lemons'

'Anything not pertaining to elephants is irrelephant.'

'A long time ago, in a galaxy far, far away...'

'O*&#wY%*&OCfsdYO*&gfC%YO*&%3yc8r2'

Stringverkettung

Ebenso wie Integer- und Fließkommawerte können Sie auch Stringwerte mit Operatoren zu Ausdrücken kombinieren. Wenn Sie zwei Strings mit dem Operator + verbinden, führen Sie eine sogenannte Stringverkettung durch. Geben Sie zur Veranschaulichung 'Hello' + 'World!' in die interaktive Shell ein:

>>> 'Hello' + 'World!'

'HelloWorld!'

Der Ausdruck wird zu einem einzigen Stringwert ausgewertet, nämlich 'HelloWorld!'. Der Ergebnisstring enthält kein Leerzeichen, da in keinem der beiden verketteten Strings ein Leerzeichen vorkam. Anders verhält es sich im folgenden Beispiel:

>>> 'Hello ' + 'World!'

'Hello World!'

Der Operator + wirkt sich auf Strings und Integerwerte unterschiedlich aus, da es sich dabei um verschiedene Datentypen handelt. Alle Werten haben einen Datentyp: der Wert 'Hello' den Datentyp String, der Wert 5 den Typ Integer. Anhand des Datentyps kann Python erkennen, was die Operatoren bei der Auswertung eines Ausdrucks tun sollen. So verkettet der Operator + Strings und addiert Integer- und Fließkommawerte.

Programme im Dateieditor von IDLE schreiben

Bis jetzt haben Sie immer nur einen Befehl nach dem anderen in die interaktive Shell von IDLE eingegeben. Um ein Programm zu schreiben, müssen Sie jedoch mehrere Befehle eingeben, die dann alle auf einen Rutsch ausgeführt werden. Das ist genau das, was Sie als Nächstes tun werden: Sie schreiben Ihr erstes Programm!

Neben dem Interpreter gibt es in IDLE noch den Dateieditor. Um ihn zu öffnen, klicken Sie oben in der interaktiven Shell auf das Menü File und wählen New File. Daraufhin erscheint ein leeres Fenster, in das Sie den Code Ihres Programms eingeben können (siehe Abb. 2–1).

Abb. 2–1Dateieditor (links) und interaktive Shell (rechts)

Die beiden Fenster sehen sich sehr ähnlich, allerdings wird in der interaktiven Shell die Eingabeaufforderung >>> angezeigt, im Dateieditor dagegen nicht.

Das Hello-World-Programm schreiben

Unter Programmierern herrscht die Tradition, dass das jeweils erste Programm den Text Hello world! auf dem Bildschirm ausgibt. Im Folgenden werden Sie nun Ihr Hello-World-Programm schreiben.

Die Zahlen, die am Anfang der Codezeilen stehen, dürfen Sie dabei nicht mit eingeben. Sie sind in diesem Buch nur abgedruckt, um auf einfache Weise auf einzelne Codezeilen verweisen zu können. In der unteren rechten Ecke des Dateieditors wird angezeigt, in welcher Codezeile sich der blinkende Cursor gerade befindet. In Abbildung 2–2 sehen Sie, dass er sich in Zeile 1 (senkrechte Position) und Spalte 0 (waagerechte Position) befindet.

Abb. 2–2In der unteren rechten Ecke des Dateieditors können Sie ablesen, in welcher Zeile sich der Cursor gerade befindet.

Geben Sie den folgenden Text in das neue Fenster des Dateieditors ein. Dies ist der Quellcode des Programms. Er enthält die Befehle, die Python befolgt, wenn Sie das Programm ausführen.

hello.py

1. # Dieses Programm sagt Hello und fragt nach dem Namen.

2. print('Hello world!')

3. print('What is your name?')

4. myName = input()

5. print('It is good to meet you, ' + myName)

IDLE stellt die verschiedenen Arten von Befehlen in unterschiedlichen Farben dar. Wenn Sie den Code fertig eingegeben haben, sieht das Fenster so aus wie in Abbildung 2–3.

Abb. 2–3Der Dateieditor nach der Eingabe des Codes

Vergewissern Sie sich, dass das IDLE-Fenster genau so aussieht.

Das Programm speichern

Nachdem Sie den Quellcode eingegeben haben, speichern Sie ihn, indem Sie auf File > Save As drücken. Abbildung 2–4 zeigt das Speichern-Dialogfeld, das daraufhin geöffnet wird. Geben Sie als Dateiname hello.py ein und klicken Sie auf Save.

Abb. 2–4Das Programm speichern

Speichern Sie Ihre Programme möglichst oft. Falls der Computer abstürzt oder Sie versehentlich IDLE beenden, verlieren Sie dann nicht so viel von Ihrer Arbeit.

Um das zuvor gespeicherte Programm zu laden, klicken Sie auf File > Open. Wählen Sie in dem daraufhin eingeblendeten Fenster die Datei hello.py aus und klicken Sie auf Open. Daraufhin wird das Programm hello.py im Dateieditor geöffnet.

Das Programm ausführen

Nun ist es an der Zeit, das Programm auszuführen. Klicken Sie dazu auf Run > Run Module . Das Programm wird daraufhin in der interaktiven Shell ausgeführt.

Geben Sie Ihren Namen ein, wenn das Programm danach fragt. Diesen Vorgang sehen Sie in Abbildung 2–5.

Abb. 2–5Die interaktive Shell nach der Ausführung von hello.py

, um das Programm ein zweites Mal auszuführen, und geben Sie diesmal einen anderen Namen ein.

Wenn Sie eine Fehlermeldung erhalten, vergleichen Sie Ihren Code mit dem aus diesem Buch. Das können Sie ganz einfach mit dem Diff Tool erreichen, das Sie online auf https://www.nostarch.com/inventwithpython#diff finden. Kopieren Sie Ihren Code im Dateieditor, fügen Sie ihn auf der genannten Webseite ein und klicken Sie auf die Schaltfläche Compare. Das Tool zeigt jegliche Unterschiede zwischen Ihrem Code und dem im Buch an (siehe Abb. 2–6).

Sollten Sie eine NameError-Meldung wie die Folgende erhalten, dann haben Sie nicht Python 3 verwendet, sondern Python 2:

Hello world!

What is your name?

Albert

Traceback (most recent call last):

File C:/Python26/test1.py, line 4, in

myName = input()

File , line 1, in

NameError: name 'Albert' is not defined

Um dieses Problem zu lösen, installieren Sie Python 3.4 und führen das Programm erneut aus (siehe den Abschnitt »Python herunterladen und installieren« in der Einleitung).

Abb. 2–6Das Diff Tool auf https://www.nostarch.com/inventwithpython#diff

So funktioniert das Hello-World-Programm

Jede Codezeile ist ein Befehl, den Python ausführt. Diese Befehle bilden das Programm, vergleichbar mit den einzelnen Schritten in einem Rezept. Python nimmt sich einen Befehl nach dem anderen vor, wobei es am Anfang des Programms beginnt und sich dann weiter vorarbeitet.

Im Folgenden sehen wir uns die einzelnen Codezeilen an, um herauszufinden, was sie jeweils bewirken. Dabei beginnen wir mit Zeile 1.

Kommentare

Die erste Zeile des Hello-World-Programms ist ein Kommentar:

1. # Dieses Programm sagt Hello und fragt nach dem Namen.

Jeglicher Text, der auf ein amerikanisches Nummernzeichen (#) folgt, wird als Kommentar aufgefasst. Das sind Bemerkungen des Programmierers darüber, was der Code bewirkt. Geschrieben werden sie nicht für Python, sondern für Personen, die den Code lesen und verstehen wollen. Bei der Ausführung eines Programms ignoriert Python solche Kommentare. Gewöhnlich stellen Programmierer einen Kommentar ganz an den Anfang des Codes, um den Zweck des Programms zu beschreiben. Der Kommentar in dem Hello-World-Programm erklärt, dass das Programm »Hello« sagt und den Benutzer nach dem Namen fragt.

Funktionen: Miniprogramme innerhalb von Programmen

Eine Funktion ist eine Art von Miniprogramm innerhalb eines Programms. Sie enthält mehrere Befehle, die Python ausführen soll. Das Gute an Funktionen ist, dass Sie nur wissen müssen, was sie tun, aber nicht, wie sie es tun. Im Lieferumfang von Python ist bereits eine Reihe von Funktionen enthalten, von denen wir in dem Hello-World-Programm print() und input() verwenden.

Ein Funktionsaufruf weist Python an, den Code der genannten Funktion auszuführen. Beispielsweise ruft das Hello-World-Programm die Funktion print() auf, die den zwischen den Klammern eingegebenen String auf dem Bildschirm ausgibt.

Die Funktion print()

Die Zeilen 2 und 3 des Hello-World-Programms enthalten Aufrufe von print():

2. print('Hello world!')

3. print('What is your name?')

Der Wert in den Klammern des Funktionsaufrufs wird als Argument bezeichnet. Das Argument des print()-Aufrufs in Zeile 2 ist also 'Hello world!', das des Aufrufs in Zeile 3 dagegen 'What is your name?'. Diese Argumente werden der Funktion übergeben.

Die Funktion input()

In Zeile 4 steht eine Zuweisungsanweisung, die den Variablennamen myName und den Funktionsaufruf input() enthält:

4. myName = input()

Beim Aufruf von input() wartet das Programm darauf, dass der Benutzer Text eingibt. Der Funktionsaufruf wird dann zu diesem Textstring ausgewertet. Funktionsaufrufe können überall dort in Ausdrücken verwendet werden, wo auch ein Wert stehen könnte.

Der Wert, zu dem der Funktionsaufruf ausgewertet wird, ist der sogenannte Rückgabewert. (Statt »der Wert, zu dem ein Funktionsaufruf ausgewertet wird« kann man auch »der Wert, den ein Funktionsaufruf zurückgibt« sagen). Der Rückgabewert von input() ist hier der vom Benutzer eingegebene String, nämlich der Name. Wenn der Benutzer Albert eingibt, wird der Funktionsaufruf input() zu dem String 'Albert' ausgewertet:

Dadurch wird der String 'Albert' in der Variablen myName gespeichert.

Ausdrücke in Funktionsaufrufen

Die letzte Zeile des Hello-World-Programms enthält einen weiteren Aufruf von print():

5. print('It is good to meet you, ' + myName)

Der Ausdruck 'It is good to meet you, ' + myName steht in den Klammern von print(). Da Argumente immer einzelne Werte sind, wertet Python zunächst diesen Ausdruck aus und übergibt dann den resultierenden Wert als Argument. Unter der Annahme, dass in myName der Wert 'Albert' gespeichert ist, läuft die Auswertung wie folgt ab:

Dadurch begrüßt das Programm den Benutzer mit Namen.

Das Ende des Programms

Nach der Ausführung der letzten Zeile endet das Programm. Die Ausführung wird beendet, und Python vergisst alle in den Variablen gespeicherten Werte, auch den String in myName. Wenn Sie das Programm erneut starten und einen anderen Namen eingeben, hält das Programm ihn für Ihren Namen:

Hello world!

What is your name?

Carolyn

It is good to meet you, Carolyn

Denken Sie immer daran, dass der Computer genau das tut, was Sie ihm befehlen. Computer befolgen stumpf jegliche Befehle, die Sie ihnen geben. Sie kümmern sich nicht darum, ob Sie Ihren richtigen Namen, den Namen einer anderen Person oder irgendetwas Albernes eingeben. Was auch immer Sie eingeben, der Computer behandelt es auf dieselbe Weise:

Hello world!

What is your name?

poop

It is good to meet you, poop

Variablennamen

Es lässt sich leichter nachvollziehen, wie Ihr Programm funktioniert, wenn Sie den Variablen beschreibende Namen geben. Wir hätten die Variable myName auch abrahamLincoln oder nAmE nennen können, ohne dass sich an der Ausführung durch Python irgendetwas geändert hätte, aber diese Namen sagen nichts darüber aus, was für Informationen in der Variablen gespeichert sind. Wie schon in Kapitel 1 erwähnt, wäre es alles andere als hilfreich, bei einem Umzug sämtliche Kartons mit Sachen zu beschriften. Bei den Beispielen zur interaktiven Shell haben wir Variablennamen wie spam, eggs und bacon verwendet, da die Namen in diesen Fällen keine Rolle spielen. Sämtliche Variablen in den Programmen in diesem Buch tragen jedoch beschreibende Namen, und so sollten Sie es in Ihren Programmen auch halten.

Bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden, weshalb spam, SPAM, Spam und sPAM in Python vier verschiedene Variablen mit jeweils eigenen Werten sind. Es ist jedoch äußerst ungünstig, in einem Programm Variablen zu verwenden, deren Namen sich nur durch die Groß- und Kleinschreibung unterscheiden. Verwenden Sie stattdessen aussagekräftige Namen.

Variablennamen werden gewöhnlich in Kleinbuchstaben geschrieben. Wenn sie aus mehr als einem Wort bestehen, ist es sinnvoll, die Anfangsbuchstaben der einzelnen Wörter außer dem ersten groß zu schreiben. So lässt sich beispielsweise der Variablenname whatIHadForBreakfastThisMorning besser lesen als whatihadforbreakfastthismorning. Diese Form von Binnenmajuskeln wird auch als Camel-Case bezeichnet (da das Auf und Ab an Kamelhöcker erinnert) und macht den Code besser lesbar. Abgesehen davon bevorzugen Programmierer kürzere Variablennamen, etwa breakfast oder foodThisMorning statt whatIHadForBreakfastThisMorning, was den Code ebenfalls verständlicher macht. Dies sind sogenannte Konventionen – keine zwingenden, aber übliche Vorgehensweisen bei der Programmierung in Python.

Zusammenfassung

Mithilfe von Strings und Funktionen können Sie interaktive Programme schreiben, da Text das wichtigste Medium ist, über das Benutzer und Computer miteinander kommunizieren. Vom Benutzer eingegebenen Text rufen Sie mit der Funktion input() ab, und um Text auf dem Bildschirm anzuzeigen, verwenden Sie die Funktion print().

Strings sind einfach nur Werte eines neuen Datentyps. Alle Werte haben einen Datentyp, der unter anderem beeinflusst, wie der Operator + funktioniert.

Funktionen dienen dazu, komplizierte Befehle in Programmen auszuführen. Python wird mit vielen vorgefertigten Funktionen geliefert, die Sie in diesem Buch kennenlernen werden. Überall dort, wo in einem Ausdruck ein Wert stehen kann, lässt sich auch ein Funktionsaufruf verwenden.

Bis jetzt wurden bei der Ausführung die einzelnen Programmschritte einer nach dem anderen abgearbeitet. In Kapitel 3 erfahren Sie jedoch, wie Sie ein Programm noch auf andere Weise ausführen können als in einer Reihe vom Anfang bis zum Ende. Wenn Sie diese Technik beherrschen, sind Sie bereit, um Spiele zu entwickeln!

3

Zahlen raten

In diesem Kapitel schreiben Sie ein Zahlenratespiel (»Guess The Number«). Der Computer denkt sich eine Geheimzahl von 1 bis 20 aus und bittet den Benutzer, sie zu erraten. Nach jedem Versuch teilt der Computer dem Benutzer mit, ob die eingegebene Zahl zu hoch oder zu niedrig war. Der Benutzer gewinnt, wenn er die Zahl mit sechs Versuchen erraten kann.

Dieses Spiel ist zum Lernen sehr gut geeignet, da das Programm dafür sehr kurz ist, aber viele Programmierprinzipien abdeckt. So lernen Sie dabei, wie Sie Werte in einen anderen Datentyp umwandeln und wann Sie das tun müssen. Da es sich bei dem Programm um ein Spiel handelt, werden wir den Benutzer von nun an den Spieler nennen.

Themen in diesem Kapitel

import-Anweisungen

Module

Die Funktion randint()

for-Anweisungen

Blöcke

Die Funktionen str(), int() und float()

Boolesche Werte

Vergleichsoperatoren

Bedingungen

Der Unterschied zwischen = und ==

if-Anweisungen

break-Anweisungen

Ein Beispieldurchlauf des Zahlenratespiels

Das folgende Listing zeigt, was ein Spieler angezeigt bekommt, wenn er das Zahlenratespiel ausführt. Die Eingaben des Spielers sind dabei durch Fettdruck gekennzeichnet.

Hello! What is your name?

Albert

Well, Albert, I am thinking of a number between 1 and 20.

Take a guess.

10

Your guess is too high.

Take a guess.

2

Your guess is too low.

Take a guess.

4

Good job, Albert! You guessed my number in 3 guesses!

Der Quellcode für das Zahlenratespiel

Klicken Sie auf File > New Windows, um ein neues Dateieditorfenster zu öffnen. Geben Sie den folgenden Quellcode in das leere Fenster ein und speichern Sie ihn als guess.pyaus.

Achten Sie bei der Eingabe genau auf die Leerzeichen. Einige Zeilen müssen um vier oder acht Leerzeichen eingerückt werden.

Falls Sie eine Fehlermeldung erhalten, vergleichen Sie den eingegebenen Code mit dem Code aus dem Buch. Dazu können Sie das Diff Tool auf https://www.nostarch.com/inventwithpython#diff verwenden.

guess.py

1. # Dies ist ein Zahlenratespiel.

2. import random

3.

4. guessesTaken = 0

5.

6. print('Hello! What is your name?')

7. myName = input()

8.

9. number = random.randint(1, 20)

10. print('Well, ' + myName + ', I am thinking of a number between 1

and 20.')

11.

12. for guessesTaken in range(6):

13.    print('Take a guess.') # Vier Leerzeichen vor print

14.    guess = input()

15.    guess = int(guess)

16.

17.    if guess < number:

18.        print('Your guess is too low.') # Acht Leerzeichen vor print

19.

20.    if guess > number:

21.        print('Your guess is too high.')

22.

23.    if guess == number:

24.        break

25.

26. if guess == number:

27.    guessesTaken = str(guessesTaken + 1)

28.    print('Good job, ' + myName + '! You guessed my number in ' +

guessesTaken + ' guesses!')

29.

30. if guess != number:

31.    number = str(number)

32.    print('Nope. The number I was thinking of was ' + number + '.')

Das Modul random importieren

Sehen wir uns zunächst die beiden ersten Zeilen des Programms an:

1. # Dies ist ein Zahlenratespiel.

2. import random

Die erste Zeile ist ein Kommentar, wie Sie

Sie haben das Ende dieser Vorschau erreicht. Registrieren Sie sich, um mehr zu lesen!
Seite 1 von 1

Rezensionen

Was die anderen über Eigene Spiele programmieren – Python lernen denken

0
0 Bewertungen / 0 Rezensionen
Wie hat es Ihnen gefallen?
Bewertung: 0 von 5 Sternen

Leser-Rezensionen