Programmieren mit Python

Werbung
Programmieren mit Python
Programmierung ist die Kunst, dass ein Computer das macht, was du willst.
Kurz und bündig
Python ist eine Programmiersprache (Skriptingsprache), die als Einstieg in die Welt der Programmierung und auch für komplexere Programme geeignet ist. Entwickelt wurde sie (benannt
nach Monty Python) Anfang der 90er Jahre vom Niederländer Guido van Rossum.
Python ist Open Source und Freeware, läuft auf sehr vielen Computerplattformen und leitet den
Programmierer zu strukturiertem Programmieren.
Die Sprache hat eine elegante und (relativ) einfache Syntax und kann systematisch durch Module
erweitert werden, welche entweder in Python oder aber auch in einer kompilierten Sprache wie C
oder C++ geschrieben werden können.
Einrückungen:
Eine Besonderheit von Python ist - und dies unterscheidet die Sprache auch von allen anderen -,
dass Blöcke durch Einrückung gekennzeichnet werden. Ein Block ist eine Folge von zusammengehörenden Anweisungen (Befehle). Für Python heißt das nun, dass zusammengehörige Anweisungen auf der gleichen Einrückungsebene stehen müssen, zum Beispiel:
a = 3
if a > 0:
print “Die Zahl ist positiv”
else:
print "Das war's"
Werte und Variablen
Wie jede halbwegs vernünftige Programmiersprache so besitzt auch Python die Möglichkeit mit
Variablen und Zuweisungen zu arbeiten. Der wohl häufigste gebrauchte Befehl in Python ist die
Zuweisung, d.h. wir weisen einer Variablen einen Wert zu.
Variablen sind Platzhalter denen ein Wert zugewiesen werden kann, der im Laufe des Programms auch verändert werden kann und auf dessen Inhalt (Wert) wir mit dem Variablennamen
zugreifen können.
Einfacher gesagt: Variablen sind Schubladen in die wir beliebigen Inhalt füllen können. Diesen
Inhalt können wir verändern (hinzufügen, wegnehmen usw.).
Variablennamen:
Der Name einer Variablen kann (fast) frei gewählt werden. Es gelten die folgenden Regeln:




