Python Grundkurs zur (cid:220)bung Diskrete Strukturen Christof Br(cid:228)utigam [email protected] Bauhaus-Universit(cid:228)tWeimar Fakult(cid:228)tMedien 2. November 2012 ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 1/46 Outline Einf(cid:252)hrung Grundlagen Variablen Datentypen Kontrollstrukturen Input/Output Module Ein komplettes Skript Hinweise Referenzen (cid:220)bungsaufgaben ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 2/46 Einf(cid:252)hrung Python (cid:73) Programmiersprache (cid:73) (cid:18)Interpreter(cid:16): Programm, das Anweisungen einliest, verarbeitet und auswertet (cid:73) (cid:18)Skript(cid:16): Textdatei mit Python-Anweisungen, kann vom Interpreter verarbeitet werden ((cid:18)ein Skript ausf(cid:252)hren(cid:16)) (cid:73) Aktuelle (10/2012) Sprachversionen: Python 2: 2.7.3, Python 3: 3.3.0 (cid:73) Bevorzugt sollte Python 3 eingesetzt werden ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 3/46 Einf(cid:252)hrung Hello, Python! http://xkcd.com/353/ ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 4/46 Einf(cid:252)hrung Motivation (cid:73) Einfach und leicht zu erlernen (cid:73) Algorithmen lassen sich schnell und unkompliziert umsetzen ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 5/46 Einf(cid:252)hrung Beispielprogramm: Primzahltest (cid:7) (cid:4) def isprime(n): """Gibt True zurueck, wenn n eine Primzahl ist, ansonsten False. n muss eine Ganzzahl >= 0 sein. """ if n <= 1: return False # teste alle moeglichen Divisoren von 2 bis n-1 # wenn der Divisionsrest 0 ist, wurde ein Teiler gefunden for d in range(2, n): if (n % d) == 0: return False return True # kein Teiler gefunden, n ist prim if isprime(23): print('23 ist eine Primzahl') else: print('23 ist keine Primzahl') (cid:6) (cid:5) ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 6/46 Einf(cid:252)hrung Einr(cid:252)ckungen (cid:73) Python benutzt Einr(cid:252)ckungen um Codebl(cid:246)cke zu kennzeichnen (cid:73) Aufeinanderfolgende Codezeilen mit gleicher Einr(cid:252)cktiefe werden als zusammengeh(cid:246)rig interpretiert (cid:73) Zur Einr(cid:252)ckung sollten Leerzeichen genutzt werden, niemals Tabs (cid:73) Anzahl der Leerzeichen ist nicht vorgeschrieben, Standard sind 4 ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 7/46 Grundlagen Variablen Variablen (cid:7) (cid:4) greeting = 'Hello' number = 23 food_list = ['spam', 'eggs', 'bacon'] 2go = 'coffee' # Error (wirft SyntaxError) (cid:6) (cid:5) (cid:73) Variablen speichern (korrekter: referenzieren) Daten (cid:73) Der Zuweisungsoperator (=) weist einer Variablen (links) einen Wert (rechts) zu (cid:73) Variablennamen d(cid:252)rfen nur aus Buchstaben, Zi(cid:27)ern und dem Unterstrich (_) bestehen (und d(cid:252)rfen nicht mit Zi(cid:27)ern beginnen) ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 9/46 Grundlagen Datentypen Z Ganze Zahlen ( ) (cid:7) (cid:4) a = 31 # Dezimalnotation (Basis 10) # Programmierer nutzen oft andere Notationen: a = 0b11111 # 31 in Binaernotation (Basis 2) a = 0o37 # 31 in Oktalnotation (Basis 8) a = 0x1F # 31 in Hexadezimalnotation (Basis 16) (cid:6) (cid:5) (cid:73) Ganze Zahlen (int) k(cid:246)nnen beliebig gro(cid:255) (bzw. klein) werden (begrenzt nur durch den Speicher des Rechners) (cid:73) Angabe in Dezimal-, Bin(cid:228)r-, Oktal- oder Hexadezimalnotation (cid:73) Achtung: In Python 2 werden f(cid:252)hrende Nullen auch ohne das kleine (cid:18)o(cid:16) als Oktal interpretiert (027 ist 23)! (cid:73) Weitere Zahlentypen ((cid:29)oat und complex) spielen im Rahmen der Vorlesung Diskrete Strukturen keine Rolle ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 11/46 Grundlagen Datentypen Arithmetische Operatoren (cid:7) (cid:4) x + y # Addition x - y # Subtraktion x * y # Multiplikation x / y # Division (Anmerkung beachten) x // y # Ganzzahldivision x % y # Modulo (Divisionsrest) pow(x, y) # Potenzierung, von x ** y wird abgeraten divmod(x, y) # (x//y, x%y) -x # Negation (cid:6) (cid:5) (cid:73) Anmerkung zur Division: In Python 2 sind Division und Ganzzahldivision identisch, beide liefern das Ergebnis abgerunded. In Python 3 liefert die Division einen Fliesspunktwert (3 / 2 liefert 1.5). Im Rahmen der Vorlesung Diskrete Strukturen ist ausdr(cid:252)cklich die Ganzzahldivision zu verwenden. ChristofBr(cid:228)utigam (BUW) PythonGrundkurs 2.November2012 12/46
Description: