Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python...

83
Eine kurze Einf¨ uhrung in Python Stefan Meggendorfer IWR, Universit¨ at Heidelberg 6. Mai 2019 Stefan Meggendorfer Python Einf¨ uhrung 1

Transcript of Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python...

Page 1: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Eine kurze Einfuhrung in Python

Stefan Meggendorfer

IWR, Universitat Heidelberg

6. Mai 2019

Stefan Meggendorfer Python Einfuhrung 1

Page 2: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Ubersicht

EinleitungBasics

ZahlenformateRechenoperationenVariablen und ZuweisungenKombinierte RechenoperationenStringsListenTupleTuple vs. ListKommentareLogische Operationen

Nutzliche FunktionenBlockeControl Flow ToolsFunktionen

Programme schreibenPython-SkriptModulare Programmierung

PackagesMathNumPySciPymatplotlib

Stefan Meggendorfer Python Einfuhrung 2

Page 3: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Was ist Python?

Eine der beliebtesten Programmiersprachen weltweit(Platz 1 im Feb. 2019 laut PYPL-Index)

leicht zu erlernen

high-level

interpreted language, also direkt ausfuhrbar(muss nicht erst kompiliert werden)

Multiparadigmensprache

objektorientiert und strukturiertfunktional und aspektorientiert

benannt nach der BBC show “Monty Python’sFlying Circus”(vom Entwickler Guido van Rossum [1991]) Guido van Rossum1

1en.wiki [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/)]

Stefan Meggendorfer Python Einfuhrung 3

Page 4: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Woher bekommt ihr Python?

Linux/UNIX

normalerweise vorinstalliert (z.B. auf Ubuntu)sonst uber die Paketverwaltungzusatzlich wird ein Editor benotigt (mousepad, emacs, gedit, vim, ...)

Windows

unter https://www.python.org/ → DownloadsIm Abschnitt Files die passende Version herunterladen:(Windows x86-64 web-based installer fur 64-bit Version oderWindows x86 web-based installer fur 32-bit Version)Installationsdatei python-3.7.3-webinstall.exe ausfuhrenzusatzlich wird ein Editor benotigt (Notepad++, gedit, emacs, ...)

Eine ausfuhrliche Liste an Editoren findet ihr z.B. unter:https://wiki.python.org/moin/PythonEditors

Stefan Meggendorfer Python Einfuhrung 4

Page 5: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Linux-Terminal

Kurze Befehlsubersicht

Dateien und Verzeichnisse anzeigen lassen: ls

Ein Verzeichnis anlegen: mkdir [ORDNER]

In ein Verzeichnis wechseln: cd [ORDNER]

In ein ubergeordnetes Verzeichnis wechseln: cd ..

Dateien und Verzeichnisse loschen: rm -r [FILE]

Dateien und Verzeichnisse kopieren: cp -r [FILE]

Dateien und Verzeichnisse verschieben: mv [FILE]

Inhalt einer Datei anzeigen: less [FILE]

Aktuellen Verzeichnispfad anzeigen: pwd

Anzeigen der Hilfe zu einem Befehl: man [CMD] oder[CMD] --help

Autovervollstandigung: TAB

Anzeigen aller Moglichkeiten: TAB TAB

Programm abbrechen: Ctrl-C

Stefan Meggendorfer Python Einfuhrung 5

Page 6: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Linux-Terminal

Passwort andern und merken

1. Terminal offnen

2. In die Kommandozeile

passwd

eintippen und <ENTER> drucken

3. Altes Passwort (xxxxxxxxxx) eintippen

4. Neues Passwort (yyyyyyyyyyyy) eingeben

5. Neues Passwort (yyyyyyyyyyyy) bestatigen

Stefan Meggendorfer Python Einfuhrung 6

Page 7: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Linux-Terminal

Ubung

1 Lasst euch alle Dateien und Verzeichnisse anzeigen: ls

2 Legt ein Verzeichnis an: mkdir TestOrdner

3 Benutzt abermals ls. Was hat sich geandert?

4 In das Verzeichnis wechseln: cd TestOrdner

5 Wieder ls verwenden. Beobachtung?

6 In das ubergeordnete Verzeichnis zuruck wechseln: cd ..

7 ls. Und jetzt?

8 Loscht das Verzeichnis: rm -r TestOrdner

9 ls. Der Ordner sollte verschwunden sein!

AufgabeErstellt einen Ordner der PythonIntro heißt und wechselt in diesenOrdner!

Stefan Meggendorfer Python Einfuhrung 7

Page 8: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Linux-Terminal

Ubung

1 Lasst euch alle Dateien und Verzeichnisse anzeigen: ls

2 Legt ein Verzeichnis an: mkdir TestOrdner

3 Benutzt abermals ls. Was hat sich geandert?

4 In das Verzeichnis wechseln: cd TestOrdner

5 Wieder ls verwenden. Beobachtung?

6 In das ubergeordnete Verzeichnis zuruck wechseln: cd ..

7 ls. Und jetzt?

8 Loscht das Verzeichnis: rm -r TestOrdner

9 ls. Der Ordner sollte verschwunden sein!

AufgabeErstellt einen Ordner der PythonIntro heißt und wechselt in diesenOrdner!

Stefan Meggendorfer Python Einfuhrung 7

Page 9: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Python starten und schließen

Starten von Python im Terminal:

python

Starten einer bestimmten Version von Python (z.B. Version 3):

python3

Beenden von Python:

quit() oder exit() oder Ctrl-D

Stefan Meggendorfer Python Einfuhrung 8

Page 10: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Hilfe zu Python

Hilfe-Funktion

Hilfe-Funktion in Python aufrufen:

help()

Schließen der Hilfe-Funktion mit: quit oder Ctrl-D

Hilfe zu einem bestimmten Befehl/Funktion/Ausdruck (z.B. zumBefehl print):