Variablen beginnen mit einem Buchstaben oder dem Unterstrich (_) Zeichen. Darauf
kann eine beliebige Kombination aus Buchstaben, Zahlen oder Unterstrichen folgen.
Der Name darf nicht mit einer Zahl beginnen!
Variablennamen dürfen nicht einem reservierten Wort der Programmiersprache entsprechen.
Python ist «case sensitive», das heißt, es wird zwischen Groß- und Kleinschreibung unterschieden. Variablennamen, Anweisungen usw. sollten immer genau so geschrieben
werden wie vordefiniert.
1/9
Programmieren mit Python
Zuweisungen:
Eine Variable ist ein Name der einen Wert repräsentiert. Durch die Zuweisung wird eine Variable angelegt und ihr ein Wert zugewiesen.
botschaft = "Wie geht es dir?"
zahl = 17
pi = 3.14159
Hier haben wir drei Variablen, denen jeweils ein anderer Wert (mit anderem Datentyp) zugewiesen wird. Im ersten Beispiel weisen wir der Variablen botschaft den Wert Wie geht es dir?
in Form einer Zeichenkette (string) zu. Im zweiten Fall der Variable zahl den (Ganz-) Zahlwert
17 (integer) und im dritten Beispiel der Variablen pi den Fließkommawert 3.14159
Werte und Typen:
Ein Wert ist der eigentlich Inhalt, der in einer Variablen gespeichert wird. Werte können auch
vereinfacht als die eigentlichen Daten angesehen werden, die wir verarbeiten wollen, d.h. ohne
Werte keine Datenverarbeitung. Und wo keine Daten sind braucht es auch kein Programm. Werte können Zahlen, Fließkommazahlen, Zeichenketten, Objekte usw. sein. Eine Pythonvariable
hat keinen festgelegten Typ und es muss ihr auch kein solcher zugewiesen werden, es können ihr
alle verschiedenen Datentypen zugewiesen werden. Und im Verlaufe des Programms kann auch
der Datentyp des Inhalts gewechselt werden durch simple Zuweisung eines anderen Werts.
Kommentare, Ein- und Ausgabe
Kommentare:
Kommentare sind ein wichtiges Hilfsmittel um den Programmcode zu dokumentieren. In Python
werden Kommentare mit dem Hashzeichen # gekennzeichnet, d.h. alles von diesem Zeichen an
bis zum Ende der Zeile gilt als Kommentar und wird nicht ausgeführt.
Als Ausnahme gilt der Fall, wenn das Kommentarzeichen innerhalb einer Zeichenkette steht.
Dann ist es ein Zeichen der Zeichenkette und wird nicht als Kommentar gewertet.
# Zahl 5 der Variablen x zuweisen
x = 5
y = 3
# Zahl 3 der Variablen y zuweisen
hallo = "# Das ist kein Kommentar"
Ein- und Ausgabe:
Praktisch jedes Programm gibt irgendetwas, z.B. das Resultat einer Berechnung, auf dem Bildschirm aus. In Python steht uns hierfür die Anweisung print() zur Verfügung, die Text oder
Werte von Variablen auf dem Bildschirm ausgibt.
Um Daten vom Benutzer anzufordern gibt es in Python die zwei Anweisungen:
input()
raw_input()
Die Funktion input() nimmt nur Zahlenwerte entgegen, die Funktion raw_input() nur Zeichenketten. Es ist also wichtig, dies bei der Programmentwicklung zu berücksichtigen, sonst
kann es zu unangenehmen Fehlern kommen.
2/9
Programmieren mit Python
# Umrechnung Euro in CHF
kurs = 1.4865
print "Bitte geben Sie einen Betrag in Euro ein:"
eurobetrag = input()
chfbetrag = kurs * eurobetrag
print "Dies sind in CHF:"
print chfbetrag
Verkettung von Ausgaben:
Die Anweisung print() erlaubt uns auch mehrerer Ausgaben in einer Zeile zu machen. Die
einzelnen Teile der Ausgabe werden durch Kommata voneinander getrennt. Unser oben stehendes Programm lässt sich also folgendermaßen ändern:
# Umrechnung Euro in CHF
kurs = 1.4865
print "Bitte geben Sie einen Betrag in Euro ein:"
eurobetrag = input()
chfbetrag = kurs * eurobetrag
print "Dies sind in CHF:", chfbetrag
Kommentierte Eingabe:
Die Funktionen input() und raw_input() können auch noch einen optionalen Parameter entgegen nehmen. Dabei handelt es sich um eine Zeichenkette, die einen Kommentar zur Eingabe
beinhalten sollte. Dies erspart eine print-Anweisung.
# Umrechnung Euro in CHF
kurs = 1.4865
eurobetrag = input("Bitte geben Sie einen Betrag in Euro ein:")
chfbetrag = kurs * eurobetrag
print "Dies sind in CHF:", chfbetrag
Datentypen
Wie wir gesehen haben können Werte/Daten einen Typ haben, z.B. Ganzzahl, Fließkommazahl,
Zeichenkette usw. Diese Typen nennt man Datentypen.
Ausdrücke und Operatoren
Ein Ausdruck wird durch folgendes Kennzeichen definiert: Er besitzt einen Wert. Im einfachsten
Fall besteht ein Ausdruck lediglich aus einem Literal oder einer Variablen. Dann entspricht der
Wert des Ausdrucks dem Wert des Literals bzw. der Variablen.
Literale und Variablen können aber auch durch Literale und Variablen verknüpft werden.
Dadurch entstehen zusammengesetzte Ausdrücke. Der Wert eines zusammengesetzten Ausdrucks kann entweder ein Zahlen-, ein Zeichenketten- oder ein Wahrheitswert sein.
Ausdruck
Art
Wert
Typ
7
true
-7
7 + 5
7 > 5
x = (9 + 12) / 7
einfach
einfach
zusammengesetzt
zusammengesetzt
zusammengesetzt
zusammengesetzt
3/9
7
true
-7
12
true
3
Zahl
Wahrheitswert
Zahl
Zahl
Wahrheitswert
Zahl
Programmieren mit Python
Operatoren:
Operatoren verknüpfen Literale, Variablen oder Teilausdrücke zu größeren Ausdrücken. Operatoren unterscheiden sich in der Anzahl der Operatoren
Arithmetische Operatoren
haben als Operanden Zahlenwerte und liefern ebenfalls einen Zahlenwert als Ergebnis. Bei Verwendung mehrer arithmetischer Operatoren gilt die Regel: Punkt- vor Strichrechnung, d.h.
Multiplikation und Division werden vor Addition und Subtraktion ausgeführt, bei gleicher Hierarchiestufe gilt Abarbeitung von links nach rechts.
Operator
Syntax
Beispiel
Wert
Grundrechenarten
+
summand1 + summand2
7+4
11
minuend1 - minuend2
7-4
3
*
faktor1 * faktor2
7*4
28
Division: hier gibt es ein paar Besonderheiten
/
dividend / divisor
7/4
1 (!!!!!)
/
dividend / divisor
7 / 4.0
1.75
//
dividend // divisor (Restlose Division)
7 // 4
1
ab Python 3.0 wird / zur echten Division umgewandelt d.h. auch bei Ganzzahlendivision wird ein
Rest ausgegeben
/
dividend / divisor
7/4
1.75
Modulo: liefert den Rest einer Ganzzahldivision
%
dividend % divisor
7%4
3
Potenz:
**
basis ** faktor
12 ** 6
2985984
Funktionen für Zahlenwerte:
Operator
abs(x)
int(x)
long(x)
float(x)
pow(x,y)
Funktion
Betrag von x
Umwandlung von x in einen Integerwert
Umwandlung von x in einen Longintegerwert
Umwandlung von x in eine Fließkommazahl
Potenz y zur Basis x
Beispiel
abs(-12)
int(12.6)
long(12.6)
float(12)
pow(12,6)
Wert
12
12
12L
12.0
2985984
Logische Operatoren
Logische Operatoren haben als Operanden Wahrheitswerte und liefern ebenfalls Wahrheitswerte
als Ergebnis. Mit Hilfe der logischen Operatoren UND (AND), ODER (OR) und NICHT (NOT)
können mehrere Bedingungen miteinander verknüpft werden.
Bitweise Operatoren
Bitweise Operatoren sind vor allem für Low-Level Programmierer interessant, lassen sich hierdurch doch Zahlenwerte direkt im Speicherbereich manipulieren.
4/9
Programmieren mit Python
Vergleichs-Operatoren
Binäre Operatoren die als Ergebnis einen Wahrheitswert liefern. Die beiden Operanden werden
auf Gleichheit, Ungleichheit oder der Erfüllung einer Ordnungsrelation hin überprüft. Die Operanden der Vergleichsoperatoren müssen den gleichen Datentypen besitzen.
Operator
Gleichheit
==
Ungleichheit
!=
Syntax
Beispiel
Wert
operand1 == operand2
true == false
1 == 1
"Rose" == "Tulpe"
false
true
false
operand1 != operand2
true != false
1 != 1
"Rose" != "Tulpe"
true
false
true
objekt1 is objekt1
objekt1 is not objekt2
1
1
Gleich-/Ungleichheit für Objekte
is
gleiche Objekte
is not
ungleiche Objekte
Ordnungsrelationen: die Operanden einer Ordnungsrelation können von beliebigem Objekttyp
sein. Für Zahlen verwendet Python die Ordnungsrelation der reellen Zahlen. Für Zeichenketten
gilt die lexikografische Ordnung im Computerzeichensatz = Zifferzeichen sind kleiner als Buchstaben und alle Grossbuchstaben sind kleiner als jeder Kleinbuchstabe.
<
>
<=
>=
operand1 < operand2
operand1 > operand2
operand1 <= operand2
operand1 >= operand2
4<7
"Zehn" > "10"
5 <= 7
5 >= 7
true
true
true
false
Achtung: Die Verwechslung des Zuweisungsoperatoren = mit dem Vergleichsoperator == ist
die Ursache vieler, schwer zu entdeckender Programmfehler. Vergewissere dich darum jedes
Mal, dass du den richtigen Operator ausgewählt hast.
Zeichenketten, Listen und Tupel Operatoren
Operator
=
Funktion
Zuweisung
+
Operation
*
not in
Wiederholung
enthalten in
nicht enthalten in
for ... in
...:
Zählschleife
in
X[i]
X[i:j]
Beispiel
Wert
x = 12
"Ein Beispiel"
2 * "Du"
Du Du
1 in [1,2]
1
3 not in [1,2] 1
for x in [1,2]: hallo
print "hallo"
hallo
"Ein" + " Beispiel"
Indizierung, liefert Element aus X an der Stelle i
(Zählung beginnt bei 0)
Slicing, liefert aus X Unterelement von i bis j-1
zurück (Zählung beginnt bei 0)
5/9
x = "hallo"
x[1]
a
x = "hallo"
x[0:3]
hal
Programmieren mit Python
Operator
len(s)
min(s)
max(s)
Funktion
Länge
kleinstes Element
größtes Element
Beispiel
len("hallo")
min("hallo")
max("hallo")
Wert
5
a
o
abkürzende Schreibweisen bei Zuweisungen:
+=
-=
*=
/=
%=
Arithmetische Zuweisungen
+=
Zeichenketten-Zuweisung
Programmfluss
In Python werden alle Anweisungen normalerweise in der Reihenfolge, in der sie aufgeschrieben
wurden, bearbeitet. In sehr vielen Situationen ist eine solche lineare Vorgehensweise aber nicht
erwünscht. Dies ist zum Beispiel der Fall, wenn ein bestimmter Teil des Skripts nur dann ausgeführt werden soll, wenn eine gewisse Bedingung erfüllt ist. Auch falls ein Teil eines Skripts
mehrfach ausgeführt werden soll, muss vom linearen Programmablauf abgewichen werden.
Python stellt für die bedingte Ausführung das Konstrukt if-else sowie in erweiterter Form if-elifelse zur Verfügung. Für die wiederholte Ausführung die Schleifen-Konstrukte for und while.
Vielfach wird im Zusammenhang mit der Ausgabe von wiederholten Anweisungen - print
Statements innerhalb einer Schleife - auch noch auf die formatierte Ausgabe zurückgegriffen.
Verzweigungen (Bedingte Ausführung)
Zur Steuerung eines Programmablaufs werden häufig Verzweigungen benötigt. Innerhalb des
Programms wird dann aufgrund einer Bedingung entschieden, welcher Zweig des Programms
ausgeführt werden soll.
Bedingungen werden mit Hilfe von Vergleichsoperatoren formuliert.
Einfache Verzweigung:
Sollen bestimmte Abschnitte eines Programms nur unter gewissen Bedingungen (etwa einer bestimmten Eingabe des Benutzers) ausgeführt werden, stellt uns Python das if-else Konstrukt zur
Verfügung. Im folgenden Beispiel wird untersucht, ob eine Variable größer als 0 ist. Wenn dies
der Fall ist, so wird ausgegeben: Diese Zahl ist größer als 0, ansonsten wird ausgegeben: Diese
Zahl ist nicht größer als 0.
x = 12
if x > 0:
print "Diese Zahl ist größer als 0"
else:
print "Diese Zahl ist nicht größer als 0"
Mehrfache Verzweigung:
In vielen Anwendungsfällen gibt es mehr als zwei Möglichkeiten, zwischen denen entschieden
wird. Dazu wird eine mehrfache Verzweigung benötigt.
Im folgenden Beispiel wird untersucht, ob eine Variable größer als 0, kleiner als 0 oder gleich 0
ist und entsprechend kommentiert:
6/9
Programmieren mit Python
x = 12
if x > 0:
print "Diese Zahl ist größer als 0"
elif x < 0:
print "Diese Zahl ist kleiner als 0"
else:
print "Bingo, diese Zahl 0"
Logische Operatoren:
Mit Hilfe der logischen Operatoren können mehrere Bedingungen miteinander verknüpft werden.
 Eine Bedingung, die aus einer oder mehreren Einzelbedingungen besteht, die mit dem
Operator and verknüpft sind, ergibt wahr, wenn jede der Einzelbedingungen wahr ergibt.
 Eine Bedingung, die aus einer oder mehreren Einzelbedingungen besteht, die mit dem
Operator or verknüpft sind, ergibt wahr, wenn eine der Einzelbedingungen wahr ergibt.
 Der Operator not kehrt den Wahrheitswert einer Bedingung um, d.h., eine falsche Bedingung wird wahr, eine wahre Bedingung wird falsch.
Ein Beispiel:
x = 12
y = 15
z = 18
#Bedingung
if x<y and
print "x
else:
print "x
1
x<z:
ist die kleinste Zahl"
ist nicht die kleinste Zahl"
#Bedingung 2
if y>x or y>z:
print "y ist nicht die kleinste Zahl"
#Bedingung 3
if not z>y:
print "z ist nicht größer als y"
else:
print "z ist größer als y"
Geschachtelte Verzweigung:
Verzweigungen können auch geschachtelt werden. Dies bedeutet, dass eine Verzweigung eine
weitere Unterverzweigung beinhaltet. Ein Beispiel:
x = -6
if x > 0:
print "Diese Zahl ist größer als 0"
else:
if x < 0:
print "Diese Zahl ist kleiner als 0"
else:
print "Bingo, diese Zahl 0"
Schleifen
Neben der Verzweigung gibt es noch eine weitere wichtige Struktur zur Steuerung des Programmablaufs: die Schleife. Mit Hilfe einer Schleife kann man die wiederholte Ausführung eines
7/9
Programmieren mit Python
Programmschritts ermöglichen. Python stellt uns wie oben erwähnt für die wiederholte Ausführung die Schleifen-Konstrukte for und while zur Verfügung.


Man verwendet eine for-Schleife, falls ein Programmschritt für eine regelmäßige, zu
diesem Zeitpunkt bekannt Folge von Werten wiederholt ausgeführt werden soll.
Man verwendet eine while-Schleife, falls sich erst durch Eingaben des Anwenders
ergibt, ob ein Programmschritt wiederholt ausgeführt werden soll.
for-Schleife - Aufbau:
for i in 2, -6, 7.5, 22:
print "Zahl:", i
print "Quadrat:", i*i
Die erste Zeile muss wie folgt gelesen werden: Führe die nachfolgenden eingerückten Anweisungen für jede Zahl aus der Liste 2, -6, 7.5, 22 aus. Nenne diese Zahl in diesen Anweisungen i. Natürlich kann auch eine andere Schleifenvariable anstelle i genommen werden.
Die genannten Zahlen werden zusammen mit einem kurzen Informationstext ausgegeben und
anschließend quadriert und ebenfalls ausgegeben.
Im dargestellten Fall handelt es sich um eine unregelmäßige Liste von Zahlen. Meist werden
Schleifen allerdings für regelmäßige Listen von Zahlen genutzt. Dabei erweist sich die Funktion
range() als sehr nützlich:
for i in range(3,11,2):
print "Zahl:", i
print "Quadrat:", i*i
Range heisst übersetzt Bereich. Innerhalb der Klammern von range können bis zu drei Zahlen
stehen (jeweils durch Komma getrennt):
1. erste Zahl: gibt den Beginn des Bereichs an
2. zweite Zahl: gibt das Ende des Bereichs an, d.h. (die erste Zahl) für den die Anweisung
nicht mehr ausgeführt wird.
3. dritte Zahl: gibt den Abstand, die Schrittweite der Schleife an. Die Zahlen, für die die
Anweisungen in unserem Beispiel ausgeführt werden, haben einen Abstand von +2 zueinander.
Kurz und bündig: Die Funktion erzeugt eine regelmäßige Liste von ganzen Zahlen.
range() kann mit einem, zwei oder wie bisher gesehen mit drei Parametern aufgerufen werden.
Falls durch die Parameter keine sinnvolle Liste erzeugt werden kann, so wird die Schleife nicht
durchlaufen. Endlosschleifen wie in anderen Programmiersprachen können nicht erzeugt werden.
Varianten von range():
1. Angabe von drei Parametern: Die Liste beginnt beim ersten und endet vor dem zweiten
Parameter, die Schrittweite wird mit dem dritten Parameter angegeben.
2. Angabe von zwei Parametern: Die Liste beginnt beim ersten und endet vor dem zweiten
Parameter, als Schrittweite wird 1 angenommen.
3. Angabe von einem Parameter: Die Liste beginnt bei 0 und endet vor dem angegebenen
Parameter, als Schrittweite wird 1 angenommen.
8/9
Programmieren mit Python
while-Schleife - Aufbau:
summe = 0
while summe < 50:
eingabe = input("Bitte Zahl eingeben ")
summe += eingabe
print "Zwischensumme: ", summe
Zuerst wird die Variable für die Summe der Zahlen auf 0 gesetzt. Die while-Anweisung leitet
die Schleife ein und bedeutet bei uns: Führe die Anweisungen solange aus als die Eingabe des
Anwenders kleiner als 50 ist. D.h. die Schleife wird solange wiederholt bis der Anwender eine
Zahl größer/gleich 50 eingibt.
Merke: Bei einer while-Schleife wird immer angegeben, unter welchen Bedingungen wiederholt werden soll und nicht, unter welchen Bedingung beendet werden soll.
Gezielte Steuerung der Verarbeitung:
Python bietet uns ein paar Funktionen, um die Iterationen einer Schleife oder die Ausführung
einer Kondition zu beeinflussen.
Schleifensteuerung mit break und continue:
Die Anweisungen break und continue bieten weitere Möglichkeiten zur Steuerung von Schleifen. Die Anweisung break führt zu einem unmittelbaren Abbruch der Schleife. Die Anweisung
continue führt unmittelbar zum nächsten Durchlauf der Schleife, ohne die restlichen Anweisungen innerhalb einer Schleife zu beachten. Beide werden sinnvollerweise mit einer Bedingung
verbunden und meist bei Sonderfällen eingesetzt.
Im folgenden Beispiel soll der Preis von maximal zehn Tankfüllungen berechnet werden. Der
Benutzer gibt die getankte Literzahl an, das Programm berechnet den Preis und gibt ihn aus.
Falls der Benutzer einen negativen Wert eingibt, wird statt dem Preis eine Fehlermeldung ausgegeben und bei Eingabe des Werts 0 wird die Schleife vorzeitig beendet.
for i in range(1,11,1):
liter = input(str(i) + ": Wie viele Liter wurden getankt? ")
if liter == 0:
break
# Abbruch der Schleife
if liter < 0:
print "Nur positive Werte eingeben"
continue
# Zum naechsten Durchlauf
preis = liter * 1.32
print "Die Tankfüllung kostet ", preis
9/9
Herunterladen