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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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