help(’print’)

Schließen der Hilfe hier mit: q

Online-Hilfe

Tutorial: https://docs.python.org/3/tutorial/

Tutorial: https://www.tutorialspoint.com/python/

Bei Programmier-Fragen jeglicher Art sehr hilfreich:https://stackexchange.com/

Stefan Meggendorfer Python Einfuhrung 9

Page 11: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Hilfe zu Python

Hilfe-Funktion

Hilfe-Funktion in Python aufrufen:

help()

Schließen der Hilfe-Funktion mit: quit oder Ctrl-D

Hilfe zu einem bestimmten Befehl/Funktion/Ausdruck (z.B. zumBefehl print):

help(’print’)

Schließen der Hilfe hier mit: q

Online-Hilfe

Tutorial: https://docs.python.org/3/tutorial/

Tutorial: https://www.tutorialspoint.com/python/

Bei Programmier-Fragen jeglicher Art sehr hilfreich:https://stackexchange.com/

Stefan Meggendorfer Python Einfuhrung 9

Page 12: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Python Interpreter

Interaktiver Modus

1 Python offnen

2 in die Konsole tippen: print("Hello world!")

3 Ausgabe: Hello world!

Python Skript

1 Editor offnen

2 Datei “hello.py” erstellen

3 in hello.py schreiben: print("Hello world!")

4 speichern

5 im Terminal eintippen: python3 hello.py

6 Ausgabe: Hello world!

Stefan Meggendorfer Python Einfuhrung 10

Page 13: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Python Interpreter

Interaktiver Modus

1 Python offnen

2 in die Konsole tippen: print("Hello world!")

3 Ausgabe: Hello world!

Python Skript

1 Editor offnen

2 Datei “hello.py” erstellen

3 in hello.py schreiben: print("Hello world!")

4 speichern

5 im Terminal eintippen: python3 hello.py

6 Ausgabe: Hello world!

Stefan Meggendorfer Python Einfuhrung 10

Page 14: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Basics

“the best way to learn a language is to use it”

Stefan Meggendorfer Python Einfuhrung 11

Page 15: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Zahlenformate

Logik (bool):

Beispiele: True, False

Ganze Zahlen (int):

Beispiele: 0, 1, 12, -7beliebig große Zahlen darstellbar in reinem Python

Reelle Zahlen (float):

Beispiele: 0.0, 1.4, 2., -16.9875, 1e5, 1.e5, 2.345E-2beliebige Genauigkeit (bis auf Maschinengenauigkeit)

Komplexe Zahlen (complex):

Beispiele: 2+4j, 1j, 1.j, -7.5+13.45j

Abfrage eines Objekt-Formats mit type():

>>> type(1)

<type ’int’>

>>> type(True)

<type ’bool’>

Stefan Meggendorfer Python Einfuhrung 12

Page 16: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Zahlenformate

Logik (bool):

Beispiele: True, False

Ganze Zahlen (int):

Beispiele: 0, 1, 12, -7beliebig große Zahlen darstellbar in reinem Python

Reelle Zahlen (float):

Beispiele: 0.0, 1.4, 2., -16.9875, 1e5, 1.e5, 2.345E-2beliebige Genauigkeit (bis auf Maschinengenauigkeit)

Komplexe Zahlen (complex):

Beispiele: 2+4j, 1j, 1.j, -7.5+13.45j

Abfrage eines Objekt-Formats mit type():

>>> type(1)

<type ’int’>

>>> type(True)

<type ’bool’>

Stefan Meggendorfer Python Einfuhrung 12

Page 17: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Zahlenformate

Logik (bool):

Beispiele: True, False

Ganze Zahlen (int):

Beispiele: 0, 1, 12, -7beliebig große Zahlen darstellbar in reinem Python

Reelle Zahlen (float):

Beispiele: 0.0, 1.4, 2., -16.9875, 1e5, 1.e5, 2.345E-2beliebige Genauigkeit (bis auf Maschinengenauigkeit)

Komplexe Zahlen (complex):

Beispiele: 2+4j, 1j, 1.j, -7.5+13.45j

Abfrage eines Objekt-Formats mit type():

>>> type(1)

<type ’int’>

>>> type(True)

<type ’bool’>

Stefan Meggendorfer Python Einfuhrung 12

Page 18: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Zahlenformate

Logik (bool):

Beispiele: True, False

Ganze Zahlen (int):

Beispiele: 0, 1, 12, -7beliebig große Zahlen darstellbar in reinem Python

Reelle Zahlen (float):

Beispiele: 0.0, 1.4, 2., -16.9875, 1e5, 1.e5, 2.345E-2beliebige Genauigkeit (bis auf Maschinengenauigkeit)

Komplexe Zahlen (complex):

Beispiele: 2+4j, 1j, 1.j, -7.5+13.45j

Abfrage eines Objekt-Formats mit type():

>>> type(1)

<type ’int’>

>>> type(True)

<type ’bool’>

Stefan Meggendorfer Python Einfuhrung 12

Page 19: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Zahlenformate

Logik (bool):

Beispiele: True, False

Ganze Zahlen (int):

Beispiele: 0, 1, 12, -7beliebig große Zahlen darstellbar in reinem Python

Reelle Zahlen (float):

Beispiele: 0.0, 1.4, 2., -16.9875, 1e5, 1.e5, 2.345E-2beliebige Genauigkeit (bis auf Maschinengenauigkeit)

Komplexe Zahlen (complex):

Beispiele: 2+4j, 1j, 1.j, -7.5+13.45j

Abfrage eines Objekt-Formats mit type():

>>> type(1)

<type ’int’>

>>> type(True)

<type ’bool’>

Stefan Meggendorfer Python Einfuhrung 12

Page 20: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Rechenoperationen

Grundoperationen: + - * /

Gruppierung: ()

Potenz: **

Floor division: // (geteilt und gerundet gegen −∞)

Modulo: %

Bemerkung: In Version 3 gibt jede Division einen float zuruck.

>>> 5/3

1.6666666666666667

Vorsicht: bei Division mit int in Version 2!!!

>>> 5./3

1.6666666666666667

>>> -5/3.

-1.6666666666666667

>>> 5/3

1

>>> -5/3

-2

Stefan Meggendorfer Python Einfuhrung 13

Page 21: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Rechenoperationen

Grundoperationen: + - * /

Gruppierung: ()

Potenz: **

Floor division: // (geteilt und gerundet gegen −∞)

Modulo: %

Bemerkung: In Version 3 gibt jede Division einen float zuruck.

>>> 5/3

1.6666666666666667

Vorsicht: bei Division mit int in Version 2!!!

>>> 5./3

1.6666666666666667

>>> -5/3.

-1.6666666666666667

>>> 5/3

1

>>> -5/3

-2

Stefan Meggendorfer Python Einfuhrung 13

Page 22: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Variablen und ZuweisungenEiner Variable einen Wert zuweisen:

n = 1

Der Variable n wird der int Wert

1 zugewiesen

width = 13.6

Der Variable width wird der float

Wert 13.6 zugewiesen

Mehreren Variablen gleichzeitig Werte zuweisen (multipleassignement):

n, width , length = 5, 13.6, 4.2

ist gleichbedeutend zu

n = 5

width = 13.6

length = 4.2

Variablen loschen mit del

>>> s = 1

>>> del(s)

>>> s

Traceback (most recent call last):

File ‘‘<stdin>’’, line 1, in <module>

NameError: name ’s’ is not defined

Stefan Meggendorfer Python Einfuhrung 14

Page 23: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Variablen und ZuweisungenEiner Variable einen Wert zuweisen:

n = 1

Der Variable n wird der int Wert

1 zugewiesen

width = 13.6

Der Variable width wird der float

Wert 13.6 zugewiesen

Mehreren Variablen gleichzeitig Werte zuweisen (multipleassignement):

n, width , length = 5, 13.6, 4.2

ist gleichbedeutend zu

n = 5

width = 13.6

length = 4.2

Variablen loschen mit del

>>> s = 1

>>> del(s)

>>> s

Traceback (most recent call last):

File ‘‘<stdin>’’, line 1, in <module>

NameError: name ’s’ is not defined

Stefan Meggendorfer Python Einfuhrung 14

Page 24: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Variablen und ZuweisungenEiner Variable einen Wert zuweisen:

n = 1

Der Variable n wird der int Wert

1 zugewiesen

width = 13.6

Der Variable width wird der float

Wert 13.6 zugewiesen

Mehreren Variablen gleichzeitig Werte zuweisen (multipleassignement):

n, width , length = 5, 13.6, 4.2

ist gleichbedeutend zu

n = 5

width = 13.6

length = 4.2

Variablen loschen mit del

>>> s = 1

>>> del(s)

>>> s

Traceback (most recent call last):

File ‘‘<stdin>’’, line 1, in <module>

NameError: name ’s’ is not defined

Stefan Meggendorfer Python Einfuhrung 14

Page 25: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Kombinierte Rechenoperationen

Rechenoperationen, die Variablen direkt verandern (“in-place”)

x += 2 # Erhoehung von x um den Wert 2

x -= 2 # Erniedrigung von x um den Wert 2

x *= 2 # Multiplikation von x mit 2

x /= 2 # Division von x durch 2

x **= 2 # Potenzieren von x hoch 2

(mathematisch) gleichbedeutend zu

x = x+2

x = x-2

x = x*2

x = x/2

x = x **2

ohne dabei neuen Speicherplatz zu allokieren.

Stefan Meggendorfer Python Einfuhrung 15

Page 26: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 1

Texte werden in Anfuhrungszeichen geschrieben: "" oder ’’

string = "text" string = ’text’

Alles innerhalb des ersten und letzten Anfuhrungszeichens wird alsText interpretiert.

Beispiel 1:

>>> print(’#achte auf die "Anfuehrungszeichen "!’)

#achte auf die " Anfuehrungszeichen "!

Beispiel 2:

>>> print("#achte auf die ’Anfuehrungszeichen ’!")

#achte auf die ’Anfuehrungszeichen ’!

Stefan Meggendorfer Python Einfuhrung 16

Page 27: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 1

Texte werden in Anfuhrungszeichen geschrieben: "" oder ’’

string = "text" string = ’text’

Alles innerhalb des ersten und letzten Anfuhrungszeichens wird alsText interpretiert.

Beispiel 1:

>>> print(’#achte auf die "Anfuehrungszeichen "!’)

#achte auf die " Anfuehrungszeichen "!

Beispiel 2:

>>> print("#achte auf die ’Anfuehrungszeichen ’!")

#achte auf die ’Anfuehrungszeichen ’!

Stefan Meggendorfer Python Einfuhrung 16

Page 28: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 1

Texte werden in Anfuhrungszeichen geschrieben: "" oder ’’

string = "text" string = ’text’

Alles innerhalb des ersten und letzten Anfuhrungszeichens wird alsText interpretiert.

Beispiel 1:

>>> print(’#achte auf die "Anfuehrungszeichen "!’)

#achte auf die " Anfuehrungszeichen "!

Beispiel 2:

>>> print("#achte auf die ’Anfuehrungszeichen ’!")

#achte auf die ’Anfuehrungszeichen ’!

Stefan Meggendorfer Python Einfuhrung 16

Page 29: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 1

Texte werden in Anfuhrungszeichen geschrieben: "" oder ’’

string = "text" string = ’text’

Alles innerhalb des ersten und letzten Anfuhrungszeichens wird alsText interpretiert.

Beispiel 1:

>>> print(’#achte auf die "Anfuehrungszeichen "!’)

#achte auf die " Anfuehrungszeichen "!

Beispiel 2:

>>> print("#achte auf die ’Anfuehrungszeichen ’!")

#achte auf die ’Anfuehrungszeichen ’!

Stefan Meggendorfer Python Einfuhrung 16

Page 30: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 2

Mehrere Zeilen schreiben mit """mehrzeiliger Text""",Zeilenumbruche verhindern mit \

>>> print(""" Erste Zeile\

... mehr in der ersten Zeile

... zweite Zeile """)

Ausgabe:

Erste Zeilemehr in der ersten Zeile

zweite Zeile

Strings zusammenfuhren mit +

>>> s1, s2 = ’text’, ’message ’

>>> print(s1+s2)

textmessage

Stefan Meggendorfer Python Einfuhrung 17

Page 31: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Strings 2

Mehrere Zeilen schreiben mit """mehrzeiliger Text""",Zeilenumbruche verhindern mit \

>>> print(""" Erste Zeile\

... mehr in der ersten Zeile

... zweite Zeile """)

Ausgabe:

Erste Zeilemehr in der ersten Zeile

zweite Zeile

Strings zusammenfuhren mit +

>>> s1, s2 = ’text’, ’message ’

>>> print(s1+s2)

textmessage

Stefan Meggendorfer Python Einfuhrung 17

Page 32: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 1

Eine Liste erstellen mit [ ]

squares = [1, 4, 9, 16, 25]

Auf Elemente zugreifen

Nummerierung von 0 bis n-1

>>> squares[0]

1

>>> squares[4]

25

oder ruckwarts von -1 bis -n

>>> squares[-1]

25

>>> squares[-5]

1

Auf Listenabschnitte zugreifen

>>> squares[2:4]

[9, 16]

>>> squares[3:4]

[16]

>>> squares[2:]

[9, 16 , 25]

>>> squares[:4]

[1, 4, 9, 16]

Stefan Meggendorfer Python Einfuhrung 18

Page 33: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 1

Eine Liste erstellen mit [ ]

squares = [1, 4, 9, 16, 25]

Auf Elemente zugreifen

Nummerierung von 0 bis n-1

>>> squares[0]

1

>>> squares[4]

25

oder ruckwarts von -1 bis -n

>>> squares[-1]

25

>>> squares[-5]

1

Auf Listenabschnitte zugreifen

>>> squares[2:4]

[9, 16]

>>> squares[3:4]

[16]

>>> squares[2:]

[9, 16 , 25]

>>> squares[:4]

[1, 4, 9, 16]

Stefan Meggendorfer Python Einfuhrung 18

Page 34: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 1

Eine Liste erstellen mit [ ]

squares = [1, 4, 9, 16, 25]

Auf Elemente zugreifen

Nummerierung von 0 bis n-1

>>> squares[0]

1

>>> squares[4]

25

oder ruckwarts von -1 bis -n

>>> squares[-1]

25

>>> squares[-5]

1

Auf Listenabschnitte zugreifen

>>> squares[2:4]

[9, 16]

>>> squares[3:4]

[16]

>>> squares[2:]

[9, 16 , 25]

>>> squares[:4]

[1, 4, 9, 16]

Stefan Meggendorfer Python Einfuhrung 18

Page 35: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 2Werte zuweisen

>>> squares[1] = 100

>>> squares

[1, 100 , 9, 16 , 25]

>>> squares[1] = []

>>> squares

[1, [], 9, 16 , 25]

Listenabschnitte zuweisen

>>> squares[0:3] = [100 , 200 , 300]

>>> squares

[100 , 200 , 300 , 16 , 25]

>>> squares[0:3] = []

>>> squares

[16 , 25]

Liste von Listen

>>> A = [[1, 2, 3], [5, 7]]

>>> A[0]

[1, 2, 3]

>>> A[0][2]

3

Stefan Meggendorfer Python Einfuhrung 19

Page 36: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 2Werte zuweisen

>>> squares[1] = 100

>>> squares

[1, 100 , 9, 16 , 25]

>>> squares[1] = []

>>> squares

[1, [], 9, 16 , 25]

Listenabschnitte zuweisen

>>> squares[0:3] = [100 , 200 , 300]

>>> squares

[100 , 200 , 300 , 16 , 25]

>>> squares[0:3] = []

>>> squares

[16 , 25]

Liste von Listen

>>> A = [[1, 2, 3], [5, 7]]

>>> A[0]

[1, 2, 3]

>>> A[0][2]

3

Stefan Meggendorfer Python Einfuhrung 19

Page 37: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 2Werte zuweisen

>>> squares[1] = 100

>>> squares

[1, 100 , 9, 16 , 25]

>>> squares[1] = []

>>> squares

[1, [], 9, 16 , 25]

Listenabschnitte zuweisen

>>> squares[0:3] = [100 , 200 , 300]

>>> squares

[100 , 200 , 300 , 16 , 25]

>>> squares[0:3] = []

>>> squares

[16 , 25]

Liste von Listen

>>> A = [[1, 2, 3], [5, 7]]

>>> A[0]

[1, 2, 3]

>>> A[0][2]

3

Stefan Meggendorfer Python Einfuhrung 19

Page 38: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Listen 3

Liste erweitern mit + und += :

>>> liste = [0, 1, 2] + [42 , 43 , 44]

>>> liste

[0, 1, 2, 42, 43 , 44]

>>> liste = [0, 1, 2]

>>> liste += [42]

>>> liste

[0, 1, 2, 42]

oder mit der Methode obj.append() des Obejekts obj:

>>> liste = [0, 1, 2]

>>> liste.append(42)

>>> liste

[0, 1, 2, 42]

Stefan Meggendorfer Python Einfuhrung 20

Page 39: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Tuple

Erstellen eines tuple mit ()

>>> t1 = (1,2)

>>> t1

(1, 2)

>>> t2 = (1,2,3,4)

>>> t2

(1, 2, 3, 4)

>>> t3 = ()

>>> type(t3)

<type ’tuple ’>

>>> t4 = ((1, 2), (3, 4))

>>> t4

((1, 2), (3, 4))

Auslesen eines tuple mit [ ]

>>> t = (1, 2, 3, 4)

>>> t[0]

1

>>> t[3]

4

>>> t[1:3]

(2, 3)

Stefan Meggendorfer Python Einfuhrung 21

Page 40: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Tuple vs. List

Tuple

sind nicht veranderbar, nachdem sie erstellt wurden

nur das Auslesen ist erlaubt

benotigen weniger Speicherplatz als List

List

sind veranderbar

konnen ausgelesen, modifiziert, erweitert, verkleinert werden

benotigen mehr Speicherplatz als Tuple

Stefan Meggendorfer Python Einfuhrung 22

Page 41: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Kommentare

Kommentare beginnen mit einem # und werden vom Python-Interpreternicht ausgefuhrt:

# Erstmal ein Kommentar zu Anfang

x = 1 # Wir weisen der Variablen x den Wert 1 zu

# Hier schreiben wir noch einen Kommentar

text = "# KEIN Kommentar , wegen der Anfuehrungszeichen!"

# #######################################################

# TODO: Kommentare weglassen und Code so lesbar

# schreiben , dass moeglichst keine Kommentare

# noetig sind !!!

# #######################################################

ist gleichbedeutend zu

x = 1

text = "# KEIN Kommentar , wegen der Anfuehrungszeichen!"

Stefan Meggendorfer Python Einfuhrung 23

Page 42: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Logische Operationen

Wertevergleich

== # ist gleich

!= # ist nicht gleich

< # kleiner als

<= # kleiner oder gleich

> # groesser als

>= # groesser oder gleich

Logische Operatoren

and or not

Identitatsvergleich

is is not

Mengenzugehorigkeit

in not in

Stefan Meggendorfer Python Einfuhrung 24

Page 43: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Logische Operationen

Wertevergleich

== # ist gleich

!= # ist nicht gleich

< # kleiner als

<= # kleiner oder gleich

> # groesser als

>= # groesser oder gleich

Logische Operatoren

and or not

Identitatsvergleich

is is not

Mengenzugehorigkeit

in not in

Stefan Meggendorfer Python Einfuhrung 24

Page 44: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Logische Operationen

Wertevergleich

== # ist gleich

!= # ist nicht gleich

< # kleiner als

<= # kleiner oder gleich

> # groesser als

>= # groesser oder gleich

Logische Operatoren

and or not

Identitatsvergleich

is is not

Mengenzugehorigkeit

in not in

Stefan Meggendorfer Python Einfuhrung 24

Page 45: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Logische Operationen

Wertevergleich

== # ist gleich

!= # ist nicht gleich

< # kleiner als

<= # kleiner oder gleich

> # groesser als

>= # groesser oder gleich

Logische Operatoren

and or not

Identitatsvergleich

is is not

Mengenzugehorigkeit

in not in

Stefan Meggendorfer Python Einfuhrung 24

Page 46: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Nutzliche Funktionenprint(...)

>>> print(5, ’text’, sep=’_’, end=’\n’)

5_string

len(container)

>>> len([1, ’a’, [2, 3], "wort"])

4

range(start=0, stop, step=1)

>>> range(5)

0, 1, 2, 3, 4

>>> range(1, 4)

1, 2, 3

>>> range(1, 10 , 2)

1, 3, 5, 7, 9

list(iterable)

>>> list(range(1, 10 , 2))

[1, 3, 5, 7, 9]

Stefan Meggendorfer Python Einfuhrung 25

Page 47: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Blocke

Strukturierung durch EinruckenBlocke (z.B. alles was zu for oder if gehoren soll) werden durch gleicheAnzahl an Leerzeichen festgelegt!!!

>>> for x in range(100):

... if x == 2:

... print("for -Schleife wird abgebrochen")

... break

... print(x)

Empfehlung

4 Leerzeichen

keine Tabs benutzen

vor allem nicht Tabs und Leerzeichen mischen!

Stefan Meggendorfer Python Einfuhrung 26

Page 48: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Blocke

Strukturierung durch EinruckenBlocke (z.B. alles was zu for oder if gehoren soll) werden durch gleicheAnzahl an Leerzeichen festgelegt!!!

>>> for x in range(100):

... if x == 2:

... print("for -Schleife wird abgebrochen")

... break

... print(x)

Empfehlung

4 Leerzeichen

keine Tabs benutzen

vor allem nicht Tabs und Leerzeichen mischen!

Stefan Meggendorfer Python Einfuhrung 26

Page 49: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 1

Bedingte Wertzuweisung

x = a if condition else b

Beispiel:

>>> A = False

>>> x = 1 if A else 2

>>> print(x)

2

Stefan Meggendorfer Python Einfuhrung 27

Page 50: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 2

if-Verzweigung

if condition:

statement

elif condition:

statement

else:

statement

Beispiel:

>>> x = float(input(’Please enter a real number: ’))

Please enter a real number: -5

>>> if x > 0:

... print(x, ’> 0’)

... elif x < -1:

... print(x, ’< -1’)

... else:

... print(x, ’in [-1,1]’)

...

-5.0 < -1

Stefan Meggendorfer Python Einfuhrung 28

Page 51: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 3

while-Schleife

while condition:

statement

Beispiel:

>>> a = 0;

>>> while a < 3:

... a += 1

... print(a)

...

1

2

3

Stefan Meggendorfer Python Einfuhrung 29

Page 52: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 4

for-Schleife

for target_list in expression_list:

statement

Beispiel:

>>> # Laenge von strings messen:

... words = [’cat’, ’window ’, ’defenestrate ’]

>>> for w in words:

... print(w, len(w))

...

cat 3

window 6

defenestrate 12

Stefan Meggendorfer Python Einfuhrung 30

Page 53: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 5break: Unterbricht for- oder while-Schleifen

>>> for x in range(100):

... if x == 2:

... break

... print(x)

...

0

1

continue: Fortfahren mit nachster Iteration einer for- oderwhile-Schleife

>>> for x in range(4):

... if x == 2:

... continue

... print(x)

...

0

1

3

pass: Macht nichts

Stefan Meggendorfer Python Einfuhrung 31

Page 54: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 5break: Unterbricht for- oder while-Schleifen

>>> for x in range(100):

... if x == 2:

... break

... print(x)

...

0

1

continue: Fortfahren mit nachster Iteration einer for- oderwhile-Schleife

>>> for x in range(4):

... if x == 2:

... continue

... print(x)

...

0

1

3

pass: Macht nichts

Stefan Meggendorfer Python Einfuhrung 31

Page 55: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Control Flow Tools 5break: Unterbricht for- oder while-Schleifen

>>> for x in range(100):

... if x == 2:

... break

... print(x)

...

0

1

continue: Fortfahren mit nachster Iteration einer for- oderwhile-Schleife

>>> for x in range(4):

... if x == 2:

... continue

... print(x)

...

0

1

3

pass: Macht nichts

Stefan Meggendorfer Python Einfuhrung 31

Page 56: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Funktionen 1

Funktion definieren mit defSchreibe Fibonacci-Folge bis n

>>> def fib(n):

... a, b = 0, 1

... while a < n:

... print(a, end=’ ’)

... a, b = b, a+b

... print()

...

Aufrufen der Funktion

>>> fib(2000)

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

Stefan Meggendorfer Python Einfuhrung 32

Page 57: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Funktionen 2

Default argumentsSchreibe Fibonacci-Folge bis n (mit Default-Wert n = 100)

>>> def fib2(n=100):

... a, b = 0, 1

... while a < n:

... print(a, end=’ ’)

... a, b = b, a+b

... print()

...

Aufrufen der Funktion

>>> fib2(2000)

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

Aufrufen der Funktion mit Default-Wert n = 100

>>> fib2()

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34 , 55 , 89]

Stefan Meggendorfer Python Einfuhrung 33

Page 58: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Funktionen 3

Ruckgabe mit returnRuckgabe der Fibonacci-Folge bis n

>>> def fib3(n):

... result = []

... a, b = 0, 1

... while a < n:

... result.append(a)

... a, b = b, a+b

... return result

...

Funktion aufrufen und einer Variablen zuweisen

>>> f100 = fib3(100)

Ergebnis ausgeben

>>> f100

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34 , 55 , 89]

Stefan Meggendorfer Python Einfuhrung 34

Page 59: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Funktionen 4

Mehrere Eingangs-Variablen mit Komma trennenBerechnung der Potenz xn

>>> def power(x, n):

... if n == 0:

... return 1

... y = x

... for i in range(n-1):

... y *= x

... return y

...

Funktion aufrufen

>>> x = power(2, 10)

Ergebnis ausgeben

>>> x

1024

Stefan Meggendorfer Python Einfuhrung 35

Page 60: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Programme schreiben

“Aus Fehlern lernt man!!!”

Stefan Meggendorfer Python Einfuhrung 36

Page 61: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Python-Skript1 Ein Programm schreiben und speichern (z.B. unter myprogram.py)

# Ausgabe einer Matrix (d.h. einer Liste von Listen)

def print_matrix(A):

for i in range(len(A)):

for j in range(len(A[i])):

print(A[i][j], end=’ ’)

if j == len(A)-1:

print()

M = [[1, 2, 3],

[4, 5, 6],

[7, 8, 9]]

print_matrix(M)

2 Ausfuhren im Terminal: python myprogram.py

3 Ausgabe:

1 2 3

4 5 6

7 8 9

Stefan Meggendorfer Python Einfuhrung 37

Page 62: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Python-Skript

Ausfuhrbar machen von ProgrammenIn die ersten Zeilen der Datei skriptname.py schreibt man:

#!/ usr/bin/python3

# -*- coding: utf -8 -*-

Erste Zeile (Shebang): Pfad zum Python-Interpreter

Zweite Zeile: Verwendeter Zeichensatz in der Datei (utf-8 istStandard unter Linux).

Datei ausfuhrbar machen mit (im Terminal):

chmod +x skriptname.py

Aufrufen der Datei:

./skriptname.py oder pfad-zum-skript/skriptname.py

Stefan Meggendorfer Python Einfuhrung 38

Page 63: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Modulare Programmierung

“Programme systematisch in logische Teilblocke aufspalten”

HilfsmittelEin Programm in einem anderen Programm aufrufen mit

from ... import ... as ...

Stefan Meggendorfer Python Einfuhrung 39

Page 64: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Modulare Programmierung

Beispiel

Hilfsprogramm schreiben und unter mytools.py abspeichern

# Ausgabe einer Matrix (d.h. einer Liste von Listen)

def print_matrix(A):

for i in range(len(A)):

for j in range(len(A[i])):

print(A[i][j], end=’ ’)

if j == len(A)-1:

print()

Hauptprogramm schreiben und unter main.py abspeichern

from mytools import print_matrix as pm

A = [[1, 2, 3],

[4, 5, 6],

[7, 8, 9]]

pm(A)

Stefan Meggendorfer Python Einfuhrung 40

Page 65: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Modulare Programmierung

Beispiel

Hilfsprogramm schreiben und unter mytools.py abspeichern

# Ausgabe einer Matrix (d.h. einer Liste von Listen)

def print_matrix(A):

for i in range(len(A)):

for j in range(len(A[i])):

print(A[i][j], end=’ ’)

if j == len(A)-1:

print()

Hauptprogramm schreiben und unter main.py abspeichern

from mytools import print_matrix as pm

A = [[1, 2, 3],

[4, 5, 6],

[7, 8, 9]]

pm(A)

Stefan Meggendorfer Python Einfuhrung 40

Page 66: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Packages

“Machen das Leben einfacher...”

Stefan Meggendorfer Python Einfuhrung 41

Page 67: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Math

Beschreibung“This module [...] provides access to the mathematical functions definedby the C standard.”

Einbinden von Math

import math

Dokumentation

>>> help(math)

https://docs.python.org/3/library/math.html

Stefan Meggendorfer Python Einfuhrung 42

Page 68: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Math

KurzubersichtIm Package Math sind unter anderem folgende Funktionen programmiert:

fabs(x), factorial(x), fsum(iterable)

exp(x), log(x[, base]), sqrt(x)

cos(x), sin(x), tan(x)

isinf(x), isnan(x)

pi, e, inf, nan

BeispielBerechnung der Quadratwurzel von 2:

>>> import math

>>> math.sqrt(2.)

1.4142135623730951

Stefan Meggendorfer Python Einfuhrung 43

Page 69: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Beschreibung“NumPy is the fundamental package for scientific computing withPython. It contains among other things:

An array object of arbitrary homogeneous items

Fast mathematical operations over arrays

Linear Algebra, Fourier Transforms, Random Number Generation”

Einbinden von NumPy

import numpy as np

Dokumentation

>>> help(np)

https://www.numpy.org/devdocs/user/quickstart.html

Befehlssammlung: http://mathesaurus.sourceforge.net/

Stefan Meggendorfer Python Einfuhrung 44

Page 70: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Erzeugung von Matrizen

np.array(object, dtype=None):array vom Typ wie object, außer dtype ist gesetzt (z.B. auf intoder float)

Beispiel

>>> A = np.array([[1, 2, 3], [4, 5, 6]])

>>> A

array[[1, 2, 3],

[4, 5, 6]]

>>> print(A)

[[ 1 2 3]

[ 4 5 6]]

>>> B = np.array(A, dtype=float)

>>> B

array([[ 1., 2., 3.],

[ 4., 5., 6.]])

Stefan Meggendorfer Python Einfuhrung 45

Page 71: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Erzeugung spezieller Matrizen

np.zeros(shape, dtype=float): Null-array

np.ones(shape, dtype=float): array bestehend aus Einsen

np.eye(N, M=None, k=0, dtype=float): Einheits-array

Beispiel

>>> np.zeros(2)array([ 0., 0.])>>> np.zeros((2,3))array([[ 0., 0., 0.],

[ 0., 0., 0.]])>>> np.zeros(2, dtype=int)array([ 0, 0])

>>> np.eye(2, dtype=int)array([[1, 0],

[0, 1]])>>> # Verschiebung der Diagonalen... np.eye(3, k=-1)array([[ 0., 0., 0.],

[ 1., 0., 0.],[ 0., 1., 0.]])

Stefan Meggendorfer Python Einfuhrung 46

Page 72: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

array Eigenschaften 1

array.ndim: Anzahl der Dimensionen des array (Matrix hat 2 Dim.)

array.shape: Dimensionen des array (z.B. fur Matrizen (n,m))

array.size: Gesamtanzahl aller Elemente des array

array.dtype: Elemente-Typ (z.B. numpy.int32, bool, ...)

Beispiel

>>> A = np.array([[1, 2, 3],

... [4, 5, 6]])

>>> A.ndim

2

>>> A.shape

(2, 3)

>>> A.size

6

Stefan Meggendorfer Python Einfuhrung 47

Page 73: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

array Eigenschaften 2

array.sum(): Summe uber alle Elemente

array.sum(axis=0): Summe uber alle Spalten

array.sum(axis=1): Summe uber alle Reihen

array.max(axis=None): Maximum (Gebrauch wie sum())

array.min(axis=None): Minimum (Gebrauch wie sum())

array.trace(offset=0): Summe der Diagonalelemente

Beispiel

>>> A = np.array([[1, 2, 3],... [4, 5, 6]])>>> A.sum()21>>> A.sum(axis=0)array([5, 7, 9])>>> A.sum(axis=1)array([ 6, 15])

>>> A.max()6>>> A.min(axis=1)array([1, 4])>>> A.trace()6>>> A.trace(offset=1)8

Stefan Meggendorfer Python Einfuhrung 48

Page 74: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Arithmetische Operationen mit array

+ , - , * , / , ** : Elementweise Add., Subtr., Mult., Div., Potenz

< , <= , > , >= , == , != : Elementweise logische Vergleiche

np.sin(), np.exp(): Elem. Sinus, elem. Exponentialfunktion

Dimensionen zweier arrays muss gleich sein.

Beispiel

>>> A = np.array([[1, 2, 3],... [4, 5, 6]])>>> B = np.array([[2, 3, 0],... [1, 1, 0]])>>> A + Barray([[3, 5, 3],

[5, 6, 6]])>>> A * Barray([[2, 6, 0],

[4, 5, 0]])

>>> A < Barray([[ True , True , False],

[False , False , False]], dtype=bool)>>> np.sin(A)array([[ 0.90929743 , 0.14112001 , 0.],

[ 0.84147098 , 0.84147098 , 0.]])

Stefan Meggendorfer Python Einfuhrung 49

Page 75: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Matrix-Operationen mit array

A.T: Transponierte von A

A.dot(B): Matrix Produkt von A und B. Ab Python ≥ 3.5 auchA @ B

Beispiel

>>> A = np.array([[1, 2, 3],

... [4, 5, 6]])

>>> B = np.array([[2, 3, 0],

... [1, 1, 0]])

>>> A.T

array([[1, 4],

[2, 5],

[3, 6]])

>>> A.dot(B.T)

array([[ 8, 3],

[23 , 9]])

>>> A.T.dot(B)

array([[ 6, 7, 0],

[ 9, 11, 0],

[12 , 15 , 0]])

Stefan Meggendorfer Python Einfuhrung 50

Page 76: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

Lineare Algebra: np.linalg

linalg.solve(A,b): Lose das LGS Ax = b nach x

linalg.det(A): Determinante von A

linalg.matrix_rank(A): Rang von A

linalg.inv(A): Inverse von A

linalg.svd(A): Singularwertzerlegung von A

linalg.eig(A)[0]: Eigenwerte von A

linalg.eig(A)[1]: Eigenvektoren von A (normalisiert)

Beispiel

>>> A = np.array([[2, 0],... [0, 4]])>>> b = np.array([2, 2])>>> x = np.linalg.solve(A,b)>>> xarray([ 1. , 0.5])

>>> np.linalg.det(A)7.9999999999999982>>> np.linalg.eig(A)[0]array([ 2., 4.])>>> np.linalg.eig(A)[1]array([[ 1., 0.],

[ 0., 1.]])

Stefan Meggendorfer Python Einfuhrung 51

Page 77: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

NumPy

