LATEX, Linux, Python Daniel Borchmann, Tom Hanika, Maximilian Marx 19. Januar 2015 cba Python-Grundlagen Ziele des Abschnitts Ziele „Python als Taschenrechner“ Grundlagen: Syntax, Datentypen Interaktiv! Python installieren: https://www.python.org/downloads/ hier: Python 3.2+ Python-Grundlagen Einführung Einführung HSSSSHHHSHSHHS Entwickelt seit 1989 durch Guido van Rossum (BDFL) 1991: Python 0.9 1994: Python 1.0 2000: Python 2.0 2008: Python 3.0 Einführung Hallo. 1 print("Hello,␣world!") Python 2: 1 from __future__ import print_function Einführung Zahlen Rechnen mit Python Arithmetik mit +, -, *, /, **, % Ganzzahlige Division mit // 1 2 3 4 5 6 7 8 >>> 23 + 42 65 >>> 2.3 * 5 - 9 / 6 ** -3 -1932.5 >>> 3 / 2 1.5 >>> 3 // 2 1 Python 2: 1 from __future__ import division Einführung Zahlen Zahlentypen 1 2 3 4 5 6 7 8 9 10 Ganzzahlen, beliebig genau Binäre Fließkommazahlen Komplexe Zahlen Rationale Zahlen (Modul fractions) Dezimale Fließkommazahlen (Modul decimal) >>> complex(0, 1) 1j >>> 3 - 1j (3-1j) >>> (3-1j).conjugate() (3+1j) >>> (3 - 1j).real 3.0 >>> (3 - 1j).imag -1.0 Einführung Zeichenketten Zeichenketten Unicode unveränderbar, jede Änderung erzeugt eine neue Zeichenkette 1 2 3 4 5 6 7 8 9 >>> "spam" 'eggs' 'spameggs' >>> s = 'spam' >>> s * 3 + 'eggs' 'spamspamspameggs' >>> """spam ...␣eggs ...␣bacon""" 'spam\neggs\nbacon' Einführung Sequenzen Listen veränderbare Folge von Elementen 1 2 3 4 5 6 7 8 9 10 11 12 13 >>> >>> [1, >>> 3 >>> [3, >>> [1, >>> [1, >>> [3, l = list(range(1, 10)) l 2, 3, 4, 5, 6, 7, 8, 9] l[2] l[2:] 4, 5, 6, 7, 8, 9] l[:2] 2] l[::2] 3, 5, 7, 9] l[2:7:3] 6] Einführung Sequenzen Mehr Listen 1 2 3 4 5 6 7 8 9 10 11 12 >>> l = list(range(1, 10)) >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l[2] = 23 >>> l [1, 2, 23, 4, 5, 6, 7, 8, 9] >>> list(reversed([1, 3, 2])) [2, 3, 1] >>> sorted([2, 7, 1, 8, 2, 8]) [1, 2, 2, 7, 8, 8] >>> ",␣".join(['eggs', 'bacon', 'spam']) 'eggs,␣bacon,␣spam' Einführung Sequenzen Tupel unveränderbare Folge von Elementen 1 2 3 4 5 6 7 8 9 10 >>> >>> 1 >>> (2, >>> >>> (2, >>> 2 a, b, c = (1, 2, 3) a (b, c) 3) c, a, b = a, b, c (a, b, c) 3, 1) (1, 2, 3)[2] Einführung Sequenzen Sets veränderbare Menge von unveränderbaren Elementen 1 2 3 4 5 6 7 8 9 10 >>> a = set(range(1, 10)) >>> b = set(range(3, 9)) >>> a {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> a.union(b) {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> a.issuperset(b) True >>> a.difference(b) {1, 2, 9} Einführung Sequenzen Dictionaries veränderbare Zuordnung von unveränderbaren Schlüsseln zu Werten 1 2 3 4 5 6 7 8 9 10 >>> d = {0: 'eggs', 1: 'bacon', 'spam': 'spam'} >>> d {0: 'eggs', 1: 'bacon', 'spam': 'spam'} >>> d[1] 'bacon' >>> d['spam'] 'spam' >>> d['eggs'] = 'spam' >>> d {0: 'eggs', 1: 'bacon', 'eggs': 'spam', 'spam': 'spam'} Python-Grundlagen Funktionen Funktionen Funktionen Einrückung als Syntaxelement Funktionen sind first-class 1 2 3 4 5 6 7 >>> def f(): ... "prints␣'hello,␣world!" ... print('hello,␣world!') ... >>> f() 'hello,␣world!' >>> help(f) Funktionen Mehr Funktionen Funktionen mit Argumenten Lambdas als anonyme Funktionen 1 2 3 4 5 6 7 8 9 10 >>> def g(x, y): ... return complex(y, x).conjugate() ... >>> g(23, 42) (42-23j) >>> g(y=23, x=42) (23-42j) >>> h = lambda x, y: complex(y, x).conjugate() >>> h(23, 42) (42-23j) Python-Grundlagen Kontrollfluss Kontrollfluss Vergleiche Vergleiche mit <, <=, ==, !=, >=, > == vergleich Wert, nicht Referenz is vergleicht Referenz 1 2 3 4 5 6 7 8 9 10 >>> 1 == 1 True >>> 1 < 2 <= 3 != 4 >= 3 > 2 True >>> 1 < 2 <= 3 == 4 >= 3 > 2 False >>> [1, 2, 3] == [1, 2, 3] True >>> [1, 2, 3] is [1, 2, 3] False Kontrollfluss Logische Ausdrücke and, or Kurzschlussauswertung 1 2 3 4 5 6 >>> False and True False >>> False and 0 / 0 < 1 False >>> 1 < 2 or False or 3 < 4 True Kontrollfluss Bedingungen 1 2 3 4 5 6 7 1 2 3 4 5 6 def f(x): if -3 <= x <= 3: print(r'x␣\in␣(-3,␣3)') elif x < 0: print('x␣<␣-3') else: print('x␣>␣3) >>> f(0) x \in (-3, 3) >>> f(4) x < -3 >>> f(-4) x > 3 Kontrollfluss Schleifen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 for und while >>> for i in range(1, 4): ... print(i) ... 1 2 3 >>> i = 1 >>> while i < 4: ... print(i) ... i += 1 ... 1 2 3 Kontrollfluss Mehr Schleifen 1 2 3 4 5 6 7 1 2 3 4 5 6 7 def f(lst): for i in lst: print(i) if i == 2: break else: print('no␣3') >>> f(range(1, 3)) 1 2 >>> f([1, 3]) 1 3 no 3 Kontrollfluss Noch mehr Schleifen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Iteration durch beliebige Sequenzen >>> for ... ... s p a m >>> for ... ... eggs spam bacon 23 c in 'spam': print(c) x in {'eggs', 23, 'bacon', 'spam'}: print(x)