4. Die Print Funktion

Video link

Video Link für dieses Kapitel.

../../_images/print_snake.svg

Vor diesem Kapitel haben wir in Einrichten Deines Systems unseren Computer für die Programmierung vorbereitet. Dazu haben wir die Programmiersprache Python und eine integrierte Entwicklungsumgebung (IDE) namens PyCharm installiert. Du kannst dir Python als den Motor und PyCharm als die Schnittstelle zum Motor vorstellen.

Im Bereich Versionskontrollsysteme haben wir begonnen, git zu lernen. Versionskontrollsysteme ermöglichen es uns, Codes gemeinsam zu nutzen, in Gruppen an Codes zu arbeiten und Änderungen am Code zu verfolgen. Wir werden dieses Werkzeug verwenden, um deinen Code für jedes Labor, das du in diesem Buch schreiben, zu verfolgen und zu teilen.

In diesem Kapitel werden wir unsere ersten Programme schreiben und dabei das grundlegendste aller Werkzeuge im Werkzeugkasten des Programmierers verwenden, die print Funktion. Diese Funktion tut genau das, was du erwarten würdest–sie druckt auf den Bildschirm.

Während viele Programme grafikbasiert sind, sind reine Textprogramme bei Leuten, die Computer verwalten oder sich mit Datenanalyse beschäftigen, immer noch recht häufig. Selbst für die grafikbasierten Spiele, die wir in diesem Buch entwickeln, wird die print Funktion ein wichtiges Hilfsmittel sein, um unsere Spiele zu verstehen und Fehler zu beseitigen.

Wir sind nicht auf das Drucken auf den Bildschirm beschränkt. Später in Example: Saving High Score werden wir zeigen, wie wir in eine Datei drucken können, um Daten zu speichern. Programme können sogar über eine Netzwerkverbindung drucken, was der Anfang dessen ist, was man braucht, um zu lernen, wie man Web-Programmierung macht.

4.1. Ein „Hello World“ Programm drucken

Video link ../../_images/hello_world.svg

Wir werden eine Funktion verwenden, um Text auf dem Bildschirm auszugeben. Wenn du einen Geometriekurs belegt hast, hast du bereits die Funktionen Sinus (sin) und Kosinus (cos) verwendet. In diesem Kapitel werden wir die Funktion print verwenden.

In der Programmierung verwenden wir Funktionen sehr häufig. Funktionen sind ein grundlegender Baustein in jedem Computerprogramm. Genau wie in der Mathematik beginnen wir bei der Verwendung von Funktionen in der Programmierung mit einem Funktionsnamen, wie z. B. sin, cos und print. Unmittelbar nach dem Funktionsnamen folgt ein Paar Klammern: ( ). Wir setzen jeden Funktions**parameter** innerhalb der Klammern.

Im folgenden Beispiel haben wir eine Funktion, eine Klammer und einen Parameter:

../../_images/function_math.svg

Bei einer sin-Funktion geben wir einen Winkel als Parameter ein. Bei der print Funktion geben wir als Parameter den Text an, den wir ausdrucken wollen:

../../_images/function_python.svg

Text muss in Anführungszeichen eingeschlossen werden, wir werden später im Kapitel Variablen und Ausdrücke erklären, warum.

4.2. Einstieg in unser Programm

Video link

Nachdem wir nun gesehen haben, wie die print Funktion aussieht, wollen wir sie benutzen, um unser erstes Programm zu starten.

Das Programm Hello World ist ein einfaches Programm, das nur „Hello World“ auf den Bildschirm ausgibt. Es ist oft das erste Programm, das ein Programmierer in einer neuen Computersprache erstellt.

Öffne zunächst PyCharm. Durch unsere Arbeit in Einrichten Deines Systems und Versionskontrollsysteme sollten wir PyCharm und unser Projekt bereits einsatzbereit haben. Du solltest in der Lage sein, PyCharm zu starten und ein Fenster wie dieses zu sehen:

../../_images/pycharm_1.png

PyCharm-Fenster bereit für die Codierung.

Klick zuerst auf das Dreieck neben deinem Projektnamen (1), dann auf Testing, (2) und schließlich auf test.py (3).

Bemerkung

Der häufigste Fehler ist hier, dass PyCharm im falschen Ordner geöffnet ist. Vergewissern Sie sich, dass alle Lab-Ordner innerhalb des learn_arcade-Ordners erscheinen. Wenn das nicht der Fall ist, dann wähl das Menü File…Open und wähl deinen Projektordner erneut aus, wie in Ein Projekt in Pycharm öffnen gezeigt. Einmal ausgewählt, solltest du für den Rest des Buches kein File…Open mehr machen müssen.

Sobald du test.py ausgewählt hast, kannst du dein erstes Programm eintippen:

print("Hello World!")

4.3. Unser Programm ausführen

Video link

Nachdem du dein Programm eingegeben hast, klick mit der rechten Maustaste entweder auf print_statements.py oder auf eine beliebige Stelle im Codefenster und wähl Run 'print_statements.py'

../../_images/pycharm_2.png

Klick mit der rechten Maustaste auf dein Programm und wähl dann run.

Du solltest die Ausgabe deines Programms in einem Fenster am unteren Rand deines Computers erscheinen sehen:

../../_images/pycharm_3.png

Ausgabe unseres Hello World-Programms.

4.4. Fehler und Warnungen

Video link ../../_images/crash.svg

Programme funktionieren nicht immer beim ersten Versuch. Tatsächlich tun sie das selten. Als Programmierer führen wir Programme immer und immer wieder aus, bis wir den richtigen Code finden.

Wenn der Computer auf einen Fehler stößt, von dem er nicht weiß, wie er ihn beheben kann, wird er eine Fehlermeldung erzeugen und anhalten. Keine Panik, das ist keine große Sache. Wir werden es beheben.

Zusätzlich zu Fehlern, bei denen das Programm überhaupt nicht läuft, kann Python uns Warnungen anzeigen. Warnungen treten auf, wenn der Code zwar läuft, aber etwas nicht „perfekt“ ist.

4.4.1. Fehler

Video link

Lass uns einen Fehler erzeugen. Ändere die print Funktion so, dass ein großes P verwendet wird: Print.

Print("Hello World!")

Führ das Programm aus. Du solltest so etwas erhalten:

Traceback (most recent call last): File "C:/Users/myusername/Documents/learn_arcade/Scratch Work/print_statements.py", line 1, in Print("Hello World!")NameError: name 'Print' is not definedProcess finished with exit code 1

Es mag verwirrend aussehen, aber Python teilt dir mit, dass es in Zeile 1 deines Programms print_statements.py auf eine Funktion namens Print mit einem großen P gestoßen ist, die aber noch nicht „definiert“ wurde.

Python unterscheidet zwischen Groß- und Kleinschreibung, was bedeutet, dass print mit einem kleinen p und Print mit einem großen P für den Computer so unterschiedlich sind wie Äpfel und Birnen. Die Funktion print mit Kleinbuchstaben ist in die Sprache eingebaut, und Python weiß genau, was damit zu tun ist. Die Print Funktion mit Großbuchstaben ist nicht in die Sprache eingebaut, und Python beschwert sich mit einem NameError, dass es nicht weiß, was diese Funktion ist.

Versuchen wir einen anderen Fehler. Geh zurück zur Verwendung von print mit einem kleingeschriebenen p, aber entferne die Klammern:

print "Hello World"

Wenn du das Programm jetzt ausführst, erhältst du:

File "C:/Users/myusername/Documents/learn_arcade/Scratch Work/print_statements.py", line 1 print "Hello World!" ^SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello World!")?

Dies ist eine andere Art von Fehler, ein Syntaxfehler. Der Begriff Syntax stammt von menschlichen Sprachen, nicht von Computersprachen. Sowohl menschliche Sprachen als auch Computersprachen weisen eine erwartete Struktur auf. Eine Aussage im Englischen kann die Form eines Substantivs gefolgt von einem Verb haben. „Rob läuft.“ ist eine gültige Anweisung, während „Läuft Rob.“ keine ist. Der Computer erwartet, dass ein Funktionsname von Klammern gefolgt wird. Wenn dein Programm diesem Muster nicht folgt, erzeugt es einen Syntaxfehler.

Die Art des Fehlers und die Zeilennummer sind beides wichtige Anhaltspunkte, um das Rätsel zu lösen, was den Fehler verursacht hat.

4.4.2. Warnungen

Video link

Es kann möglich sein, einen Code zu schreiben, der zwar läuft, aber nicht ganz perfekt ist. Nehmen wir zum Beispiel unser Hello World-Programm und fügen ein paar zusätzliche Leerzeichen hinzu:

print ("Hello World!")

Fahre fort und führ das Programm aus. Es sollte ohne Fehler laufen.

Der Python-Standard ist es, keine Leerzeichen zwischen dem Funktionsnamen und der öffnenden Klammer zu haben. Dieser Code ist jedoch „nah genug dran“, dass der Computer das Programm ohne Fehler ausführen kann. Wenn wir im Englischen in einen Laden gehen und fragen: „I’d like to buy one apples please“, ist unser Satz grammatikalisch nicht korrekt. Er ist aber nahe genug, dass jeder die Absicht herausfinden kann.

Warum Warnungen beheben? Beim Finden von Fehlern im Code verbringen Programmierer viel Zeit damit, nach Dingen zu suchen, die nicht passen. Wenn der gesamte Code gleich formatiert ist, ist es einfacher, ihn auf der Suche nach Problemen zu durchsuchen. Jede Inkonsistenz zwingt das Gehirn eines Programmierers dazu, innezuhalten und herauszufinden, ob sie wichtig ist. Die Beseitigung dieser Inkonsistenzen erleichtert die Fehlerbehebung.

Du kannst Warnungen in deinem Code mit PyCharm finden, indem du dir den rechten Rand ansiehst. Jede gelbe Linie ist eine Warnung. Du kannst mit der Maus darüber fahren, um die Details zu erfahren.

../../_images/pycharm_4.png

Warnungen werden durch gelbe Linien auf der rechten Seite des Bildschirms hervorgehoben.

Eine weitere Warnung, auf die du in deinem ersten Programm stoßen könntest, ist, dass der Python-Styleguide besagt, dass alle Programme genau eine Leerzeile am Ende der Datei haben sollen. Wenn du es dir angewöhnst, diese Warnungen zu beheben, wirst du lernen, einen Code zu schreiben, der leichter beizubehalten sein wird.

Bemerkung

Warnungen beziehen sich nicht nur auf den Style. Sie könnten auch eine Warnung über einen Fehler erhalten, der auftreten könnte, bevor Sie das Programm ausführen. Wenn du zum Beispiel eine Zahl an die sin()-Funktion weitergibst, könntest du Code geschrieben haben, der Text statt Zahlen weitergibt.

Schwache Warnungen sind Warnungen, bei denen es meist nur um den Style geht oder die nicht so wahrscheinlich sind, dass sie sich als Fehler herausstellen. Starke Warnungen sind Codes, von denen der Computer glaubt, dass sie wahrscheinlich auf einen Bug hinweisen, der sich als Fehler herausstellen wird.

4.5. Mehrere Druckzeilen

Video link

Wir sind nicht auf eine print Anweisung beschränkt. Wir können mehrere Textzeilen mit mehreren Codezeilen drucken. Lass uns unser „Hello World“-Programm in den klischeehaften Einstieg einer melodramatische Fiktion verwandeln:

print("Es war eine dunkle und stürmige Nacht.")
print("Plötzlich ertönte ein Schuss!")

Deine Ausgabe sollte wie folgt aussehen:

Es war eine dunkle und stürmige Nacht.
Plötzlich ertönte ein Schuss

4.6. Escape Codes

Video link

Wenn Anführungszeichen verwendet werden, um dem Computer den Anfang und das Ende der zu druckenden Textzeichenfolge mitzuteilen, wie druckt ein Programm dann eine Reihe von doppelten Anführungszeichen aus?

Bemerkung

Ein doppeltes Anführungszeichen sind nicht zwei Anführungszeichen.

  • Dies ist ein doppeltes Anführungszeichen: "

  • Das ist ein einfaches Anführungszeichen: '

  • Dies sind zwei doppelte Anführungszeichen: " "

Dieser Code funktioniert nicht:

print("Hi! Das ist ein doppeltes Anführungszeichen: " Wir benutzen es zum drucken.")

Wenn wir versuchen, es auszuführen, erhalten wir einen Syntaxfehler:

File "S:/Webserver/arcade_book/test.py", line 1 print("Hi! Das ist ein doppeltes Anführungszeichen: " Wir benutzen es zum drucken.") ^SyntaxError: invalid syntax

Der Computer sieht sich das Anführungszeichen in der Mitte der Zeichenfolge an und denkt, dass dies das Ende des Textes ist. Dann hat er keine Ahnung, was er mit dem Text nach dem Anführungszeichen machen soll. Er erwartet keinen Text nach einem schließenden Anführungszeichen, so dass wir mit einem Fehler enden.

Es ist notwendig, dem Computer mitzuteilen, dass wir das mittlere doppelte Anführungszeichen als Text behandeln wollen und nicht als ein Anführungszeichen, das die Zeichenkette beendet. Um dies zu tun, müssen wir einen Escape-Code verwenden. Ein Escape-Code ist eine Folge von Zeichen, die verwendet werden kann, um ein ansonsten nicht druckbares Zeichen auszugeben.

Alle Escape-Codes in Python beginnen mit einem Backslash: \. (Ein Backslash lehnt sich nach hinten, ein Schrägstrich / lehnt sich nach vorne.) Der Escape-Code für ein doppeltes Anführungszeichen ist \":

print("Hallo! Dies ist ein doppeltes Anführungszeichen: \" Wir verwenden es zum Drucken.")

Wenn wir diesen Code ausführen, wird der Backslash nicht gedruckt, und es tritt auch kein Fehler auf. Wir erhalten:

Hallo! Dies ist ein doppeltes Anführungszeichen: " Wir verwenden es zum Drucken.

Fast jede Sprache hat Escape-Codes, und viele von ihnen (C, C#, Java) verwenden Backslashes genau wie Python.

Hier ist ein weiteres Beispiel:

print("Audrey Hepburn sagte einmal \"Nothing is impossible. The word itself says 'I'm Possible!'.\"")

Das wird folgendes drucken:

Audrey Hepburn sagt einmal "Nothing is impossible. The word itself says 'I'm Possible!'."

Da der Backslash als Teil eines Escape-Codes verwendet wird, muss der Backslash selbst escaped werden, wenn Sie einen verwenden möchten. Dieser Code funktioniert zum Beispiel nicht korrekt:

print("Die Datei ist in C:\new folder gespeichert")

Warum? Weil \n ein Escape-Code ist. Um den Backslash zu drucken, ist es notwendig, ihn wie folgt zu escapen:

print("Die Datei ist im Ordner C:\\new gespeichert")

Es gibt noch ein paar andere wichtige Escape-Codes, die du kennen solltest. Hier findest du eine Tabelle mit den wichtigen Escape-Codes:

Escape Code

Beschreibung

\"

Einzelnes Zitat

\"

Doppeltes Zitat

\t

Tab

\r

Carriage Return (Abgekürzt als CR, Cursor nach links bewegen)

\n

Linefeed (Abgekürzt als LF, Cursor nach unten bewegen)

Was ist ein „Carriage Return“ und ein „Linefeed“? Versuchen Sie dieses Beispiel:

print("Das\nist\nmein\nBeispiel.")

Die Ausgabe dieses Befehls ist:

Das
ist
mein
Beispiel

Das \n ist ein Zeilenvorschub. Es bewegt den „Cursor“ an die Stelle, an der der Computer den Text eine Zeile nach unten drucken wird. Der Computer speichert den gesamten Text in einer großen, langen Zeile. Er weiß aufgrund der Platzierung der \n-Zeichen, dass er den Text in verschiedenen Zeilen anzeigen muss.

Bevor das Internet alltäglich wurde, waren sich die Computer nicht einig, welche Zeichen sie für Zeilenenden verwenden sollten:

Escape Code

Beschreibung

\r\n

CR+LF: Microsoft Windows

\n

LF: UNIX-basierte Systeme und neuere Macs.

\r

CR: Ältere Mac-basierte Systeme

Unterschiedliche Standards zu haben, war lästig, wenn Computer in einem Netzwerk verbunden waren. Der Post-Internet-Standard ist, \n für Zeilenenden zu verwenden.

Wenn du einen Escape-Code verwendest, setze keine Leerzeichen darum. Tun es nicht, es sei denn, du möchtest, dass Leerzeichen vorhanden sind. Zum Beispiel könnte dieser Code besser aussehen:

print("Das \n ist \n mein \n Beispiel.")

Aber es wird mit zusätzlichen Leerzeichen vor den Wörtern gedruckt:

Das
 ist
 mein
 Beispiel

Nur weil du ein \n verwenden kannst, um mehrere Zeilen in einer einzigen print Anweisung zu drucken, heißt das nicht, dass du das auch tun solltest. Oft ist es einfacher, zwei kurze print Anweisungen zu lesen als eine superlange print Anweisung mit einem Haufen \n-Escape-Codes, die darin eingepfercht sind.

4.7. Dreifache Zitate

Video link

Wenn du einen Textblock hast und nicht viel Zeit damit verbringen möchtest, Anführungszeichen um jede Zeile zu setzen, kannst du dreifache Anführungszeichen verwenden.

print("""Du kannst
mit dreifachen Anführungszeichen
auf mehreren
Zeilen
drucken.""")

Dieser Code wird ausgeführt und wie folgt ausgedruckt:

Du kannst
mit dreifachen Anführungszeichen
auf mehreren
Zeilen
drucken.

Es ist verlockend, zusätzliche Leerzeilen und Einzüge einzufügen. Tu das nicht, es sei denn, du möchtest sie in der endgültigen Ausgabe haben. Der Code in diesem Beispiel sieht zum Beispiel besser aus als der Code im vorherigen Beispiel:

print("""Du kannst
         mit dreifachen Anführungszeichen
         auf mehrere
         Zeilen
         drucken.""")

Aber die Ausgabe enthält all diese zusätzlichen Leerzeichen:

Du kannst
         mit dreifachen Anführungszeichen
         auf mehrere
         Zeilen
         drucken.

4.8. Review

Video link

In diesem Kapitel haben wir gelernt, dass einer der grundlegendsten Bausteine eines Computerprogramms die Funktion ist. Die erste Funktion, die wir kennenlernen, ist die print Funktion, mit der Informationen auf dem Bildschirm ausgegeben werden. Wir haben gelernt, wie man diese Funktion verwendet, indem wir unser erstes Programm eingegeben und ausgeführt haben. Da Programme nicht immer beim ersten Versuch funktionieren, haben wir etwas über Namensfehler und Syntaxfehler gelernt. Wir haben gelernt, dass es für Codes einen Styleguide namens PEP-8 gibt, der festlegt, wie der Code formatiert werden sollte. Das Drucken mehrerer Zeilen ist mit drei Techniken möglich: mehrere Druckanweisungen, Escape-Codes und dreifache Anführungszeichen. Wir haben gelernt, dass Escape-Codes auch zum Drucken von Anführungszeichen und Tabulatorzeichen verwendet werden können.

4.8.1. Übung 1: Erstes Programm

Verwende den Computer, den du in Einrichten Deines Systems eingerichtet hast, und den Satz von Dateien, den du in Versionskontrollsysteme geklont haben, um Ihr erstes Programm in Übung 1: Ein erstes Programm zu erstellen. Lern dann, den Code an das Versionskontrollsystem zu übertragen und ihn abzugeben.