eindimensionale arrays

arange(start=0, stop, step=1, dtype=None):

Glm. verteilte Werte im halboffenen Intervall [start, stop) zur

Schrittweite step. (step sollte ganze Zahl sein, sonst besser linspace()).

linspace(start, stop, num=50, endpoint=True, dtype=

None):

Insgesamt “num” glm. verteilte Werte im abgeschlossenen Intervall

[start, stop]. Wenn endpoint=False, liegen Werte im halboffenen

Intervall [start, stop).

Beispiel

>>> np.arange(5)array([0, 1, 2, 3, 4])>>> np.arange(2, 50 , step=8)array([ 2, 10, 18, 26, 34 , 42])>>> np.arange(10 , 0, step=-2)array([10 , 8, 6, 4, 2])

>>> np.linspace(0, 1, num=5)array([ 0., 0.25 , 0.5, 0.75 , 1.])>>> np.linspace(1, 0, num=4,... endpoint=False)array([ 1., 0.75 , 0.5, 0.25])

Stefan Meggendorfer Python Einfuhrung 52

Page 78: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

SciPy

BeschreibungEnthalt Programme zu:

Konstanten, Integration, Optimierung, Interpolation, FourierTransformation, Lineare Algebra, Statistik, gewohnlicheDifferentialgleichungen, ...

Einbinden von SciPy-Subpackages

from scipy import constants , linalg , interpolate

Dokumentation

https://www.scipy.org/

https://docs.scipy.org/doc/scipy/reference/

Stefan Meggendorfer Python Einfuhrung 53

Page 79: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

matplotlib

BeschreibungPackage zur Visualisierung von Funktionen, Daten, Statistiken, ...

Einbinden von matplotlib

import matplotlib.pyplot as plt

Dokumentation

https://matplotlib.org/

https://matplotlib.org/tutorials/index.html

Stefan Meggendorfer Python Einfuhrung 54

Page 80: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

matplotlib

Einen Plot erstellen

import numpy as npimport matplotlib.pyplot as plt

x = np.linspace(0, 2, 100)y1 , y2 , y3 = x, x**2, x**3

# Figure erstellenplt.figure ()

# Plots erstellenplt.plot(x, y1 , label=’linear ’)plt.plot(x, y2 , label=’quadratisch ’)plt.plot(x, y3 , label=’kubisch ’)

# Labels fuer x- und y-Achseplt.xlabel(’x-Achse’)plt.ylabel(’y-Achse’)

# Titel , Legende , Gridplt.title(’Polynome ’)plt.legend ()plt.grid()

# Plot anzeigenplt.show()

Stefan Meggendorfer Python Einfuhrung 55

Page 81: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

matplotlib

Subplots und logarithmische Plots

import numpy as npimport matplotlib.pyplot as plt

x = np.linspace(0, 6, 100)y1 , y2 = x**2, x**3

# Figure mit subplots erstellenfig , ax = plt.subplots(2, 1)

# Subplot oben# logarithmisch in x und yax[0].loglog(x, y1)ax[0].grid()

# Subplot unten# logarithmisch in yax[1].semilogy(x, y2)ax[1].grid()

# Plot anzeigenplt.show()

Stefan Meggendorfer Python Einfuhrung 56

Page 82: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

matplotlib

Farben und Linien-Stil

import numpy as npimport matplotlib.pyplot as plt

Pi = np.pix = np.linspace(0, 2*Pi, 100)y = np.sin(x)

# Max und Min von sin(x)xmaxmin = [Pi/2., 1.5*Pi]ymaxmin = [ 1. , -1. ]

plt.figure ()

# Farbe und Style festlegen# ’k’ schwarz , ’r’ rot# ’--’ dashed , ’o’ Kreiseplt.plot(x, y, ’k--’, label=’sin(x)’)plt.plot(xmaxmin , ymaxmin , ’ro’,

label=’MaxMin ’)

# Achsen -Limits festlegenplt.axis([0, 2*Pi, -1.2, 1.2])

plt.legend ()plt.show()

Stefan Meggendorfer Python Einfuhrung 57

Page 83: Eine kurze Einführung in Python - Heidelberg University€¦ · Eine kurze Einf uhrung in Python Stefan Meggendorfer IWR, Universit at Heidelberg 6. Mai 2019 Stefan Meggendorfer

Drehort von Monty Python’s: The Life of Brian (1979).

GIRAUD Patrick (https://commons.wikimedia.org/wiki/File:TUNISIE MONASTIR RIBAT 03.jpg),”TUNISIE MONASTIR RIBAT 03“,

https://creativecommons.org/licenses/by-sa/2.5/legalcode

Stefan Meggendorfer Python Einfuhrung 58