Informatik I: Einführung in die Programmierung

Größe: px
Ab Seite anzeigen:

Download "Informatik I: Einführung in die Programmierung"

Transkript

1 Informatik I: Einführung in die Programmierung 6. Python-, kommentieren, und Albert-Ludwigs-Universität Freiburg Peter Thiemann 06. November 2018

2 06. November 2018 P. Thiemann Info I 2 / 68

3 = konkretisierte Algorithmen? Ja, aber nicht immer! Folge von Anweisungen und Ausdrücken, die einen bestimmten Zweck erfüllen sollen. Interaktion mit der Umwelt (Benutzer, Sensoren, Dateien) Unter Umständen nicht terminierend (OS, Sensorknoten,... ) Auf jeden Fall meistens länger als 4 Zeilen! 06. November 2018 P. Thiemann Info I 4 / 68

4 06. November 2018 P. Thiemann Info I 5 / 68

5 Zeilenumbruch Umbrechen, wenn Zeilen zu lang. Implizite Fortsetzung mit öffnenden Klammern und Einrückung (siehe PEP8): Lange Zeilen foo = long_function_name(var_one, var_two, var_three, var_four) def long_function_name( var_one, var_two, var_three, var_four): print(var_one) 06. November 2018 P. Thiemann Info I 7 / 68

6 Kommentare im Programmtext Kommentiere dein Programm! werden öfter gelesen als geschrieben! Auch der Programmierer selbst vergisst... Nicht das Offensichtliche kommentieren, sondern Hintergrundinformationen geben: Warum ist das Programm so geschrieben und nicht anders? Möglichst in Englisch kommentieren. 06. November 2018 P. Thiemann Info I 8 / 68

7 Syntax von Kommentaren Der Rest einer Zeile nach # ist Kommentar. Blockkommentare: Zeilen, die jeweils mit # beginnen und genauso wie die restlichen Zeilen eingerückt sind beziehen sich die folgenden Zeilen. Block-Kommentare def fib(n): # this is a double recursive function # runtime is exponential in the argument if n == 0: Fließtext-Kommentare kommentieren einzelne Zeilen. Schlechte und gute Kommentare x = x + 1 # Increment x y = y + 1 # Compensate for border 06. November 2018 P. Thiemann Info I 9 / 68

8 docstring-kommentare #-Kommentare sind nur für den Leser. docstring-kommentare geben dem Benutzer Informationen. Ist der erste Ausdruck in einer Funktion oder einem Programm (Modul) ein String, so wird dieser der docstring, der beim Aufruf von help ausgegeben wird. Konvention: Benutze den mit drei "-Zeichen eingefassten String, der über mehrere Zeilen gehen kann. docstring def fib(n): """Computes the n-th Fibonacci number. The argument must be a positive integer. """ November 2018 P. Thiemann Info I 10 / 68

9 speichern werden in Dateien abgelegt. Als Dateiname wähle Modulname.py Die Dateierweiterung.py zeigt an, dass es sich um ein Python-Programm handelt. Windows: Wähle immer Alle Dateien beim Sichern damit nicht.txt angehängt wird. 06. November 2018 P. Thiemann Info I 11 / 68

10 06. November 2018 P. Thiemann Info I 12 / 68

11 5 Wege ein Programm zu Starten mit explizitem Aufruf von Python3 Starten als Skript Starten durch Klicken Starten durch Import Starten in einer IDE Beispielprogramm: example.py print("hello world") 06. November 2018 P. Thiemann Info I 14 / 68

12 Starten mit explizitem Aufruf von Python3 Shell # python3 example.py Hello world Voraussetzungen: Die Datei example.py liegt im aktuellen Ordner. Die Pfad-Variable (PATH) wurde so gesetzt, dass der gefunden wird. Wird normalerweise bei der Installation geleistet. Kann per Hand nachgetragen werden: Windows: Systemsteuerung System und Sicherheit Erweiterte Systemeinstellungen Erweitert Umgebungsvariablen Unix: Setzen der PATH-Variable im entsprechenden Login-Skript oder in der Shell-Konfigurationsdatei (z.b. /.bash_profile) 06. November 2018 P. Thiemann Info I 15 / 68

13 Starten als Skript Shell # example.py Hello world Voraussetzungen: Die Datei example.py liegt im aktuellen Ordner. Windows:.py wurde als Standard-Dateierweiterung für Python registriert. Unix: Die erste Zeile in der Datei example.py ist: #!/usr/bin/env python3 und die Datei hat das x-bit (ausführbare Datei) gesetzt. 06. November 2018 P. Thiemann Info I 16 / 68

14 Starten durch Klicken Wenn.py als Standard-Dateierweiterung für Python registriert ist (geht eigentlich bei allen Plattformen mit Desktop-Oberfläche), kann die Datei durch Klicken (oder Doppelklicken) gestartet werden. Leider wird nur kurz das Shell-Fenster geöffnet, mit Ende des Programms verschwindet es wieder. Abhilfe: Am Ende der Datei die Anweisung input() in das Programm. Allerdings: Bei Fehlern verschwindet das Fenster Beim Aufruf können keine Parameter übergeben werden. Für fertig entwickelte mit GUI geeignet. 06. November 2018 P. Thiemann Info I 17 / 68

15 Starten durch Import Nach dem Start von Python im Ordner, in dem example.py liegt: >>> import example Hello world Beachte: Angabe ohne die Dateierweiterung! Die Anweisungen in der Datei werden nur beim ersten Import ausgeführt. >>> import example Hello world >>> import example >>> 06. November 2018 P. Thiemann Info I 18 / 68

16 IDE IDLE 06. November 2018 P. Thiemann Info I 19 / 68

17 IDE = Integrated development environment Editor rufen, Programm in der Shell, wieder Editor,... IDEs sind einsetztbar für: Projektverwaltung Programm editieren Ausführen Testen und Debuggen Dokumentation erzeugen... Gibt es in den verschiedensten Komplexitäts- und Qualitätsabstufungen. IDE IDLE 06. November 2018 P. Thiemann Info I 21 / 68

18 Pythons IDE: IDLE Wohlmöglich benannt nach Eric Idle. Ist 100% in Python geschrieben und benutzt die tkinter GUI (graphical user interface). Läuft allen Plattformen. Multi-Fenster-Texteditor mit Syntaxkennzeichnung, multipler Zurücknahme, smarter Einrückung. Enthält ein Fenster mit Python-Shell. Rudimentäre Debug-Möglichkeiten. Beschreibung siehe: IDE IDLE 06. November 2018 P. Thiemann Info I 22 / 68

19 IDLE Demo IDE IDLE 06. November 2018 P. Thiemann Info I 23 / 68

20 Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 24 / 68

21 Pythons Sequenztypen Strings: str Tupel: tuple Listen: list Programmieren mit Gemeinsame (for-schleifen) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 26 / 68

22 Beispiel zu >>> first_name = "Johann" >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

23 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

24 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

25 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

26 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

27 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

28 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

29 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

30 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> print(primes[1], sum(primes)) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

31 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> print(primes[1], sum(primes)) 3 17 >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

32 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> print(primes[1], sum(primes)) 3 17 >>> squares = (1, 4, 9, 16, 25) >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

