Ein erstes Programm

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Abschnitt wird die Erstellung Ihres ersten Programms, das Ausführen des Interpreters und einige grundlegende Debugging-Methoden behandelt.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") subgraph Lab Skills python/comments -.-> lab-132701{{"Ein erstes Programm"}} python/python_shell -.-> lab-132701{{"Ein erstes Programm"}} python/conditional_statements -.-> lab-132701{{"Ein erstes Programm"}} python/for_loops -.-> lab-132701{{"Ein erstes Programm"}} python/while_loops -.-> lab-132701{{"Ein erstes Programm"}} python/lists -.-> lab-132701{{"Ein erstes Programm"}} python/tuples -.-> lab-132701{{"Ein erstes Programm"}} python/build_in_functions -.-> lab-132701{{"Ein erstes Programm"}} python/standard_libraries -.-> lab-132701{{"Ein erstes Programm"}} end

Ausführen von Python

Python-Programme laufen immer innerhalb eines Interpreters.

Der Interpreter ist eine "konsolenbasierte" Anwendung, die normalerweise von einer Befehlsshell ausgeführt wird.

python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Erfahrene Programmierer haben normalerweise keine Probleme, den Interpreter auf diese Weise zu verwenden, aber es ist für Einsteiger nicht so nutzerfreundlich. Möglicherweise verwenden Sie eine Umgebung, die eine andere Schnittstelle zu Python bietet. Das ist in Ordnung, aber das Lernen, wie man die Python-Konsole ausführt, ist immer noch eine nützliche Fähigkeit, die man kennen sollte.

Interaktiver Modus

Wenn Sie Python starten, erhalten Sie einen interaktiven Modus, in dem Sie experimentieren können.

Wenn Sie beginnen, Anweisungen einzugeben, werden diese sofort ausgeführt. Es gibt keinen Editier-/Kompilier-/Ausführungs-/Debug-Zyklus.

>>> print('hello world')
hello world
>>> 37*42
1554
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>>

Dieser sogenannte read-eval-print-loop (oder REPL) ist sehr nützlich für das Debugging und die Exploration.

STOP: Wenn Sie nicht herausfinden können, wie Sie mit Python interagieren sollen, halten Sie an, was Sie tun, und finden Sie heraus, wie es geht. Wenn Sie eine IDE verwenden, kann es hinter einer Menüoption oder einem anderen Fenster versteckt sein. Viele Teile dieses Kurses gehen davon aus, dass Sie mit dem Interpreter interagieren können.

Lassen Sie uns die Elemente des REPL genauer betrachten:

  • >>> ist der Interpreter-Prompt zum Starten einer neuen Anweisung.
  • ... ist der Interpreter-Prompt zum Fortsetzen einer Anweisung. Geben Sie eine leere Zeile ein, um das Tippen zu beenden und das Eingetippte auszuführen.

Der ...-Prompt kann je nach Umgebung angezeigt werden oder auch nicht. Für diesen Kurs wird er als Leerzeichen dargestellt, um das Kopieren/Einfügen von Codesamples zu erleichtern.

Das Unterstrich-Zeichen _ enthält das letzte Ergebnis.

>>> 37 * 42
1554
>>> _ * 2
3108
>>> _ + 50
3158
>>>

Dies gilt nur im interaktiven Modus. Sie verwenden _ niemals in einem Programm.

Erstellen von Programmen

Programme werden in .py-Dateien gespeichert.

## hello.py
print('hello world')

Sie können eine hello.py-Datei im Verzeichnis /home/labex/project mit Ihrem Lieblings-Texteditor erstellen.

Ausführen von Programmen

Um ein Programm auszuführen, führen Sie es im Terminal mit dem Befehl python aus. Beispielsweise in der Kommandozeile von Unix:

$ python hello.py
hello world
bash %

Oder von der Windows-Shell:

C:\SomeFolder>hello.py
hello world

C:\SomeFolder>c:\python36\python hello.py
hello world

Hinweis: Unter Windows müssen Sie möglicherweise den vollen Pfad zum Python-Interpreter angeben, wie z. B. c:\python36\python. Wenn Python jedoch auf die übliche Weise installiert ist, können Sie möglicherweise einfach den Namen des Programms eingeben, wie z. B. hello.py.

Ein Beispielprogramm

Lösen wir folgendes Problem:

Eines Morgens gehst du hinaus und legst einen Dollar-Schein auf den Bürgersteig neben dem Sears Tower in Chicago. Danach gehst du jeden Tag hinaus und verdoppelt die Anzahl der Scheine. Wie lange dauert es, bis der Stapel von Scheinen die Höhe des Turms überschreitet?

Hier ist eine Lösung, um eine sears.py-Datei im Verzeichnis /home/labex/project zu erstellen:

## sears.py
bill_thickness = 0.11 * 0.001 ## Meter (0.11 mm)
sears_height = 442 ## Höhe (Meter)
num_bills = 1
day = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Anzahl der Tage', day)
print('Anzahl der Scheine', num_bills)
print('Endhöhe', num_bills * bill_thickness)

Wenn Sie es ausführen, erhalten Sie die folgende Ausgabe:

$ python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
Anzahl der Tage 23
Anzahl der Scheine 4194304
Endhöhe 461.37344

Anhand dieses Programms können Sie eine Reihe wichtiger Kernkonzepte von Python lernen.

Anweisungen

Ein Python-Programm ist eine Sequenz von Anweisungen:

a = 3 + 4
b = a * 2
print(b)

Jede Anweisung wird durch eine neue Zeile beendet. Die Anweisungen werden nacheinander ausgeführt, bis der Code am Ende der Datei erreicht ist.

Kommentare

Kommentare sind Text, der nicht ausgeführt wird.

a = 3 + 4
## Dies ist ein Kommentar
b = a * 2
print(b)

Kommentare werden durch # gekennzeichnet und gehen bis zum Ende der Zeile.

Variablen

Eine Variable ist ein Name für einen Wert. Sie können Buchstaben (Klein- und Großbuchstaben) von a bis z verwenden. Auch das Unterstrich-Zeichen _ ist erlaubt. Zahlen können ebenfalls Teil des Namens einer Variable sein, aber nicht als erstes Zeichen.

height = 442 ## gültig
_height = 442 ## gültig
height2 = 442 ## gültig
2height = 442 ## ungültig

Typen

Variablen müssen nicht mit dem Typ des Werts deklariert werden. Der Typ ist mit dem Wert auf der rechten Seite assoziiert, nicht mit dem Namen der Variable.

height = 442           ## Eine Ganzzahl
height = 442.0         ## Gleitkommazahl
height = 'Really tall' ## Ein String

Python ist dynamisch typisiert. Der wahrgenommene "Typ" einer Variable kann sich während der Ausführung eines Programms ändern, je nachdem, welchen Wert ihr aktuell zugewiesen ist.

Groß-/Kleinschreibung

Python ist groß-/kleinschreibungssensibel. Groß- und Kleinbuchstaben werden als unterschiedliche Zeichen betrachtet. Dies sind alle verschiedene Variablen:

name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'

Sprachanweisungen sind immer in Kleinbuchstaben geschrieben.

while x < 0:   ## OK
WHILE x < 0:   ## FEHLER

Schleifen

Die while-Anweisung führt eine Schleife aus.

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Anzahl der Tage', day)

Die eingerückten Anweisungen unterhalb der while werden solange ausgeführt, wie der Ausdruck nach der while true ist.

Einrückung

Die Einrückung wird verwendet, um Gruppen von Anweisungen anzuzeigen, die zusammengehören. Betrachten Sie das vorherige Beispiel:

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Anzahl der Tage', day)

Die Einrückung gruppiert die folgenden Anweisungen zusammen als die wiederholenden Operationen:

    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

Da die print()-Anweisung am Ende nicht eingerückt ist, gehört sie nicht zur Schleife. Die Leerzeile dient nur der Lesbarkeit. Sie hat keinen Einfluss auf die Ausführung.

Einrückung - Beste Praktiken

  • Verwenden Sie Leerzeichen statt Tabulatoren.
  • Verwenden Sie 4 Leerzeichen pro Einrückungsebene.
  • Verwenden Sie einen Python-fähigen Editor.

Python erfordert lediglich, dass die Einrückung innerhalb desselben Blocks konsistent ist. Beispielsweise ist dies ein Fehler:

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
        day = day + 1 ## FEHLER
    num_bills = num_bills * 2

Bedingungen

Die if-Anweisung wird verwendet, um eine bedingte Anweisung auszuführen:

if a > b:
    print('Computer sagt nein')
else:
    print('Computer sagt ja')

Sie können mehrere Bedingungen überprüfen, indem Sie zusätzliche Prüfungen mit elif hinzufügen.

if a > b:
    print('Computer sagt nein')
elif a == b:
    print('Computer sagt ja')
else:
    print('Computer sagt vielleicht')

Ausgeben

Die print-Funktion erzeugt eine einzelne Zeile von Text mit den übergebenen Werten.

print('Hello world!') ## Gibt den Text 'Hello world!' aus

Sie können Variablen verwenden. Der ausgegebene Text wird der Wert der Variable sein, nicht der Name.

x = 100
print(x) ## Gibt den Text '100' aus

Wenn Sie mehr als einen Wert an print übergeben, werden sie durch Leerzeichen getrennt.

name = 'Jake'
print('Mein Name ist', name) ## Gibt den Text 'Mein Name ist Jake' aus

print() fügt immer ein Zeilenumbruch am Ende hinzu.

print('Hello')
print('Mein Name ist', 'Jake')

Dies gibt aus:

Hello
Mein Name ist Jake

Der zusätzliche Zeilenumbruch kann unterdrückt werden:

print('Hello', end=' ')
print('Mein Name ist', 'Jake')

Dieser Code gibt jetzt aus:

Hello Mein Name ist Jake

Benutzereingabe

Um eine Zeile von eingegebener Benutzereingabe zu lesen, verwenden Sie die input()-Funktion:

name = input('Geben Sie Ihren Namen ein:')
print('Ihr Name ist', name)

input gibt eine Aufforderung an den Benutzer aus und gibt ihre Antwort zurück. Dies ist für kleine Programme, Lernübungen oder einfaches Debugging nützlich. Es wird nicht weit verbreitet in echten Programmen verwendet.

pass-Anweisung

Manchmal müssen Sie einen leeren Codeblock angeben. Dazu wird das Schlüsselwort pass verwendet.

if a > b:
    pass
else:
    print('Computer sagt falsch')

Dies wird auch als "keine Aktion" (no-op) -Anweisung bezeichnet. Sie tut nichts. Sie dient als Platzhalter für Anweisungen, die möglicherweise später hinzugefügt werden.

Dies ist die erste Reihe von Übungen, bei denen Sie Python-Dateien erstellen und ausführen müssen. Ab diesem Zeitpunkt wird angenommen, dass Sie Dateien im Verzeichnis ~/project/ bearbeiten. Um Ihnen zu helfen, den richtigen Ort zu finden, wurden eine Reihe von leeren Startdateien mit den entsprechenden Dateinamen erstellt. Suchen Sie nach der Datei bounce.py, die in der ersten Übung verwendet wird.

Übung 1.5: Der springende Ball

Ein Gummiball wird von einer Höhe von 100 Metern fallen gelassen und springt jedes Mal, wenn er den Boden trifft, auf 3/5 der Höhe zurück, von der er gefallen ist. Schreiben Sie ein Programm bounce.py, das eine Tabelle druckt, die die Höhe der ersten 10 Bounces zeigt.

Hier ist eine Lösung:

## bounce.py

height = 100
bounce = 1
while bounce <= 10:
    height = height * (3 / 5)
    print(bounce, round(height, 4))
    bounce += 1

Ihr Programm sollte eine Tabelle erzeugen, die ungefähr so aussieht:

1 60.0
2 36.0
3 21.599999999999998
4 12.959999999999999
5 7.775999999999999
6 4.6655999999999995
7 2.7993599999999996
8 1.6796159999999998
9 1.0077695999999998
10 0.6046617599999998

Hinweis: Sie können die Ausgabe etwas aufräumen, wenn Sie die round()-Funktion verwenden. Versuchen Sie, die Ausgabe auf 4 Stellen zu runden.

1 60.0
2 36.0
3 21.6
4 12.96
5 7.776
6 4.6656
7 2.7994
8 1.6796
9 1.0078
10 0.6047

Übung 1.6: Debugging

Der folgende Codeausschnitt enthält Code aus dem Sears Tower - Problem. Es hat auch einen Fehler darin.

## sears.py

bill_thickness = 0.11 * 0.001    ## Meter (0.11 mm)
sears_height   = 442             ## Höhe (Meter)
num_bills      = 1
day            = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = days + 1
    num_bills = num_bills * 2

print('Anzahl der Tage', day)
print('Anzahl der Scheine', num_bills)
print('Endhöhe', num_bills * bill_thickness)

Kopieren Sie und fügen Sie den obigen Code in ein neues Programm namens sears.py ein. Wenn Sie den Code ausführen, erhalten Sie eine Fehlermeldung, die das Programm zum Abstürzen bringt, wie folgt:

Traceback (most recent call last):
  File "sears.py", line 10, in <module>
    day = days + 1
NameError: name 'days' is not defined

Das Lesen von Fehlermeldungen ist ein wichtiger Teil von Python - Code. Wenn Ihr Programm abstürzt, ist die letzte Zeile der Traceback - Meldung der tatsächliche Grund, warum das Programm abstürzt. Darunter sollten Sie einen Codeausschnitt, dann eine Dateiname - und Zeilennummer - Kennung sehen.

  • Welche Zeile ist der Fehler?
  • Was ist der Fehler?
  • Beheben Sie den Fehler
  • Führen Sie das Programm erfolgreich aus

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Labor "A First Program" abgeschlossen. Sie können in LabEx weitere Labore absolvieren, um Ihre Fähigkeiten zu verbessern.