Slide 1

Slide 1 text

Objektorientierung mit Python Matthias G¨ unther Universit¨ at Jena 10.05.2007

Slide 2

Slide 2 text

Gliederung 1. Interpreter und Kompilierungsvorgang 2. Aufbau von Python-Skripten 3. Datenstrukturen ◮ allgemeine Datentypen, Sequenzen, ... 4. Kontrollstrukturen ◮ Schleifen ◮ Abbruch von Schleifen 5. Exceptions ◮ try except, finally

Slide 3

Slide 3 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Geschichte zu Python ◮ 1989 entschied sich Guido van Rossum einen Interpreter f¨ ur die Skriptsprache ABC zu entwickeln → 1990 kam Python heraus 3

Slide 4

Slide 4 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Warum Python? ◮ einfache Syntax → schnell zu erlernen ◮ plattformunabh¨ angig und objektorientiert ◮ Einsatz in Web- und GUI-Programmierung ◮ CGI- und Datenbank-Anbindung verf¨ ugbar (mit C/C++, Perl- und Java-Bibliotheken erweiterbar) ◮ automatische Speicherfreigabe durch garbage collector ◮ Python nur 31 keywords (Java hat 50) ABER nur bedingt f¨ ur perfomancelastige Probleme! 4

Slide 5

Slide 5 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 1. Interpreter und Kompilier 5

Slide 6

Slide 6 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Interpreter ◮ Konsoleneingabe python startet die interaktive Shell ◮ help() liefert Informationen zu bestimmten Objekten ◮ Skripte mit python foo.py ausf¨ uhren ◮ alternativ # !/usr/bin/python in oberste Skriptzeile schreiben und dann einfach ./foo.py eingeben ◮ einbindbare Module erweitern Funktionen des Interpreters ◮ benutzen nur ASCII-Code zur Zeichendarstellung 6

Slide 7

Slide 7 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Kompilierungsvorgang ◮ Interpreter wandelt Quelltext in Bytecode um ◮ PVM f¨ uhrt den Bytecode aus 7

Slide 8

Slide 8 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 2. Aufbau von Python-Skripten 8

Slide 9

Slide 9 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Allgemeiner Aufbau ◮ Python-Skript ist eine Folge von Anweisungen ◮ Python benutzt Einr¨ uckungen als Anweisungsblockmarkierung ◮ Zeilenende markiert Ende einer Anweisung ◮ Kommentare mit # 9

Slide 10

Slide 10 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Zeilenstruktur ◮ logische Zelle stellt einen Ausdruck dar und kann explizit mit einem Backslash \auf mehrere physische Zeilen erstrecken → kein Kommentar in Zeile mit \erlaubt ◮ geklammerte Ausdr¨ ucke d¨ urfen sich ¨ uber mehrere physische Zeilen verteilen 10

Slide 11

Slide 11 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel 1: explizites Verbinden print 1+2\# ich stehe falsch hier +3 Beispiel 2: implizites Verbinden def rectangle (a, b): return a*b 11

Slide 12

Slide 12 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Einr¨ uckungsgrad ◮ keine Semikolons oder geschweiften Klammern n¨ otig ◮ Beginn und Ende eines Blocks durch Einr¨ uckungen festgelegt ◮ Einr¨ uckungsgrad der ersten Zeile beliebig, weitere Zeilen m¨ ussen sich dann anpassen ◮ in einem Block k¨ onnen weitere Bl¨ ocke festgelegt werden 12

Slide 13

Slide 13 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel 1: Blockstruktur fehlerfrei def primzahl(n): for i in range (2,n): if n%i == 0: print ’keine Primzahl’ return None print ’Primzahl’ Beispiel 2: Blockstruktur fehlerbehaftet def primzahl(n): for i in range (2,n): # 1 if n%i == 0: # 2 print ’keine Primzahl’ return None # 3 print ’Primzahl’ # 4 13

Slide 14

Slide 14 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 3. Datenstrukturen 14

Slide 15

Slide 15 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally ¨ Ubersicht - Datenstrukuren Datentypen int, long, float, bool, complex, NoneType Sequenzen strings, tupel, list, dict Mengen set, frozenset 15

Slide 16

Slide 16 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Datentypen 16

Slide 17

Slide 17 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Ganze Zahlen int ◮ umfasst Zahlenbereich 231 − 1 inklusive Vorzeichen ◮ 0x f¨ ur Hexzahlen ◮ 0 f¨ ur Oktalzahlen long ◮ mit ”L” oder ”l” am Ende gekennzeichnet ◮ k¨ onnen unendlich (!) lang sein ◮ verf¨ ugbarer Arbeitsspeicher bildet nat¨ urliche Grenze der Zahlenl¨ ange 17

Slide 18

Slide 18 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele >>> a = 1234 >>> type(a) # int >>> b = 123457687888 >>> type(b) # long >>> c = 0x15 # Hex 21 # type aber int! >>> d = 020 # Oktal 16 # type aber int! 18

Slide 19

Slide 19 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally float ◮ durch Dezimalpunkt gekennzeichnet ◮ Basis ist 2 (bin¨ ar), d.h. Python gibt eine dezimale Approximation zum wahren bin¨ aren Wert an, welcher im PC gespeichert ist (Bsp. 0.6) ◮ Genauigkeit auf feste Gr¨ oße beschr¨ ankt ◮ z = m ∗ 10e m Mantisse, e Exponent ◮ Exponent e (Basis ist 10) muss ganzahlig sein und kann Vorzeichen erhalten 19

Slide 20

Slide 20 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele >>> 0.6 0.59999999999999998 # Approximation >>> 0.054 0.053999999999999999 >>> 20e+10 200000000000.0 >>> e = 3.1465e+2.4 File "", line 1 3.1465e+2.4 ˆ SyntaxError: invalid syntax Exponent nicht ganzzahlig! 20

Slide 21

Slide 21 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally bool ◮ seit Python 2.3 ◮ Darstellung durch Literale True und False ◮ haben nummerische Werte: → 1 f¨ ur True → 0 f¨ ur False 21

Slide 22

Slide 22 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally complex ◮ bestehen aus Real- und Imagin¨ arteil ◮ Imagin¨ arteil mit ”J” oder ”j” gekennzeichnet ◮ g¨ angige Operationen: +, −, /, ∗, z x + yj 22

Slide 23

Slide 23 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele >>> (2+2j)*2 (4+4j) >>> (2+3j)-(1.1-2j) (0.89999999999999991+5j) >>> b = 1.0/2.0 >>> a = -2-3j >>> a**b (0.89597747612983836-1.6741492280355399j) >>> 27**(1/3.0) 3.0 >>> a = 3 + 4 + 5j >>> a 7 + 5j 23

Slide 24

Slide 24 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally NoneType ◮ None ist einzige Instanz des Typs NoneType, der keinen Wert hat ◮ vergleichbar mit null ◮ Funktionen die keinen return-Wert haben geben None zur¨ uck ◮ keine arithmetischen Operationen mit None-Objekt m¨ oglich! Beispiel: >>> def func(): pass # gebe nichts zur¨ uck >>> print func() None 24

Slide 25

Slide 25 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Arithmetische Operatoren und Priorit¨ at Operator Erkl¨ arung +x, -x un¨ are Operationen x**y Exponential-Bildung (rechts- assoziativ) x * y, x/y, x% y Multiplikation, Division, Modulo x + y, x -y Addition, Subtraktion ◮ Punktrechnung geht vor Strichrechnung ◮ Klammern habe h¨ ochste Priorit¨ at 25

Slide 26

Slide 26 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Sequenzen 26

Slide 27

Slide 27 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Strings ◮ durch einzelne Apostrophe, ”G¨ ansef¨ ußchen” begrenzt ◮ mehrzeilige Zeichenketten durch dreifache Anf¨ uhrungszeichen gekennzeichnet ◮ ¨ ublichen Escape-Sequenzen (\n, \t,...) ◮ r f¨ ur raw strings und u f¨ ur unicode strings ◮ Strings durch + verbinden (Konkatenation) 27

Slide 28

Slide 28 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel >>> a = r’c:\home\matthias\Bilder’ >>> b = u"\t tada" >>> u = "Heute" >>> v = "Abend ist Basketball angesagt" >>> u+v ’Heute Abend ist Basketball angesagt’ >>> a = u’Text \u00FCber Unicode’ >>> a = ’ham’ >>> a[1] ’a’ >>> a[-1] ’m’ 28

Slide 29

Slide 29 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally tupel ◮ unterschiedliche Datentypen werden zu einem Objekt zusammengefasst ◮ Eintr¨ age durch Komma getrennt - optional durch Klammern () eingeschlossen ◮ Tupel ist unver¨ anderbarer ◮ Schachtelung m¨ oglich ◮ Tupel mit einem Objekt muss ein Komma am Ende haben 29

Slide 30

Slide 30 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele: >>> mytupel = (’Montag’, "Dienstag", 3j, (1,2,3)) >>> mytupel[2] 3j >>> z =(1,) # Tupel mit einem Element >>> z[0] = 2 Traceback (most recent call last): File "", line 1, in -toplevel- z[0] = 2 TypeError: object does not support item assignment 30

Slide 31

Slide 31 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally list ◮ verschiedenartige Objekte zusammenfassen, einzelne Elemente sind ver¨ anderbar ◮ Syntax: Liste von eckigen Klammern umschlossen ◮ Elemente durch Komma getrennt list-Operationen ◮ + : Konkatenation ∗ : Wiederholung len : L¨ ange der Liste in : enthalten sein 31

Slide 32

Slide 32 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele: >>> list1 = [] >>> list2 = [1,3, "String"] >>> list2[1] = 3j >>> list2 [1, 3j, ’String’] >>> obst = [’Apfel’, ’Litschi’] >>> ’Litschi’ in obst True >>> len(list2) 3 >>> obst*2 [’Apfel’, ’Litschi’, ’Apfel’, ’Litschi’] 32

Slide 33

Slide 33 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally dict ◮ besteht aus bin¨ aren Relation key: value ◮ durch Schl¨ ussel schnellen Zugriff auf Werte ◮ keine feste Reihenfolge der Elemente Beispiele: >>> ergebnisse = {’bayern’ : ’schlecht’, ’hertha’ : ’gut’} >>> print ergebnisse [’bayern’] schlecht 33

Slide 34

Slide 34 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Mengen 34

Slide 35

Slide 35 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally set ◮ sind ver¨ anderbar ◮ Schl¨ usselwort set ◮ haben keine Indizes frozenset ◮ sind unver¨ anderbar ◮ Schl¨ usselwort frozenset typische Operationen Durchschnitt &, Vereinigung |, Differenz -, hinzuf¨ ugen, entfernen,... Syntax: set ([...]) Elemente in Mengen kommen nur einmal vor 35

Slide 36

Slide 36 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele >>> a = set([’1’, ’2’]) >>> b = set([’2’, ’4’]) >>> a | b set([’1’, ’2’, ’4’]) >>> a.add((1,2,3)) set([’1’, ’2’, (1, 2, 3)]) >>> c = frozenset([’Python’, ’Ruby’]) 36

Slide 37

Slide 37 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Typumwandlungen Operator Erkl¨ arung int() konvertiert string oder float in int - nach complex nicht erlaubt float() konvertiert string oder int in float - nach complex nicht erlaubt bool() liefert Wahrheitswert dict() Liste von Paaren in dict umwandeln list() jede Sequenz in Liste ¨ uberf¨ uhren tuple() jede Sequenz in Tupel ¨ uberf¨ uhren 37

Slide 38

Slide 38 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele: >>> int(1.6) 1 >>> int("011",2) 3 >>> float(’120’) 120.0 >>> bool([]) False >>> dict([(1,(2,3)),(’a’,6)]) {’a’: 6, 1: (2, 3)} >>> list(((1,1),(1))) [(1, 1), 1] 38

Slide 39

Slide 39 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 4. Kontrollstrukturen 39

Slide 40

Slide 40 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally einfache Bedingungen Operator Erkl¨ arung < kleiner <= kleiner gleich > gr¨ oßer >= gr¨ oßer gleich == gleich ! = ungleich is identisch is not nicht identisch k¨ onnen beliebig verkettet werden 40

Slide 41

Slide 41 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Logische Operatoren Operator Erkl¨ arung and ist linker Operand falsch, so diesen Wert zur¨ uckgeben or ist linker Operand wahr, so diesen Wert zur¨ uckgeben not kehrt den Wahrheits- wert um ◮ leerer String hat den Wahrheitswert False ◮ entsprechende Auswertungspriorit¨ at bei Klammerung 41

Slide 42

Slide 42 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiele: >>> ’’ and ’Python ’’ >>> ’Python’ and ’Skript’ ’Skript’ >>> 1 == 2 or 4 == 5 False >>> False or True True >>> not(not(True or False)) True 42

Slide 43

Slide 43 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Bedingte Anweisungen Syntax: if bedingung: anweisungsblock ◮ nach dem Schl¨ usselwort if wird boolescher Ausdruck ¨ uberpr¨ uft ◮ beachte Doppelpunkt : nach dem ”Kopf” Beispiel: if x > 0 : print ’x ist positiv’ 43

Slide 44

Slide 44 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Alternative Anweisungen Syntax: if bedingung: anweisungsblock1 else: anweisungsblock2 ◮ nachdem Schl¨ usselwort if wird boolescher Ausdruck ¨ uberpr¨ uft ◮ bei True Block 1 ausf¨ uhren, ansonsten Block 2 Beispiel: if n%2 == 0 : print: ’n ist gerade’ else: print: ’n ist ungerade’ 44

Slide 45

Slide 45 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Mehrfache Anweisungen Syntax: if bedingung1: anweisungsblock elif bedingung2: anweisungsblock ... [ else: anweisungsblock] ◮ Bedingungen werden der Reihe nach gepr¨ uft ◮ wenn Block 1 False ist, wird der n¨ achste gepr¨ uft, usw. ◮ optionaler else-Zweig 45

Slide 46

Slide 46 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Wiederholte Anweisungen Syntax: while bedingung: anweisungsblock ◮ f¨ uhre Block solange aus wie Schleifenbedingung erf¨ ullt ist 46

Slide 47

Slide 47 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel: print (’Sinn des Lebens’) eingaben = [] antwort = raw_input("Was ist der" "Sinn des Lebens?") while antwort: eingaben.append(antwort) print(’Was ausser ’+antwort+ ’ faellt ihnen noch ein?’) antwort=raw_input(’Weitere Eingaben’ ’\’Abbruch mit leere Eingabe\’ ’) print ’Vielen Dank fuer die Eingaben: ’ print(eingaben) print ’Noch einen angenehmen Tag’ 47

Slide 48

Slide 48 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Iteration Syntax: for element in iterierbar: anweisungsblock for i in range(n): anweisungsblock ◮ Laufvariable i wird automatisch mit 0 initalisiert und dann bis n inkrementiert ◮ ¨ uber eine Sequenz kann man iterieren ◮ range() erzeugt Liste ganzer Zahlen von 0 bis n − 1 48

Slide 49

Slide 49 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 1. Beispiel for x in [’foo’, ’spam’, "ham"]: print x 2. Beispiel for i in range(6): print i*i 0 1 4 9 16 25 3. Beispiel a="4711", "2007","Monty", "Python" for i in a[0:1]: print a, (’4711’, ’2007’, ’Monty’, ’Python’) 49

Slide 50

Slide 50 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 4. Beispiel f¨ ur den gehobeneren Geschmack check = [’aaa’, ’4711’, (4,5),7] tests = [(4,5),’4712’] for keys in tests: for item in check: if item == keys: print keys, ’was found’ break else: print keys, ’was not found’ 50

Slide 51

Slide 51 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Schleifenabbruch break ◮ springt direkt aus einer Iteration heraus ◮ beim Ausbruch aus einer Schleife wird else-Zweig ¨ ubersprungen continue ◮ vorzeitigen Abbruch des aktuellen Schleifendurchlaufs ◮ n¨ achster Schleifendurchlauf fortsetzen Vorsicht mit break und continue M¨ ussen innerhalb von Schleifen stehen!!! 51

Slide 52

Slide 52 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel zu break def prim(x): z = x y = 2 #help while z > 1: #condition if x % 2 == 0: print x,’is not prim’ break z = z - 1 else: print x, ’is prim’ 52

Slide 53

Slide 53 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 1. Beispiel zu continue - alles okay for i in range (1,20): # gerade Zahlen if i % 2 == 1: continue print i 2. Beispiel so nicht erlaubt for i in range (1,20): def(k): # Funktion if k == 1: continue # continue ist in def(k) print k 53

Slide 54

Slide 54 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally 5. Exceptions 54

Slide 55

Slide 55 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally try-except Syntax: try: anweisungsblock1 except [ ausnahmetyp ]: anweisungsblock2 ◮ mehrere except-Klauseln sind m¨ oglich ◮ h¨ ochstens eine Klausel wird ausgef¨ uhrt ◮ dienen also der Laufzeitfehlerbehandlung ◮ mit raise eigene Exceptions werfen ◮ Exception-Typen: Arithmetic, Index, Import ... 55

Slide 56

Slide 56 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel try-except try: s = raw_input(’Eingabe: ’) raise myException(’passiert immer’) except EOFError: print ’\nWarum der Abbruch?’ sys.exit() except: # Behandelt alle Fehler print ’\nirgendein Fehler’ except myException, msg: print msg 56

Slide 57

Slide 57 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally try-finally Syntax: try: anweisungsblock1 finally: anweisungsblock2 ◮ wird in jedem Fall ausgef¨ uhrt (auch bei vorher aufgetretenen Laufzeitfehlern) ◮ Einsatz oft bei Dateizugriffen → gut f¨ ur Datensicherung 57

Slide 58

Slide 58 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Beispiel try-finally daten = ’Test’ try: f = file(’/home/user/txt.txt’, ’w’) f.write(daten) f.close() print ’alles geschrieben’ finally: f = file(’/home/tmp/txt.bak’, ’w’) f.write(daten) f.close() print ’Sicherheitskopie angelegt’ 58

Slide 59

Slide 59 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Weitere Informationen N¨ utzliche Informationen im Netz: ◮ http://www.python.org - Hauptseite zu Python ◮ http://www.python-forum.de - gute Community ◮ http://docs.python.org - Python api 59

Slide 60

Slide 60 text

OOP Python M. G¨ unther Interpreter Kompilierung Aufbau von Python-Skripten Datenstrukturen Integer float bool complex NoneType Auswertungsreihenfolge Strings tupel list dict Mengen Typumwandlungen Kontrollstrukturen einfache Bedingungen Anweisungen Schleifenabbruch Exceptions try-except try-finally Vielen Dank f¨ ur die Aufmerksamkeit! 60