33 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> print(primes[1], sum(primes)) 3 17 >>> squares = (1, 4, 9, 16, 25) >>> print(squares[1:4]) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

34 Beispiel zu >>> first_name = "Johann" >>> last_name = 'Gambolputty' >>> name = first_name + " " + last_name >>> print(name) Johann Gambolputty >>> print(name.split()) ['Johann', 'Gambolputty'] >>> primes = [2, 3, 5, 7] >>> print(primes[1], sum(primes)) 3 17 >>> squares = (1, 4, 9, 16, 25) >>> print(squares[1:4]) (4, 9, 16) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 27 / 68

35 Sequenzoperationen + von s[0] ab 0 (Zugriff s erste Element) s[1:3] Teilsequenz (vom 2. bis 4. Element) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 28 / 68

36 Strings Strings in Python enthalten Unicode-Zeichen. Strings werden meistens " diese Weise" angegeben, es gibt aber viele alternative Schreibweisen. Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 29 / 68

37 Tupel und Listen Ein Tupel bzw. eine Liste ist eine Sequenz von Objekten. Tupel werden in runden, Listen in eckigen Klammern notiert: (2, 1, "Risiko") vs. ["red", "green", "blue"]. Tupel und Listen können beliebige Objekte enthalten, natürlich auch andere Tupel und Listen: ([18, 20, 22, "Null"], [("spam", [])]) Der Hauptunterschied zwischen Tupeln und Listen: Listen sind veränderlich (mutable). Elemente anhängen, einfügen oder entfernen. Tupel sind unveränderlich (immutable). Ein Tupel ändert sich nie, es enthält immer dieselben Objekte in derselben Reihenfolge. (Allerdings können sich die enthaltenen Objekte verändern, z.b. bei Tupeln von Listen.) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 30 / 68

38 Mehr zu Tupeln Die Klammern um Tupel sind optional. Sie können weggelassen werden, sofern dadurch keine Mehrdeutigkeit entsteht: >>> mytuple = 2, 4, 5 >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 31 / 68

39 Mehr zu Tupeln Die Klammern um Tupel sind optional. Sie können weggelassen werden, sofern dadurch keine Mehrdeutigkeit entsteht: >>> mytuple = 2, 4, 5 >>> print(mytuple) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 31 / 68

40 Mehr zu Tupeln Die Klammern um Tupel sind optional. Sie können weggelassen werden, sofern dadurch keine Mehrdeutigkeit entsteht: >>> mytuple = 2, 4, 5 >>> print(mytuple) (2, 4, 5) >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 31 / 68

41 Mehr zu Tupeln Die Klammern um Tupel sind optional. Sie können weggelassen werden, sofern dadurch keine Mehrdeutigkeit entsteht: >>> mytuple = 2, 4, 5 >>> print(mytuple) (2, 4, 5) >>> mylist = [(1, 2), (3, 4)] # Klammern notwendig Ausnahem: Einelementige Tupel sich ("so",). Bei a, b = 2, 3 werden Tupel komponentenweise zugewiesen (Tuple Unpacking). Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 31 / 68

42 Tuple Unpacking Tuple Unpacking funktioniert auch mit Listen und Strings und lässt sich sogar schachteln: >>> [a, (b, c), (d, e), f] = (42, (6, 9), "do", [1, 2, 3]) >>> Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 32 / 68

43 Tuple Unpacking Tuple Unpacking funktioniert auch mit Listen und Strings und lässt sich sogar schachteln: >>> [a, (b, c), (d, e), f] = (42, (6, 9), "do", [1, 2, 3]) >>> print(a, "*", b, "*", c, "*", d, "*", e, "*", f) Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 32 / 68

44 Tuple Unpacking Tuple Unpacking funktioniert auch mit Listen und Strings und lässt sich sogar schachteln: >>> [a, (b, c), (d, e), f] = (42, (6, 9), "do", [1, 2, 3]) >>> print(a, "*", b, "*", c, "*", d, "*", e, "*", f) 42 * 6 * 9 * d * o * [1, 2, 3] Strings Tupel und Listen Tupel Unpacking 06. November 2018 P. Thiemann Info I 32 / 68

45 06. November 2018 P. Thiemann Info I 33 / 68

46 Strings, Tupel und Listen haben etwas gemeinsam: Sie enthalten andere Objekte in einer bestimmten Reihenfolge und erlauben direkten Zugriff die einzelnen Komponenten mittels. Typen mit dieser Eigenschaft heißen Sequenztypen, ihre Instanzen. 06. November 2018 P. Thiemann Info I 35 / 68

47 Strings, Tupel und Listen haben etwas gemeinsam: Sie enthalten andere Objekte in einer bestimmten Reihenfolge und erlauben direkten Zugriff die einzelnen Komponenten mittels. Typen mit dieser Eigenschaft heißen Sequenztypen, ihre Instanzen. Sequenztypen unterstützen die folgenden : : "Gambol" + "putty" == "Gambolputty" : 2 * "spam" == "spamspam" : "Python"[1] == "y" : 17 in [11,13,17,19] : "Monty Python's Flying Circus"[6:12] == "Python" : for x in "egg" 06. November 2018 P. Thiemann Info I 35 / 68

48 >>> print("gambol" + "putty") 06. November 2018 P. Thiemann Info I 36 / 68

49 >>> print("gambol" + "putty") Gambolputty >>> 06. November 2018 P. Thiemann Info I 36 / 68

50 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> 06. November 2018 P. Thiemann Info I 36 / 68

51 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) 06. November 2018 P. Thiemann Info I 36 / 68

52 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> 06. November 2018 P. Thiemann Info I 36 / 68

53 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> 06. November 2018 P. Thiemann Info I 36 / 68

54 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) 06. November 2018 P. Thiemann Info I 36 / 68

55 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) (2, 3, 5, 7, 2, 3, 5, 7) >>> 06. November 2018 P. Thiemann Info I 36 / 68

56 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) (2, 3, 5, 7, 2, 3, 5, 7) >>> print(mylist + primes) 06. November 2018 P. Thiemann Info I 36 / 68

57 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) (2, 3, 5, 7, 2, 3, 5, 7) >>> print(mylist + primes) Traceback (most recent call last):... TypeError: can only concatenate list (not "tuple") to list >>> 06. November 2018 P. Thiemann Info I 36 / 68

58 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) (2, 3, 5, 7, 2, 3, 5, 7) >>> print(mylist + primes) Traceback (most recent call last):... TypeError: can only concatenate list (not "tuple") to list >>> print(mylist + list(primes)) 06. November 2018 P. Thiemann Info I 36 / 68

59 >>> print("gambol" + "putty") Gambolputty >>> mylist = ["spam", "egg"] >>> print(["spam"] + mylist) ['spam', 'spam', 'egg'] >>> primes = (2, 3, 5, 7) >>> print(primes + primes) (2, 3, 5, 7, 2, 3, 5, 7) >>> print(mylist + primes) Traceback (most recent call last):... TypeError: can only concatenate list (not "tuple") to list >>> print(mylist + list(primes)) ['spam', 'egg', 2, 3, 5, 7] 06. November 2018 P. Thiemann Info I 36 / 68

