Algorithmik kontinuierlicher Systeme. Einführung in Python

Ähnliche Dokumente
Python Zahlen, Strings Logik Kontrollstrukturen. Scriptsprachen. Python Basics. Sascha Winter

Algorithmik und Programmieren

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

Programmierkurs Python I

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

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

Brückenkurs Informatik Algorithmik und Programmieren. Justus Piater

Algorithmik und Programmieren

Python Workshop i. Python Workshop

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

WS2017/ Oktober 2017

Funktionen in Python

Programmieren in Python

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

Python als praktischer Helfer

Minimaleinführung in Python 3

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

Computerphysik II. Python Einführung. S. Gerlach. WiSe S. Gerlach Computerphysik II

Quick-Start Informatik Programmieren in Python Teil 2

Einführung in die Programmierung Debugging

Programming 101. Carl Herrmann IPMB & DKFZ

Programmieren I. Kapitel 5. Kontrollfluss

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Programmieren II Einführung in Python (Teil 2)

WS2018/ Oktober 2018

Programmieren in Python

Programmierkurs Python I

Programmierkurs Python I

Programmieren in Python

WS2018/ Oktober 2018

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Programmieren in Python 3. Variablen, Funktionen und Bedingungen

1. Python Interpreter installieren (WinPython)

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Einführung in die Programmierung für NF. Übung

Gültigkeitsbereich. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/

Funktionen in Python

Einführung in die Computerlinguistik

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

PYTHON. 03 for-schleifen, Funktionen

Anweisungen in Python

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

Einführung in Python/Matplotlib

AuD-Tafelübung T-B5b

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Einführung in Python Teil II Bibliotheken für wissenschaftliches Rechnen

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr

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

Einstieg in die Informatik mit Java

Python für Linguisten

2. Programmierung in C

Programmierung in Python

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

Informatik I: Einführung in die Programmierung

Multimedia Programmierung mit Python

PYTHON. 04 Funktionen II, Module

Python. und statistische Methoden der Datenanalyse

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

2. Programmierung in C

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

Sun s Java Code Conventions

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Computerphysik II. Python Einführung. S. Gerlach. WiSe S. Gerlach Computerphysik II

Werkzeuge zur Programmentwicklung

Einführung in Python. O'REILLY 8 Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo. Mark Lutz & David Ascher

Crashkurs Python und Sage U23 Krypto-Mission

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

Einstieg in die Informatik mit Java

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2018

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

Programmierkurs ( Wintersemester 2017 ) Aufgabenblatt 3 Dr. Ole Klein, Dr. Steffen Müthing Abgabe 20. November 2017 IWR, Universität Heidelberg

Skriptsprachen: Python

Informatik I: Einführung in die Programmierung

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Transkript:

Algorithmik kontinuierlicher Systeme Einführung in Python

Organisatorisches Vorlesung um 8:15 oder um 8:30? Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 2

Kurzer Werbeblock Elementary Recursion Theory (ERT) 2.5 ECTS Heute 14:15 Raum 00.133-128 Dozent: wolfgang.degen@fau.de Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 3

Neuheit des Jahres: Python statt C++ Gründe für den Wechsel: Guten C++ Code zu schreiben ist SEHR schwierig Python ist mittlerweile ebenso populär Expliziter Wunsch der Fachschaften Wer trotzdem C++ lernen möchte: Advanced Programming Techniques (AdvPT) Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 4

Python Eine freie Skriptsprache Eine der 10 populärsten Sprachen der Welt BDFL: Guido van Rossum Tausende Bibliotheken, z.b. NumPy für Numerik Das bessere Matlab Webseite und Dokumentation: www.python.org Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 5

Python auf einen Blick Einrückung ist Pflicht Einfach & Gut lesbar Automatische Speicherverwaltung Alles ist ein Objekt Ententypisierung Gute Anbindung an C/C++ Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 6

Python verwenden Unter Linux: $ apt-get install python3-scipy python3-matplotlib $ python3.5 # WICHTIG Python 3.5 >>> 5+5 10 $ python3.5 mein_programm.py Auf anderen Systemen (Windows, MacOS) Anaconda installieren: www.continuum.io/downloads Den Instruktionen auf der Website folgen Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 7

Python Entwicklungsumgebungen Im CIP installiert: PyCharm www.jetbrains.com/pycharm addpackage pycharm pycharm Vim www.vim.org Emacs www.gnu.org/software/emacs Oder ein Editor aus der folgenden Übersicht: wiki.python.org/moin/pythoneditors Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 8

1. Python Grundlagen Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 9

Zahlen Die Operatoren +, -,*,% und ** verhalten sich wie gewohnt >>> 2 + 2 4 >>> ((2-3) * 5) ** 2 25 Der / Operator verhält sich anders als in C und Java >>> -9 / 5-1.8 Der // Operator rundet zur nächst niedrigeren Zahl >>> -9 // 5-2 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 10

Zuweisungen Zugewiesen wird mit = >>> a = 5 >>> a 5 Variablen werden automatisch bei Zuweisung angelegt >>> foo NameError: name 'foo' is not defined >>> foo = 42 >>> foo 42 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 11

Zuweisungen Mehrfachzuweisungen sind möglich >>> a, b = 5, 6 >>> b 6 >>> b, a = a, b >>> b 5 >>> a 6 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 12

Zeichenketten >>> 'Zeichenkette' 'Zeichenkette' >>> "foo" == """foo""" == 'foo' == '''foo''' True Sonderzeichen wie gewohnt: >>> print("foo\nbar") foo bar Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 13

Zeichenketten (2) Funktionen in Python sind überraschend generisch >>> "Na " * 8 + "Batman!" 'Na Na Na Na Na Na Na Na Batman!' Zeichenketten können über mehrere Zeilen gehen """foo bar baz """ # aber nur mit ''' oder """ Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 14

Boolsche Ausdrücke >>> 5 == 3 + 2 True >>> 2 <= 5 <= 7 True Boolsche Funktionen werden ausgeschrieben (and, not, or) >>> x = 2 >>> x < 3 and not x > 7 True Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 15

Funktionen >>> def praise(name): print(name + " ist super!\n") >>> praise("python") Python ist super! >>> def square(x): return x*x >>> square(5) 25 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 16

Funktionen >>> def factorial(n): if n == 0: return 1 elif n > 0: return n * factorial(n-1) >>> factorial(5) 120 >>> factorial(-2) >>> Alle Funktionen geben implizit None zurück Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 17

Dokumentieren von Funktionen Zeichenketten am Anfang der Funktion werden als Dokumentation erkannt Gute Dokumentation ist sehr wertvoll >>> def praise(name): """Praise the Entity specified by the string ``name`` by printing a statement to the standard output. """ print(name + " ist super!\n") Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 18

Einrückung Vorteil: Code braucht (normalerweise) keine Semikolons Nachteil: Einrückung ist wichtig! def foo(x): a = 5 def square(n): return n * n b = square(x) return b - a Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 19

Einrückung (2) Goldene Regel: Nach Doppelpunkt eine Ebene tiefer def positive(x): if x > 0: return True else: return False return "w00t?!" # wird nie erreicht Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 20

Datenstrukturen Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 21

Listen und Tupel >>> [3, 2, 1, 'foo'] # eine Liste [3, 2, 1, 'foo'] >>> (3, 2, 1, 'foo') # ein Tupel (3, 2, 1, 'foo') >>> (5) # KEIN Tupel 5 >>> (5,) # ein Tupel (5,) Listenelemente können modifiziert werden Tupel sind immer Konstant Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 22

Listen und Tupel (2) >>> a = ('foo', 'bar') >>> a[0] 'foo' >>> a[0][0] 'f' >>> a[0] = 'baz' TypeError: 'tuple' object not mutable >>> b = list(a) # opposite: tuple(a) >>> b[0] = 'baz' >>> b ['baz', 'bar'] Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 23

Elemente Auswählen Nummerierung beginnt immer bei 0 >>> 'abc'[0] 'a' >>> 'abc'[2] 'c' Negative Indizes beginnen beim letzten Element >>> 'abc'[-1] 'c' >>> 'abc'[-3] 'a' Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 24

Teilmengen auswählen Die Syntax ist START : ENDE START ist eingeschlossen, ENDE nicht START und ENDE können auch weggelassen werden >>> [0,1,2,3,4][1:3] [1, 2] >>> [0,1,2,3,4][1:] [1, 2, 3, 4] >>> 'last six digits'[-6:] 'digits' >>> [][:] [] Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 25

Teilmengen auswählen (2) Zusätzlich kann die Schrittweite angegeben werden >>> a = list(range(9)) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> a[1:7:2] [1, 3, 5] Natürlich auch negativ! >>> a[::-1] [8, 7, 6, 5, 4, 3, 2, 1, 0] Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 26

Datenstrukturen vereinigen >>> a = [1,2] >>> a + [3,4] [1, 2, 3, 4] >>> a [1, 2] >>> a.extend([3,4]) [1, 2, 3, 4] >>> a [1, 2, 3, 4] Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 27

Wörterbücher (dictionaries) Verwaltung von (Schlüssel : Wert) Paaren >>> {'foo' : 2+2, 'bar' : 99} {'foo' : 4, 'bar' : 99} Generische Schlüssel >>> dict = {'a' : 5, (5,7) : 9, 'w00t' : '?'} >>> dict['a'] 5 >>> dict[(5,7)] 9 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 28

Wörterbücher (2) Einträge löschen >>> dict = {1:'Hallo', 2:'Welt', 3:'!'} >>> del dict[2] >>> dict {1:'Hallo', 3:'!'} >>> dict.clear() >>> dict {} Anmerkung: Wörterbücher sind als Hashtabellen implementiert, d.h. der Zugriff ist O(1) Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 29

Der 'in' Operator Testen auf Zugehörigkeit >>> 5 in [1,2,3,4,5,6,7] True >>> vowels = 'aeiou' >>> 'f' not in vowels True Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 30

Zusammenfassung Datenstrukturen Die wichtigsten Datenstrukturen: Listen Tupel Zeichenketten Wörterbücher Nächste Woche noch Klassen Arrays Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 31

Kontrollfluss Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 32

Bedingungen >>> if weight(person) == weight(duck): person.name + "is a witch!" else: "She is innocent!" >>> if x == 0: "zero" elif x < 0: "negative" elif x > 0: "positive" Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 33

Schleifen >>> while not lecture_end(): slide = next_slide() talk_about(slide) >>> for i in [1, 2, 3]: print(i) 1 2 3 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 34

for-schleifen Das elementare Werkzeug des Python-Programmierers >>> a = [] >>> for x in range(5): a.append(x*x) >>> a [0, 1, 4, 9, 16] Wichtig: Eine range geht von 0 bis n - 1 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 35

for-schleifen (2) For-Schleifen können über fast alles iterieren >>> for c in 'abc': >>> for n in range(5): >>> for elt in (1, 'foo', 1.5, []): >>> for (a, b) in [(1,8), (2,7)]: break und continue wie in C und Java >>> for i in range(10): print(i) if i == 2: break 0 1 2 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 36

Nichts tun >>> pass >>> Macht die Absicht klarer Bisweilen sogar unerlässlich >>> if all_good(): pass else: try_to_fix_it() Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 37

Zusammenfassung Python hat sehr mächtige for-schleifen if, break, continue und while fast wie in C und Java Einrücken nicht vergessen! Etablierte Regel: 4 Leerzeichen pro Stufe Einrückung (nie Tabs) Weitere Stilregeln zur Einrückung etc in PEP 8 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 38

Das Modulsystem von Python Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 39

Module in Python Aufgaben eines Modulsystems: Namenskollisionen vermeiden Projekte strukturieren Fremde Bibliotheken verwenden Nutzung in Python: >>> import foo ImportError: No module named foo >>> import sys >>> Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 40

Was passiert bei 'import x' >>> import sys 1. Das momentane Verzeichnis wird nach der Datei sys.py durchsucht, ansonsten eine folge von Standard- Verzeichnissen 2. Der Inhalt der Datei wird Ausdruck für Ausdruck in einen neuen Namensraum geladen 3. Ein Modul mit allen Symbolen des neuen Namensraums wird erstellt 4. Die Variable sys wird auf dieses Modul gesetzt >>> sys <module 'sys' (built-in)> Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 41

Importierte Module verwenden >>> import sys >>> sys.version '3.5.3 (default, Apr 21 2017, 11:52:50) \n[gcc 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]' >>> import math >>> math.sqrt(5) 2.23606797749979 Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 42

Arten des Importierens import import sys import as import numpy as np from import from math import sqrt, pow from import * from math import * Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 43

Ein eigenes Python Modul erstellen Schreibt eueren Code in eine Datei XYZ.py Legt die Datei in den Python Suchpfad (z.b. der Ordner in dem ihr arbeitet) Fertig ist das Modul XYZ! Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 44

Ausführbare Dateien "Wie in C" In der ersten Zeile: #!/usr/bin/env python3 Gefolgt von import foo from bar import f1, f2 Irgendwo am Ende: if name == " main ": my_code() more_of_my_code() Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 45

Einschub: Der Übungsbetrieb Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 46

Wie sieht eine Programmierübung aus? Alles Material finden Sie unter www10.cs.fau.de/lehre/byname/algoks Jede Programmierübung besteht aus Einem Aufgabenblatt (als PDF) Einer Testsuite test.py Mehreren Dateien zu den Aufgaben auf dem Blatt Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 47

Selber testen mit test.py Vorteile: Punkte idr bereits vor Abgabe bekannt Weniger Zeit bei der Fehlersuche Lernen wie toll Tests sind Nachteile: Für jede Teilaufgabe gibt es alle oder keine Punkte Testsuite kann unterwandert werden* * Wir haben zahlreiche versteckte Tests Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 48

Live Demonstration Sommersemester 2017 Prof. U. Rüde Algorithmik kontinuierlicher Systeme 49