Python Intro I Vorsemesterkurs Informatik Praktischer Teil WS 2013/14 1.Oktober 2013 Vorkurs Informatik - WS 2013/14 Let's get started Vorkurs Informatik - WS 2013/14 } Skript, Übungen, Folien... Alles zum Praxisteil auf http://vorkurs.cs.unifrankfurt.de Bücher: Vorkurs Informatik - WS 2013/14 Fragen! Fragen! Fragen! Vorkurs Informatik - WS 2013/14 So wird gecoded! Vorkurs Informatik - WS 2013/14 Python • Höhere Programmiersprache o Sie ist für Menschen einfacher zu verstehen, als die "Muttersprache" des Computers • Aber: der Computer versteht sie nicht (direkt): o Wir brauchen einen "Übersetzer" (Interpreter) • http://www.python.org o Kostenlos für Win/Mac/Linux o Text → Magie → 101010101... Vorkurs Informatik - WS 2013/14 Idle3 Vorkurs Informatik - WS 2013/14 REPL (Read Evaluate Print Loop) Vorkurs Informatik - WS 2013/14 Syntax Vorkurs Informatik - WS 2013/14 Invalid Syntax? Sprachen haben Syntax und Semantik Syntax: Wie Sätze gebaut sein müssen, damit sie (in dieser Sprache) richtig sind Semantik: Bestimmt was der Satz bedeutet. 'Hallo Vorkurs' ist also wohl falsch gebaut Vorkurs Informatik - WS 2013/14 Nicht Aufgeben! Fehler können vor allem am Anfang frustrieren. Nicht aufgeben - das geht jedem so! Hier findet ihr Hilfe: Vorkurs Informatik - WS 2013/14 Bool und Vergleiche Vorkurs Informatik - WS 2013/14 Bool Es gibt genau zwei Wahrheitswerte: True (wahr) und False (falsch). Beispielsweise ist das Ergebnis eines Vergleiches ein Wahrheitswert (bool) In Python heißt dieser Datentyp bool nach George Boole, der sich viel mit Wahrheitswerten beschäftigte. Vorkurs Informatik - WS 2013/14 Booltabelle "Und" Kombiniert (Konjunktion) >>> True and True True >>> True and False False >>> False and True False >>> False and False False "Oder" Kombiniert (Disjunktion) >>> True or True True >>> True or False True >>> False or True True >>> False or False False Vorkurs Informatik - WS 2013/14 Negationen Vorkurs Informatik - WS 2013/14 Zahlen Vorkurs Informatik - WS 2013/14 Einfache Rechenoperationen Vorkurs Informatik - WS 2013/14 Einfache Rechenoperationen Aber es geht noch weiter, was ist eigentlich wenn ich // oder % benutze? Vorkurs Informatik - WS 2013/14 Vorrang Es gilt: Modulo vor Punkt vor Strich und von links nach rechts! Vorkurs Informatik - WS 2013/14 Float VS Integer Integer Integer → Ganze Zahl im Computer Float Float → Zahl in der ein Komma (bei uns Punkt) vorkommt Bemerkung Float und Integer sind zwei verschiede Dinge! Aber es sind beides Zahlen. Vorkurs Informatik - WS 2013/14 Strings Vorkurs Informatik - WS 2013/14 Der String aka Text Wir sagen dem Interpreter, dass etwas Text (und kein Code ist) indem wir es in Hochkomma setzen: >>> 'Hallo Vorkurs!' 'Hallo Vorkurs!' >>> "Ich bin normaler Text" 'Ich bin normaler Text' Vorkurs Informatik - WS 2013/14 Escape-Sequenzen Vorkurs Informatik - WS 2013/14 Typen Vorkurs Informatik - WS 2013/14 Was ist das? Wir kennen schon Typen! Integer und Float sind Typen! String ist auch ein Typ! Alles HAT einen Typ! Vorkurs Informatik - WS 2013/14 Wofür brauch ich sowas? Wofür man Typen braucht, sieht man an einem einfachen Beispiel: Wir lernen: Man kann Typen mixen, aber nicht alle. Vorkurs Informatik - WS 2013/14 Build-in's Vorkurs Informatik - WS 2013/14 Was ist das? Built-in's erleichtern das Schreiben von Programmen, da die Befehle schon eingebaut sind abs() max(a,b) <String>.isalpha() Vorkurs Informatik - WS 2013/14 Ich brauch aber... Man kann auch Typen “erzwingen” und auch Dinge umwandeln, dies nennt sich “casten”. Vorkurs Informatik - WS 2013/14 Float VS Integer Ich will aber... Integer haben: int() zur Rettung! int(x) wandelt x in einen Integer um! Float haben: float(x) wandelt x in eine Float um! Vorkurs Informatik - WS 2013/14 Aber ACHTUNG! “Casten” verbraucht viel Rechenleistung und es können sich “Fehler” einschleichen! Vorkurs Informatik - WS 2013/14 Input/Output Vorkurs Informatik - WS 2013/14 Input/Output Wir wollen jetzt aber, dass der Nutzer etwas eingeben kann. Der Nutzer gibt Strings ein! Man kann somit mit dem Benutzer “reden”. Der Benutzer kann aber nicht einfach Pythonbefehle benutzen und unseren Code sprengen. Wir benutzen die Befehle: print(x) und input(“Hier kann ein String stehn”) Vorkurs Informatik - WS 2013/14 print() Vorkurs Informatik - WS 2013/14 input() Vorkurs Informatik - WS 2013/14 Variable Vorkurs Informatik - WS 2013/14 Variablen Variablen geben einem Wert einen Namen. >>> meaning_of_life = 40 + 2 Statt den Wert zu wiederholen, kann man dann den Namen an seiner Stelle verwenden: >>> 1 + meaning_of_life 43 Vorrang Die Zuweisung = hat den niedrigsten Vorrang aller Operatoren. Die "rechte Seite" wird also zuerst ausgewertet und dann das Ergebnis gespeichert! Vorkurs Informatik - WS 2013/14 Namensregeln Wählst du Namen sorgfältig, kannst du damit Programme lesbarer und deine Absichten deutlich machen! >>> meaning_of_life = 42 >>> var001 = 42 Python erlaubt jede Kombination aus Buchstaben, Nummern und Unterstrichen (_), die nicht mit einer Zahl beginnt. >>> 001var = 42 ← Ungültig!!! Vorkurs Informatik - WS 2013/14 Kommentare Vorkurs Informatik - WS 2013/14 Unser Freund die # Die Raute leitet einen Kommentar ein. Alles ab der Raute bis zum Zeilenende wird vom Interpreter ignoriert. # ↵ Vorkurs Informatik - WS 2013/14 Warum die Raute benutzen? Kommentare sorgen dafür, dass der Code besser zu lesen ist und ist daher primär für den Menschen gedacht und nicht für den Computer. Beschreibt nicht jeden Befehl, sondern sagt was ihr euch dabei gedacht habt und was das im Großen und Ganzen macht. Vorkurs Informatik - WS 2013/14 Exkurs 1 Vorkurs Informatik - WS 2013/14 Die .py Datei Vorkurs Informatik - WS 2013/14 Wie komm ich dahin? Vorkurs Informatik - WS 2013/14 Wie sieht es aus? Vorkurs Informatik - WS 2013/14 Unterschied zum Interpreter Doch wo ist jetzt der Unterschied zum Interpreter? Der Code ist gespeichert. Der Code ist nun immer wieder benutzbar und steht in einer .py Datei Man kann den Code ansehen ohne ihn auszuführen. Es gibt jetzt jedoch keine Möglichkeit mehr, im laufenden Programm etwas einzugeben und man sieht auch nicht mehr was der Rechner macht. Keine Sorge! Input und Output kommen später und helfen uns! Vorkurs Informatik - WS 2013/14 Bedingungen Vorkurs Informatik - WS 2013/14 Bedingtes Ausführen Bisher hatten alle unsere Beispiele etwas gemeinsam. Der Computer hat die Anweisungen in der Reihenfolge abgearbeitet, in der wir sie eingegeben haben. "Erste Zeile" "Zweite Zeile" "Dritte Zeile" "Vierte Zeile" Vorkurs Informatik - WS 2013/14 Bedingtes Ausführen Gewisse Dinge passieren aber nur unter Bedingungen. z.B. Wenn du zur dunklen Seite der Macht überläufst, bekommst du Kekse. In Python: if you_come_to_the_dark_side: ⌴⌴⌴⌴you_get_cookies = True Wenn you_come_to_the_dark_side nicht True ist, wird you_get_cookies = True nicht ausgeführt. Vorkurs Informatik - WS 2013/14 If... then... Blöcke markieren den Bereich der bedingt ausgeführt wird: "Vor dem Block" if True: ⌴⌴⌴⌴"Wir sind im Block" "Nicht mehr im Block" Eingeleitet wird ein Block von einem : Der Block selbst ist mit vier Leerzeichen (⌴⌴⌴⌴) eingerückt. Er endet, wenn diese Einrückung endet. Vorkurs Informatik - WS 2013/14 Blöcke "Arbeit, Arbeit!" if you_train_me: # False ⌴⌴⌴⌴you_get_a_solider "Seid ihr der König?" if you_are_the_king: # True ⌴⌴⌴⌴print(“Also ich hab euch nicht gewählt.”) Man nennt diese roten Pfeile den Kontrollfluss. Anweisungen die den Kontrollfluss ändern, heissen Kontrollstrukturen. Vorkurs Informatik - WS 2013/14 Else... Trifft eine Bedingung nicht zu, soll evtl. eine alternative Anweisung ausgeführt werden. Dafür gibt es das Schlüsselwort else: if you_come_to_the_dark_side: # False ⌴⌴⌴⌴you_get_cookies else: ⌴⌴⌴⌴you_will_be_killed Vorkurs Informatik - WS 2013/14 Elif Gibt es mehrere Bedinungen, können wir elif verwenden: x = 3 if x < 0: ⌴⌴⌴⌴"Negative Zahl" elif x > 0: ⌴⌴⌴⌴"Positive Zahl" else: ⌴⌴⌴⌴"Die Zahl ist Null" "Block ist zuende" Vorkurs Informatik - WS 2013/14 Exkurs 2 Vorkurs Informatik - WS 2013/14 Schleifen Vorkurs Informatik - WS 2013/14 Wiederholtes Ausführen Stellen wir uns einmal vor, wir wollen die Zahlen von 0 bis 99 ausgeben: print(0) print(1) print(2) print(3) # usw... print(99) Geht das nicht einfacher? Vorkurs Informatik - WS 2013/14 While-Schleife Einfacher geht es mithlife einer while-Schleife: x = 0 while x < 100: print(x) x = x + 1 Wurde der Block ausgeführt, wird die Bedingung wieder geprüft. Solange sie wahr ist, wird er erneut ausgeführt. ACHTUNG Wenn du hier nicht aufpasst, wirds eine Endlosschleife! Vorkurs Informatik - WS 2013/14 For-Schleife Und so sieht das Zählen bis 100 als for-Schleife aus: for x in range(100): print(x) Jetzt 50% weniger Zeilen Code! Vorkurs Informatik - WS 2013/14 range() Mit Hilfe der for-Schleife und der range() Funktion können wir das Zählen bis 100 noch eleganter gestalten: range() erzeugt eine Liste aller Zahlen in einem Bereich: Syntax: range(start, stop, step) start: Anfang der Liste (optional) stop: Ende der Liste (nicht eingeschlossen!) step: Schrittweite (optional) Vorkurs Informatik - WS 2013/14 Ausbrechen aus der Schleife Mittels break lässt sich eine Schleife abbrechen: x = 0 while True: if x == 3: break print(x) x = x + 1 http://www.flickr.com/photos/ladybeames/2896787167/ Hier wird eine vermeintliche Endlosschleife beendet. Vorkurs Informatik - WS 2013/14 Etwas überspringen Mittels continue überspringt man den Rest des Blocks: x = 0 while x < 100: x = x + 1 if x % 2 != 0: continue print(x) http://www.flickr.com/photos/rcameraw/453644988/ Hier werden alle geraden Zahlen ausgegeben, die ungeraden werden übersprungen. Vorkurs Informatik - WS 2013/14 Good Style Vorkurs Informatik - WS 2013/14 Don't repeat yourself Es kommt oft vor, dass du bestimmte Werte immer wieder brauchst. (Stell dir ein Programm vor, das 100 Zahlen auf Teilbarkeit durch 2 testet.) Wenn sich ein solcher Wert (2) ändert, müssen alle Stellen an der er Vorkommt angepasst werden... (In unserem Beispiel wohl an 100 Stellen. Yikes!) Vorkurs Informatik - WS 2013/14 We need dry code Good Code is DRY Don't Repeat Yourself Vorkurs Informatik - WS 2013/14 Danke für die Aufmerksamkeit! Vorkurs Informatik - WS 2013/14