60 >>> print("*" * 20) 06. November 2018 P. Thiemann Info I 37 / 68

61 >>> print("*" * 20) ******************** >>> 06. November 2018 P. Thiemann Info I 37 / 68

62 >>> print("*" * 20) ******************** >>> print([none, 2, 3] * 3) 06. November 2018 P. Thiemann Info I 37 / 68

63 >>> print("*" * 20) ******************** >>> print([none, 2, 3] * 3) [None, 2, 3, None, 2, 3, None, 2, 3] >>> 06. November 2018 P. Thiemann Info I 37 / 68

64 >>> print("*" * 20) ******************** >>> print([none, 2, 3] * 3) [None, 2, 3, None, 2, 3, None, 2, 3] >>> print(2 * ("parrot", ["is", "dead"])) 06. November 2018 P. Thiemann Info I 37 / 68

65 >>> print("*" * 20) ******************** >>> print([none, 2, 3] * 3) [None, 2, 3, None, 2, 3, None, 2, 3] >>> print(2 * ("parrot", ["is", "dead"])) ('parrot', ['is', 'dead'], 'parrot', ['is', 'dead']) 06. November 2018 P. Thiemann Info I 37 / 68

66 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> 06. November 2018 P. Thiemann Info I 38 / 68

67 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 06. November 2018 P. Thiemann Info I 38 / 68

68 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> 06. November 2018 P. Thiemann Info I 38 / 68

69 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> animal = "parrot" >>> 06. November 2018 P. Thiemann Info I 38 / 68

70 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> animal = "parrot" >>> animal[-2] 06. November 2018 P. Thiemann Info I 38 / 68

71 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> animal = "parrot" >>> animal[-2] 'o' >>> 06. November 2018 P. Thiemann Info I 38 / 68

72 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> animal = "parrot" >>> animal[-2] 'o' >>> animal[10] 06. November 2018 P. Thiemann Info I 38 / 68

73 können von vorne und von hinten indiziert werden. Bei von vorne hat das erste Element Index 0. Zur von hinten dienen negative Indizes. Dabei hat das hinterste Element den Index 1. >>> primes = (2, 3, 5, 7, 11, 13) >>> print(primes[1], primes[-1]) 3 13 >>> animal = "parrot" >>> animal[-2] 'o' >>> animal[10] Traceback (most recent call last):... IndexError: string index out of range 06. November 2018 P. Thiemann Info I 38 / 68

74 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> 06. November 2018 P. Thiemann Info I 39 / 68

75 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 06. November 2018 P. Thiemann Info I 39 / 68

76 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> 06. November 2018 P. Thiemann Info I 39 / 68

77 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 06. November 2018 P. Thiemann Info I 39 / 68

78 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> 06. November 2018 P. Thiemann Info I 39 / 68

79 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) 06. November 2018 P. Thiemann Info I 39 / 68

80 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) <class 'str'> >>> 06. November 2018 P. Thiemann Info I 39 / 68

81 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) <class 'str'> >>> type(food[0]) 06. November 2018 P. Thiemann Info I 39 / 68

82 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) <class 'str'> >>> type(food[0]) <class 'str'> >>> 06. November 2018 P. Thiemann Info I 39 / 68

83 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) <class 'str'> >>> type(food[0]) <class 'str'> >>> food[0][0][0][0][0] 06. November 2018 P. Thiemann Info I 39 / 68

84 Wo sind die Zeichen? Python hat keinen eigenen Datentyp für Zeichen (chars). Für Python ist ein Zeichen ein String der Länge 1. >>> food = "spam" >>> food 'spam' >>> food[0] 's' >>> type(food) <class 'str'> >>> type(food[0]) <class 'str'> >>> food[0][0][0][0][0] 's' 06. November 2018 P. Thiemann Info I 39 / 68

85 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) 06. November 2018 P. Thiemann Info I 40 / 68

86 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) True >>> 06. November 2018 P. Thiemann Info I 40 / 68

87 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) True >>> if "spam" in ("ham", "eggs", "sausage"):... print("tasty") November 2018 P. Thiemann Info I 40 / 68

88 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) True >>> if "spam" in ("ham", "eggs", "sausage"):... print("tasty")... >>> 06. November 2018 P. Thiemann Info I 40 / 68

89 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) True >>> if "spam" in ("ham", "eggs", "sausage"):... print("tasty")... >>> print("m" in "spam", "ham" in "spam", "pam" in "spam") 06. November 2018 P. Thiemann Info I 40 / 68

90 : Der in-operator item in seq (seq ist ein Tupel oder eine Liste): True, wenn seq das Element item enthält. substring in string (string ist ein String): True, wenn string den Teilstring substring enthält. >>> print(2 in [1, 4, 2]) True >>> if "spam" in ("ham", "eggs", "sausage"):... print("tasty")... >>> print("m" in "spam", "ham" in "spam", "pam" in "spam") True False True 06. November 2018 P. Thiemann Info I 40 / 68

91 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> 06. November 2018 P. Thiemann Info I 41 / 68

92 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) 06. November 2018 P. Thiemann Info I 41 / 68

93 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) [3, 5, 7] >>> 06. November 2018 P. Thiemann Info I 41 / 68

94 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) [3, 5, 7] >>> print(primes[:2]) 06. November 2018 P. Thiemann Info I 41 / 68

95 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) [3, 5, 7] >>> print(primes[:2]) [2, 3] >>> 06. November 2018 P. Thiemann Info I 41 / 68

96 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) [3, 5, 7] >>> print(primes[:2]) [2, 3] >>> print("egg, sausage and bacon"[-5:]) 06. November 2018 P. Thiemann Info I 41 / 68

97 : Ausschneiden von Scheiben aus einer Sequenz: >>> primes = [2, 3, 5, 7, 11, 13] >>> print(primes[1:4]) [3, 5, 7] >>> print(primes[:2]) [2, 3] >>> print("egg, sausage and bacon"[-5:]) bacon 06. November 2018 P. Thiemann Info I 41 / 68

98 : Erklärung seq[i:j] liefert den Bereich [i, j), also die Elemente an den Positionen i,i + 1,...,j 1: ("do", "re", 5, 7)[1:3] == ("re", 5) Ohne i beginnt der Bereich an Position 0: ("do", "re", 5, 7)[:3] == ("do", "re", 5) Ohne j endet der Bereich am Ende der Folge: ("do", "re", 5, 7)[1:] == ("re", 5, 7) Der slice Operator [:] liefert eine Kopie der Folge: ("do", "re", 5, 7)[:] == ("do", "re", 5, 7) 06. November 2018 P. Thiemann Info I 42 / 68

99 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 06. November 2018 P. Thiemann Info I 43 / 68

100 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 'am' >>> 06. November 2018 P. Thiemann Info I 43 / 68

101 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 'am' >>> "spam"[-6:3] 06. November 2018 P. Thiemann Info I 43 / 68

102 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 'am' >>> "spam"[-6:3] 'spa' >>> 06. November 2018 P. Thiemann Info I 43 / 68

103 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 'am' >>> "spam"[-6:3] 'spa' >>> "spam"[7:] 06. November 2018 P. Thiemann Info I 43 / 68

104 : Erklärung (2) Beim gibt es keine Indexfehler. Bereiche jenseits des Endes der Folge sind leer. >>> "spam"[2:10] 'am' >>> "spam"[-6:3] 'spa' >>> "spam"[7:] '' Auch kann von hinten zählen. Z.B. liefert seq[-3:] die drei letzten Elemente. 06. November 2018 P. Thiemann Info I 43 / 68

105 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> 06. November 2018 P. Thiemann Info I 44 / 68

106 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] 06. November 2018 P. Thiemann Info I 44 / 68

107 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> 06. November 2018 P. Thiemann Info I 44 / 68

108 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] 06. November 2018 P. Thiemann Info I 44 / 68

109 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] [1, 3, 5, 7] >>> 06. November 2018 P. Thiemann Info I 44 / 68

110 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] [1, 3, 5, 7] >>> zahlen[7:2:-1] 06. November 2018 P. Thiemann Info I 44 / 68

111 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] [1, 3, 5, 7] >>> zahlen[7:2:-1] [7, 6, 5, 4, 3] >>> 06. November 2018 P. Thiemann Info I 44 / 68

112 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] [1, 3, 5, 7] >>> zahlen[7:2:-1] [7, 6, 5, 4, 3] >>> zahlen[::-1] 06. November 2018 P. Thiemann Info I 44 / 68

113 : Schrittweite Beim erweiterten gibt es zusätzlich noch eine Schrittweite: >>> zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zahlen[1:7:2] [1, 3, 5] >>> zahlen[1:8:2] [1, 3, 5, 7] >>> zahlen[7:2:-1] [7, 6, 5, 4, 3] >>> zahlen[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 06. November 2018 P. Thiemann Info I 44 / 68

114 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> 06. November 2018 P. Thiemann Info I 45 / 68

115 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) 06. November 2018 P. Thiemann Info I 45 / 68

116 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> 06. November 2018 P. Thiemann Info I 45 / 68

117 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) 06. November 2018 P. Thiemann Info I 45 / 68

118 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> 06. November 2018 P. Thiemann Info I 45 / 68

119 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') 06. November 2018 P. Thiemann Info I 45 / 68

120 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') ['s', 'p', 'a', 'm'] >>> 06. November 2018 P. Thiemann Info I 45 / 68

121 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') ['s', 'p', 'a', 'm'] >>> tuple('spam') 06. November 2018 P. Thiemann Info I 45 / 68

122 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') ['s', 'p', 'a', 'm'] >>> tuple('spam') ('s', 'p', 'a', 'm') >>> 06. November 2018 P. Thiemann Info I 45 / 68

123 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') ['s', 'p', 'a', 'm'] >>> tuple('spam') ('s', 'p', 'a', 'm') >>> str(['a', 'b', 'c']) 06. November 2018 P. Thiemann Info I 45 / 68

124 list, tuple, und str konvertieren zwischen den Sequenztypen (aber manchmal unerwartet). >>> tuple([0, 1, 2]) (0, 1, 2) >>> list(('spam', 'egg')) ['spam', 'egg'] >>> list('spam') ['s', 'p', 'a', 'm'] >>> tuple('spam') ('s', 'p', 'a', 'm') >>> str(['a', 'b', 'c']) "['a', 'b', 'c']" 06. November 2018 P. Thiemann Info I 45 / 68

125 Weitere Sequenzoperationen 1 sum(seq): Berechnet die Summe einer Zahlensequenz. min(seq), min(x, y,...): Berechnet das Minimum einer Sequenz (erste Form) bzw. der Argumente (zweite Form). werden lexikographisch verglichen. Der Versuch, das Minimum konzeptuell unvergleichbarer Typen (etwa Zahlen und Listen) zu bilden, führt zu einem TypeError. max(seq), max(x, y,...): analog zu min >>> max([1, 23, 42, 5]) 06. November 2018 P. Thiemann Info I 46 / 68

126 Weitere Sequenzoperationen 1 sum(seq): Berechnet die Summe einer Zahlensequenz. min(seq), min(x, y,...): Berechnet das Minimum einer Sequenz (erste Form) bzw. der Argumente (zweite Form). werden lexikographisch verglichen. Der Versuch, das Minimum konzeptuell unvergleichbarer Typen (etwa Zahlen und Listen) zu bilden, führt zu einem TypeError. max(seq), max(x, y,...): analog zu min >>> max([1, 23, 42, 5]) 42 >>> 06. November 2018 P. Thiemann Info I 46 / 68

127 Weitere Sequenzoperationen 1 sum(seq): Berechnet die Summe einer Zahlensequenz. min(seq), min(x, y,...): Berechnet das Minimum einer Sequenz (erste Form) bzw. der Argumente (zweite Form). werden lexikographisch verglichen. Der Versuch, das Minimum konzeptuell unvergleichbarer Typen (etwa Zahlen und Listen) zu bilden, führt zu einem TypeError. max(seq), max(x, y,...): analog zu min >>> max([1, 23, 42, 5]) 42 >>> sum([1, 23, 42, 5]) 06. November 2018 P. Thiemann Info I 46 / 68

128 Weitere Sequenzoperationen 1 sum(seq): Berechnet die Summe einer Zahlensequenz. min(seq), min(x, y,...): Berechnet das Minimum einer Sequenz (erste Form) bzw. der Argumente (zweite Form). werden lexikographisch verglichen. Der Versuch, das Minimum konzeptuell unvergleichbarer Typen (etwa Zahlen und Listen) zu bilden, führt zu einem TypeError. max(seq), max(x, y,...): analog zu min >>> max([1, 23, 42, 5]) 42 >>> sum([1, 23, 42, 5]) November 2018 P. Thiemann Info I 46 / 68

129 Weitere Sequenzoperationen 2 any(seq): Äquivalent zu elem1 or elem2 or elem3 or..., wobei elemi die Elemente von seq sind und nur True oder False zurück geliefert wird. all(seq): analog zu any, aber mit elem1 and elem2 and elem3 and November 2018 P. Thiemann Info I 47 / 68

130 Weitere Sequenzoperationen 3 len(seq): Berechnet die Länge einer Sequenz. sorted(seq): Liefert eine Liste, die dieselben Elemente hat wie seq, aber (stabil) sortiert ist. 06. November 2018 P. Thiemann Info I 48 / 68

131 Nützliche 06. November 2018 P. Thiemann Info I 49 / 68

132 Durchlen von mit for-schleifen: >>> primes = [2, 3, 5, 7] >>> product = 1 >>> for number in primes:... product *= number... >>> print(product) 210 Nützliche Visualisierung 06. November 2018 P. Thiemann Info I 51 / 68

133 (2) for funktioniert mit allen Sequenztypen: >>> for character in "spam":... print(character * 2)... ss pp aa mm >>> for ingredient in ("spam", "spam", "egg"):... if ingredient == "spam":... print("tasty!")... tasty! tasty! Nützliche 06. November 2018 P. Thiemann Info I 52 / 68

134 break, continue, else Im Zusammenhang mit Schleifen sind die folgenden drei Anweisungen interessant: break beendet eine Schleife vorzeitig. continue beendet die aktuelle Schleifeniteration vorzeitig, d.h. springt zum Schleifenkopf und setzt die Schleifenvariable den nächsten Wert. Schleifen können einen else-zweig haben. Dieser wird nach Beendigung der Schleife ausgeführt, und zwar genau dann, wenn die Schleife nicht mit break verlassen wurde. Nützliche 06. November 2018 P. Thiemann Info I 53 / 68

135 break, continue und else: Beispiel foods_and_amounts = [("sausage", 2), ("eggs", 0), ("spam", 2), ("ham", 1)] for fa in foods_and_amounts: food, amount = fa if amount == 0: continue if food == "spam": print(amount, "tasty piece(s) of spam.") break else: print("no spam!") Nützliche # Ausgabe: # 2 tasty piece(s) of spam. 06. November 2018 P. Thiemann Info I 54 / 68

136 Nützliche im Zusammenhang mit for-schleifen Einige tauchen häufig im Zusammenhang mit for-schleifen : range zip reversed Nützliche 06. November 2018 P. Thiemann Info I 55 / 68

137 range Konzeptuell erzeugt range eine Liste von Indexen für Schleifendurchläufe: range(stop) ergibt 0, 1,..., stop-1 range(start, stop) ergibt start, start+1,..., stop-1 range(start, stop, step) ergibt start, start + step, start + 2 * step,..., stop-1 range spart gegenüber einer echten Liste Speicherplatz, da gerade keine Liste angelegt werden muss. Nützliche 06. November 2018 P. Thiemann Info I 56 / 68

138 range: Beispiele >>> range(5) range(0, 5) >>> range(3, 30, 10) range(3, 30, 10) >>> list(range(3, 30, 10)) [3, 13, 23] >>> for i in range(3, 6):... print(i, "** 3 =", i ** 3)... 3 ** 3 = 27 4 ** 3 = 64 5 ** 3 = 125 Nützliche 06. November 2018 P. Thiemann Info I 57 / 68

139 zip (1) Die Funktion zip nimmt eine oder mehrere und liefert eine Liste von Tupeln mit korrespondierenden Elementen. Auch zip erzeugt keine richtige Liste, sondern einen Iterator; der Listen-Konstruktor erzeugt daraus eine richtige Liste. >>> meat = ["spam", "ham", "beacon"] >>> sidedish = ["spam", "pasta", "chips"] >>> print(list(zip(meat,sidedish))) [('spam', 'spam'), ('ham', 'pasta'), ('beacon', 'chips')] Nützliche 06. November 2018 P. Thiemann Info I 58 / 68

140 zip (2) Besonders nützlich ist zip, um mehrere parallel zu durchlen: >>> for xyz in zip("ham", "spam", range(5, 10)):... x, y, z = xyz... print(x, y, z)... h s 5 a p 6 m a 7 Nützliche Sind die Eingabesequenzen unterschiedlich lang, ist das Ergebnis so lang wie die kürzeste Eingabe. 06. November 2018 P. Thiemann Info I 59 / 68

141 reversed Die Funktion reversed ermöglicht das Durchlen einer Sequenz in umgekehrter Richtung. >>> for x in reversed("ham") :... print(x)... m a h Nützliche 06. November 2018 P. Thiemann Info I 60 / 68

142 Beispiel (I) Fakultätsfunktion Zu einer positiven ganzen Zahl soll die Fakultät berechnet werden. 0! = 1 (n + 1)! = (n + 1) n! (1) Schritt 1: Bezeichner und Datentypen Entwickle eine Funktion fac, die die Fakultät einer positiven ganzen Zahl berechnet. Eingabe ist n : int (mit n >= 0) Ausgabe ist ein int. Nützliche 06. November 2018 P. Thiemann Info I 61 / 68

143 Nächste Schritte Schritt 2: Funktionsgerüst def fac ( n : int # assume n >= 0 ) -> int # fill in return Schritt 3: Beispiele fac (0) == 1 fac (1) == 1 fac (3) == 6 Nützliche 06. November 2018 P. Thiemann Info I 62 / 68

144 Ergebnis def fac ( n : int ) -> int : result = 1 for i in range (1, n +1): result = result * i return result Nützliche 06. November 2018 P. Thiemann Info I 63 / 68

145 Beispiel (II) Produkt einer Sequenz Aus einer Sequenz von Zahlen soll das Produkt der Zahlen berechnet werden. Schritt 1: Bezeichner und Datentypen Entwickle eine Funktion product, die das Produkt einer Liste von Zahlen berechnet. Eingabe ist xs # sequence (dafür gibt es keinen Typ) Ausgabe ist eine Zahl (dafür auch kein Typ), das Produkt der Elemente der Eingabe. Nützliche 06. November 2018 P. Thiemann Info I 64 / 68

146 Nächste Schritte Schritt 2: Funktionsgerüst def product ( xs # sequence ): # number # fill in return Schritt 3: Beispiele product ([]) == 1 product ([42]) == 42 product ([3,2,1]) == 3 * product ([2,1]) == 6 product ([1, -1,1]) == -1 Nützliche 06. November 2018 P. Thiemann Info I 65 / 68

147 Neuer Schritt: Gerüst zur Verarbeitung von Falls ein Argument eine Sequenz (Liste, Tupel, String,... ) ist, dann ist es naheliegend, dass diese Sequenz durchlen wird. def product ( xs # sequence ): # number # fill in for x in xs: # fill in action for each element return Nützliche 06. November 2018 P. Thiemann Info I 66 / 68

148 Ergebnis def product ( xs # sequence ): # number result = 1 # product ([]) for x in xs: result = result * x return result Nützliche 06. November 2018 P. Thiemann Info I 67 / 68

149 Zusammenfassung Wollen wir richtige, brauchen wir Werkzeuge (Tools). Texteditor (nicht Word!), möglichst mit integriertem Syntaxchecker. Werden Zeilen zu lang, müssen sie umgebrochen werden. Kommentare sind hilfreich, um das Programm zu verstehen. Block-, Fließtext und doctsring-kommentare Python- können viele verschiedene Arten gestartet werden. IDLE ist eine einfache Python IDE (Integrated Development Environment). Nützliche 06. November 2018 P. Thiemann Info I 68 / 68

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 6. Python-, kommentieren, und Albert-Ludwigs-Universität Freiburg Peter Thiemann 06. November 2018 1 06. November 2018 P. Thiemann Info I 3 / 68 = konkretisierte

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 6. Python-, kommentieren, und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 28. Oktober 2016 1 28. Oktober 2016 B. Nebel Info I 3 / 30 = konkretisierte

Mehr

Programmieren in Python

Programmieren in Python 4. Sequenzen: Strings, Tupel, Listen Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 Kommentare und hello.py hello.py # So langsam werden die Codebeispiele umfangreicher.

Mehr

Programmieren in Python 4. Sequenzen: Strings, Tupel, Listen

Programmieren in Python 4. Sequenzen: Strings, Tupel, Listen Kommentare und hello.py Programmieren in Python 4. : Strings, Tupel, Listen Robert Mattmüller Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 hello.py # So langsam

Mehr

1 Sequenzen. Informatik I: Einführung in die Programmierung 10. Sequenzen, for-schleifen, Objekte und Identität. Beispiel zu Sequenzen.

1 Sequenzen. Informatik I: Einführung in die Programmierung 10. Sequenzen, for-schleifen, Objekte und Identität. Beispiel zu Sequenzen. 1 Informatik I: Einführung in die Programmierung 10., for-schleifen, Albert-Ludwigs-Universität Freiburg Bernhard Nebel 10. November 2017 10. November 2017 B. Nebel Info I 3 / 62 Beispiel zu Wir beschäftigen

Mehr

Programmieren in Python

Programmieren in Python Kommentare und hello.py Programmieren in Python 4. Sequenzen: Strings, Tupel, Listen Malte Helmert Albert-Ludwigs-Universität Freiburg KI-Praktikum, Sommersemester 2009 hello.py # So langsam werden die

Mehr

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme. Informatik I 05. November 2013 6. Python-, kommentieren, starten und entwickeln Informatik I 6. Python-, kommentieren, starten und entwickeln Bernhard Nebel Albert-Ludwigs-Universität Freiburg 05. November

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 6. Python-, kommentieren, und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 30. Oktober 2015 30. Oktober 2015 B. Nebel Info I 2 / 30 = konkretisierte

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 5., bedingte Ausführung und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 27. Oktober 2017 1 und der Typ bool Typ bool Typ bool Vergleichsoperationen

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 5., bedingte Ausführung Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 und der Typ bool Typ bool Typ bool Vergleichsoperationen Logische

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A2. Eine sehr kurze Einführung in Python Marcel Lüthi and Gabriele Röger Universität Basel 28. Februar 2018 Python Python interpretierte High-Level-Programmiersprache unterstützt

Mehr

A2.1 Python. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A2.1 Python. A2.2 Kurzer Sprachüberblick. A2.3 Selectionsort in Python

A2.1 Python. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A2.1 Python. A2.2 Kurzer Sprachüberblick. A2.3 Selectionsort in Python Algorithmen und Datenstrukturen 28. Februar 2018 A2. Eine sehr kurze Einführung in Python Algorithmen und Datenstrukturen A2. Eine sehr kurze Einführung in Python A2.1 Python Marcel Lüthi and Gabriele

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

Mehr

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren 1 und der Informatik I: Einführung in die Programmierung 5., bedingte Ausführung und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 27. Oktober 2015 27. Oktober 2015 B. Nebel Info I 3 / 21 Der Vergleichsoperatoren

Mehr

WS2018/ Oktober 2018

WS2018/ Oktober 2018 Einführung in die Programmierung Ronja Düffel WS2018/19 02. Oktober 2018 RBI-Account Account für das Rechnernetz der Informatik RBI-Account HRZ-Account zum Arbeiten an und auf den Rechnern des Instituts

Mehr

WS2017/ Oktober 2017

WS2017/ Oktober 2017 Einführung in die Programmierung Ronja Düffel WS2017/18 09. Oktober 2017 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen

Mehr

Einführung in Python. Übung zur Vorlesung NLP Beate Krause, Dominik Benz NLP-Übung: Einführung in Python 1

Einführung in Python. Übung zur Vorlesung NLP Beate Krause, Dominik Benz NLP-Übung: Einführung in Python 1 Einführung in Python Übung zur Vorlesung NLP Beate Krause, Dominik Benz 22.04.2008 23.04.2008 NLP-Übung: Einführung in Python 1 Ablauf der Übung Klärung von aktuellen Fragen zur Vorlesung Kurze Einführung

Mehr

WS2017/ Oktober 2017

WS2017/ Oktober 2017 Ronja Düffel WS2017/18 05. Oktober 2017 mit Python Programmieren (vereinfacht) 1 Problem beschreiben und analysieren 2 Enwicklung und Beschreibung einer Lösung 3 Übertragung/Umsetzung in eine Programmiersprache

Mehr

Programmieren in Python

Programmieren in Python 3. Variablen, Funktionen und Bedingungen Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 Variablen, Funktionen und Bedingungen Bisher sind wir über die Funktionen

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Übung 2 Laura Kallmeyer Sommersemester 204, Heinrich-Heine-Universität Düsseldorf Offizielle Python Seite, auf der man jede Menge Dokumentation findet: http://www.python.org/

Mehr

4 Daten in Python. Primäres Ziel: Daten zu Containern zusammenfassen, insbesondere Vektoren etc., um vernünftige Beispiele rechnen zu können.

4 Daten in Python. Primäres Ziel: Daten zu Containern zusammenfassen, insbesondere Vektoren etc., um vernünftige Beispiele rechnen zu können. 4 Daten in Python Primäres Ziel: Daten zu Containern zusammenfassen, insbesondere Vektoren etc., um vernünftige Beispiele rechnen zu können. Vorher genauerer Blick auf die Behandlung von Daten in Python

Mehr

Funktionen in Python

Funktionen in Python Funktionen in Python Prof. Dr. Rüdiger Weis Beuth Hochschule für Technik Berlin 1 / 31 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente

Mehr

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke Informatik I: Einführung in die Programmierung 3. Werte,, n und Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 30. Oktober 2018 P. Thiemann Info I 3 / 39 Bits Der Computer repräsentiert

Mehr

Programmieren in Python

Programmieren in Python 3. Variablen, Funktionen und Bedingungen Albert-Ludwigs-Universität Freiburg KI-Praktikum, Sommersemester 2009 Variablen, Funktionen und Bedingungen Bisher sind wir über die Funktionen eines Taschenrechners

Mehr

Programming 101. Carl Herrmann IPMB & DKFZ

Programming 101. Carl Herrmann IPMB & DKFZ Programming 101 Carl Herrmann IPMB & DKFZ Programmieren Kommandozeile Einfache Befehle Shell Skript aneinanderketten von Befehlen Schleifen Programmiersprache Komplexere Aufgaben Gemeinsamkeiten Alle Programmiersprachen

Mehr

Programmieren in Python

Programmieren in Python 10. Iteratoren und Generatoren Albert-Ludwigs-Universität Freiburg KI-Praktikum, Sommersemester 2009 Iteratoren und Generatoren Überblick über diese Lektion: Iteratoren Generatoren Generator Comprehensions

Mehr

PYTHON. 03 for-schleifen, Funktionen

PYTHON. 03 for-schleifen, Funktionen PYTHON 03 for-schleifen, Funktionen for-schleife kann verwendet werden, um eine bestimmte Anzahl an Wiederholungen durchzuführen kann verwendet werden, um ein bestimmtes Objekt (z.b. eine Liste) zu durchlaufen

Mehr

Programmieren in Python

Programmieren in Python 10. Iteratoren und Generatoren Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 Iteratoren und Generatoren Überblick über diese Lektion: Iteratoren Generatoren Generator

Mehr

Informatik I. Informatik I Iteratoren Generatoren Das Modul itertools. Iterierbare Objekte Iteratoren. Python-Interpreter

Informatik I. Informatik I Iteratoren Generatoren Das Modul itertools. Iterierbare Objekte Iteratoren. Python-Interpreter Informatik I 28.01.2014 25. und Informatik I 25. und Bernhard Nebel Albert-Ludwigs-Universität Freiburg 25.1 25.2 25.3 Das Modul itertools 28.01.2014 Bernhard Nebel (Universität Freiburg) Informatik I

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 7., While-, Hilfsfunktionen und Akkumulatoren Albert-Ludwigs-Universität Freiburg Peter Thiemann 13. November 2018 1 13. November 2018 P. Thiemann Info I

Mehr

Funktionen in Python

Funktionen in Python October 19, 2006 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung def def funktionsname([]) : [ Dokumentationsstring

Mehr

Python Intro. Vorsemesterkurs Informatik Praktischer Teil WS2012/13. 2.Oktober Vorkurs Informatik - WS 2012/13

Python Intro. Vorsemesterkurs Informatik Praktischer Teil WS2012/13. 2.Oktober Vorkurs Informatik - WS 2012/13 Python Intro Vorsemesterkurs Informatik Praktischer Teil WS2012/13 2.Oktober 2012 Let's get started } Skript, Übungen, Folien... Alles zum Praxisteil auf http://vorkurs.cs.unifrankfurt.de Bücher: Fragen!

Mehr

Programmieren in Python 3. Variablen, Funktionen und Bedingungen

Programmieren in Python 3. Variablen, Funktionen und Bedingungen Variablen, Funktionen und Bedingungen Programmieren in Python 3. Variablen, Funktionen und Bedingungen Robert Mattmüller Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011

Mehr

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut Mathematisches Institut mselva@math.uni-koeln.de 24 März 2009 Übungen zur Numerik 1 Vorlesung Übungen praktische Aufgaben Webseite: (Anmeldung, Übungsblätter) http://www.mi.uni-koeln.de/~mselva/numerik1.php

Mehr

WS2018/ Oktober 2018

WS2018/ Oktober 2018 Einführung in die Programmierung Ronja Düffel WS2018/19 05. Oktober 2018 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen

Mehr

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python 1 def Anweisung Sommersemester 2007 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung Beispiel: TuNix def def funktionsname([])

Mehr

Quick-Start Informatik Programmieren in Python Teil 2

Quick-Start Informatik Programmieren in Python Teil 2 Quick-Start Informatik 2011 Programmieren in Python Teil 2 Organisatorisches Self-Assessment-Bögen Aufgabenblätter! Rückblick 1. Programmieren: Wie geht das? (IDLE, REPL,.py-Dateien) 2. Daten und Datentypen

Mehr

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion 1 Funktionsaufrufe Informatik I: Einführung in die Programmierung 4. : und en Albert-Ludwigs-Universität Freiburg Bernhard Nebel 24./28. Oktober 2014 24./28. Oktober 2014 B. Nebel Info I 3 / 31 Funktionsaufrufe

Mehr

Programmieren in Python

Programmieren in Python Ausgaben und Zahlen Programmieren in Python 2. Ausgaben und Zahlen Malte Helmert Albert-Ludwigs-Universität Freiburg In dieser Lektion geht es darum, ein erstes Gefühl für Python zu bekommen. Wir beschränken

Mehr

Algorithmik und Programmieren

Algorithmik und Programmieren Institut für Informatik Forschungsgruppe Datenbanken und Informationssysteme (DBIS) Universität Innsbruck Algorithmik und Programmieren Martin Pichl Datenbanken und Informationssysteme (DBIS) dbis.uibk.ac.at

Mehr

Python Intro I. Vorsemesterkurs Informatik Praktischer Teil WS 2013/14. 1.Oktober Vorkurs Informatik - WS 2013/14

Python Intro I. Vorsemesterkurs Informatik Praktischer Teil WS 2013/14. 1.Oktober Vorkurs Informatik - WS 2013/14 Python Intro I Vorsemesterkurs Informatik Praktischer Teil WS 2013/14 1.Oktober 2013 Let's get started } Skript, Übungen, Folien... Alles zum Praxisteil auf http://vorkurs.cs.unifrankfurt.de Bücher: Fragen!

Mehr

Informatik I. Informatik I. 4.1 Funktionsaufrufe. 4.2 Mathematische Funktionen. 4.3 Funktionsdefinitionen. 4.4 Variablengültigkeitsbereich

Informatik I. Informatik I. 4.1 Funktionsaufrufe. 4.2 Mathematische Funktionen. 4.3 Funktionsdefinitionen. 4.4 Variablengültigkeitsbereich Informatik I 25. Oktober 2013 4. Funktionen: Aufrufe und Definitionen Informatik I 4. Funktionen: Aufrufe und Definitionen Bernhard Nebel Albert-Ludwigs-Universität Freiburg 25. Oktober 2013 4.1 Funktionsaufrufe

Mehr

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs Grundlagen Felix Döring, Felix Wittwer 24. April 2017 Python-Kurs Gliederung 1. Über diesen Kurs 2. Der Python Interpreter 3. Python Scripte 4. Grundlagen der Sprache 5. Das erste Programm 6. Operatoren

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python Vorsemesterkurs Informatik Übungsaufgaben Tag 4a - Python Aufgabe 1: Listen Mache dich im Python-Interpreter mit dem Umgang mit Listen vertraut. Kapitel 2.6 im Skript (s.40) enthält nützliche Informationen.

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Funktionen (fortgeschritten)

Funktionen (fortgeschritten) Funktionen (fortgeschritten) Felix Döring, Felix Wittwer 24. April 2017 Python-Kurs Gliederung 1. Nutzung von Funktionen Default Parameter Aufruf mit Namen 2. Aggregatoren Positionale Aggregatoren Benannte

Mehr

Inhaltsverzeichnis. Warren D. Sande, Carter Sande. Hello World! Programmieren für Kids und andere Anfänger. Übersetzt von Dorothea Heymann-Reder

Inhaltsverzeichnis. Warren D. Sande, Carter Sande. Hello World! Programmieren für Kids und andere Anfänger. Übersetzt von Dorothea Heymann-Reder sverzeichnis Warren D. Sande, Carter Sande Hello World! Programmieren für Kids und andere Anfänger Übersetzt von Dorothea Heymann-Reder ISBN: 978-3-446-42144-8 Weitere Informationen oder Bestellungen unter

Mehr

Bash-Skripting Linux-Kurs der Unix-AG

Bash-Skripting Linux-Kurs der Unix-AG Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 07.01.2013 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian

Mehr

Arithmetik in der tcsh

Arithmetik in der tcsh Arithmetik in der tcsh Variablen speichern Zeichenketten (also Strings/Wörter) @ statt set Interpretation als arithmetische Ausdrücke (aus Ziffern, (, ), +, -, *, /, % bestehend) Beispiele: @ var = (3

Mehr

Übungszettel 2a - Python

Übungszettel 2a - Python Vorsemesterkurs Informatik Übungsaufgaben Übungszettel 2a - Python Aufgabe 1: Python starten Teilaufgaben (a)-(c) beziehen sich auf das Arbeiten unter den Systemen, die auf den RBI-Rechnern installiert

Mehr

Quick-Start Informatik Programmieren in Python Teil 1

Quick-Start Informatik Programmieren in Python Teil 1 Quick-Start Informatik 2011 Programmieren in Python Teil 1 Alles zum Praxisteil } Skript, Übungen, auf Folien... http://vorkurs.cs.uni-frankfurt.de Bücher: Gratis: http://learnpythonthehardway.org/ Fragen,

Mehr

Algorithmik und Programmieren

Algorithmik und Programmieren Institut für Informatik Forschungsgruppe Datenbanken und Informationssysteme (DBIS) Universität Innsbruck Algorithmik und Programmieren Martin Pichl Datenbanken und Informationssysteme (DBIS) dbis.uibk.ac.at

Mehr

Informatik I. 19. Schleifen und Iteration für verlinkte Listen. Jan-Georg Smaus. Albert-Ludwigs-Universität Freiburg. 27.

Informatik I. 19. Schleifen und Iteration für verlinkte Listen. Jan-Georg Smaus. Albert-Ludwigs-Universität Freiburg. 27. Informatik I 19. Schleifen und Iteration für verlinkte Listen Jan-Georg Smaus Albert-Ludwigs-Universität Freiburg 27. Januar 2011 Jan-Georg Smaus (Universität Freiburg) Informatik I 27. Januar 2011 1 /

Mehr

5. Von Java nach Python

5. Von Java nach Python Erstes Java Programm 5. Von Java nach Python Erstes Python Programm, Transfer Java Python, Dynamische Datenstrukturen in Python public class Hello { public static void main (String[] args) { System.out.print("Hello

Mehr

Programmieren in Python

Programmieren in Python Iteratoren und Generatoren Programmieren in Python 10. Iteratoren und Generatoren Malte Helmert Albert-Ludwigs-Universität Freiburg Überblick über diese Lektion: Iteratoren Generatoren Generator Comprehensions

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Probeklausur Name: (c)

Probeklausur Name: (c) Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume

Mehr

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben 18.11.5 1 HEUTE 18.11.5 3 Schleifen Arrays while, do reichen aus, um alle iterativen Algorithmen zu beschreiben Nachteil: Steuermechanismus ist verteilt Übersicht nicht immer leicht dazu gibt es for (

Mehr

Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I.

Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I. 4. Funktionen: Aufrufe und en Aufrufe Albert-Ludwigs-Universität Freiburg 25. Oktober 2013 1 / 23 Aufrufe Funktionsaufrufe 2 / 23 Funktionsaufrufe Innerhalb von Programmiersprachen ist eine Funktion ein

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Informatik I. Informatik I Dictionaries Mengen Dictionaries. Dictionaries. 11. Dictionaries & Mengen.

Informatik I. Informatik I Dictionaries Mengen Dictionaries. Dictionaries. 11. Dictionaries & Mengen. Informatik I 19. November 2013 11. & Informatik I 11. & Bernhard Nebel 11.1 11.2 Albert-Ludwigs-Universität Freiburg 19. November 2013 Bernhard Nebel (Universität Freiburg) Informatik I 19. November 2013

Mehr

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen. Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

3.3 Entwurf von Datentypen

3.3 Entwurf von Datentypen 3.3 Entwurf von Datentypen Durch das Erzeugen von Datentypen entwickelt der Programmierer eine eigene Sprache, mit der über die Daten gesprochen werden kann. Deshalb muss man beim Entwickeln einer Idee

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-11-05 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater) Übersicht Variablen Datentypen Werte Operatoren und Ausdrücke Kontrollstrukturen: if, while

Mehr

Wiederholung: Listen, Referenzen

Wiederholung: Listen, Referenzen Wiederholung: Listen, Referenzen Symbolische Programmiersprache Benjamin Roth and Annemarie Friedrich Wintersemester 2016/2017 Centrum für Informations- und Sprachverarbeitung LMU München 1 Wiederholung

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Inhaltsverzeichnis Einleitung xi Kapitel 1: Die Vorbereitung aufs Abenteuer

Inhaltsverzeichnis Einleitung xi Kapitel 1: Die Vorbereitung aufs Abenteuer Inhaltsverzeichnis Einleitung Warum man programmieren können sollte.... xi Warum Python?.... xii Und warum Minecraft?... xii Was du in diesem Buch findest... xiii Online-Ressourcen....xv Möge das Abenteuer

Mehr

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante

Mehr

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014 Python 2! Vorlesung Computerlinguistische Techniken Alexander Koller! 28. Oktober 2014 Listen Sequenz von beliebigen Werten. Literale: [], [1,2,3], [ hallo, True, -5.0] Hinten an Liste anhängen: L.append(27)

Mehr

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs Grundlagen Felix Döring, Felix Wittwer 24. April 2017 Python-Kurs Gliederung 1. Scriptcharakter 2. Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren 3.

Mehr

Anweisungen in Python

Anweisungen in Python Sommersemester 2007 1 if 2 elif 3 while 4 for 5 Schleifenabbruch Blockbildung Blockbildung durch Einrücken Keine Klammerung Empfehlungen Leerzeichen verwenden 4 Leerzeichen einrücken Unterstützenden Editor

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Übersicht Shell-Scripten

Übersicht Shell-Scripten !!!! Wichtig: Bei Shell-Scripten enden die Zeilen nicht mit einem Strichpunkt!!!! Erste Zeile eines Shell-Scripts: #! /bin/bash Variablen in Shell-Scripts: Variablennamen müssen mit einem Buchstaben beginnen,

Mehr

Zahlen raten. Al Sweigart, Eigene Spiele programmieren Python lernen, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Zahlen raten. Al Sweigart, Eigene Spiele programmieren Python lernen, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm D3kjd3Di38lk323nnm 33 3 Zahlen raten In diesem Kapitel schreiben Sie ein Zahlenratespiel (»Guess The Number«). Der Computer denkt sich eine Geheimzahl von 1 bis 20 aus und bittet den Benutzer, sie zu erraten.

Mehr

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer Allgemeines Shell Programmierung Unix Shell Scripts Unix Ein shell script ist eine Textdatei, welche eine Liste von Befehlen (Standard Unix Befehle) beinhaltet. Diese Datei kann durch Aufrufen ausgeführt

Mehr

hue03 November 11, 2016

hue03 November 11, 2016 hue03 November 11, 2016 Bitte tragen Sie Ihre Matrikelnummern und E-Mail-Adressen zeilenweise in die Zelle oberhalb dieser Zelle ein. Beachten Sie: Die Abgabe muss mit Ihrem Gruppenaccount erfolgen, den

Mehr

1. Python Interpreter installieren (WinPython)

1. Python Interpreter installieren (WinPython) 1 Excel - User Defined Functions mit Python Um Python als Programmiersprache für Excel UDFs verwenden zu können muss ein Python Interpreter(z.B. WinPython) und xlwings installiert werden: Inhalt 1. Python

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline. javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline. Inhalts-Verzeichnis 1. Allgemeine Richtlinien...1 1.1 Anzahl

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Einführung in die Programmierung Debugging

Einführung in die Programmierung Debugging Einführung in die Programmierung Debugging Ronja Düffel WS2017/18 11. Oktober 2017 Debugging machen Sie alle schon längst Bug: Fehler im Programm Debugging: Suchen und Beheben von Fehlern im Programm gefühlt

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr