Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python - a basic introduction

Python - a basic introduction

I gave this talk in 2007 at the Friedrich-Schiller-Universität in Jena, Germany. It presents the basics of the scripting language Python.

Matthias Günther

May 10, 2007
Tweet

More Decks by Matthias Günther

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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) <type ’int’> # int >>> b = 123457687888 >>> type(b) <type ’long’> # long >>> c = 0x15 # Hex 21 # type aber int! >>> d = 020 # Oktal 16 # type aber int! 18
  18. 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
  19. 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 "<stdin>", line 1 3.1465e+2.4 ˆ SyntaxError: invalid syntax Exponent nicht ganzzahlig! 20
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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 "<pyshell#50>", line 1, in -toplevel- z[0] = 2 TypeError: object does not support item assignment 30
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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