Python für Fortgeschrittene

Überblick über den Kurs

  1. Wiederholung Basiswissen Python
  2. Funktionales Programmieren 1: Iteratoren, List Comprehension, map und filter
  3. Programme strukturieren, Funktionales Programmieren 2: Generatoren
  4. Graphen
  5. Datenanalyse 1: numpy
  6. Datenanalyse 2: pandas
  7. Datenanalyse 3: matplotlib
  8. Datenanalyse 4: Maschinelles Lernen
  9. Arbeiten mit XML: lxml

1. Sitzung: Wiederholung

Datenstrukturen im Überblick

  • Sequence (geordnete Folge)
    • String (enthält Folge von Unicode-Zeichen) nicht veränderbar
    • List (enthält Elemente des gleichen Datentyps; beliebige Länge) veränderbar
    • Tuple (enthält Elemente unterschiedlichen Datentyps; gleiche Länge) nicht veränderbar
    • namedtuple (Tuple, dessen Felder Namen haben) nicht veränderbar
    • Range (Folge von Zahlen) nicht veränderbar
    • deque (double-ended queue) veränderbar
  • Maps (ungeordnete Zuordnungen)
    • Dictionary (enthält key-value Paare)
    • Counter
    • OrderedDict
  • Set (Gruppe von Elementen ohne Duplikate)
    • Set (enthält ungeordnet Elemente ohne Duplikate; veränderbar)
    • Frozenset (wie Set, nur unveränderlich)

In [1]:
#List
a = [1, 5, 2, 84, 23]
b = list("hallo")
c = range(10)
list(c)


Out[1]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [2]:
#dictionary
z = dict(a=2,b=5,c=1)
z


Out[2]:
{'a': 2, 'b': 5, 'c': 1}

Aufgabe

  • Schreiben Sie eine vergleichbare Zuweisung für jede der oben aufgelisteten Datenstrukturen

In [3]:
#tuple
a = ("a", 1)
#check
type(a)


Out[3]:
tuple

Programmsteuerung

Programmkontrolle: Bedingte Verzweigung

Mit if kann man den Programmablauf abhängig vom Wahrheitswert von Bedingungen verzweigen lassen. Z.B.:


In [4]:
a = True
b = False
if a == True: 
    print("a is true")
else:
    print("a is not true")


a is true

Mit for kann man Schleifen über alles Iterierbare machen. Z.B.:


In [5]:
#chr(x) gibt den char mit dem unicode value x aus



for c in range(80,90):
    print(chr(c),end=" ")


P Q R S T U V W X Y 

Aufgaben

  • Geben Sie alle Buchstaben von A bis z aus, deren Unicode-Code eine gerade Zahl ist.


In [6]:
for c in range(65,112):
    if c % 2 == 0:
        print(chr(c))


B
D
F
H
J
L
N
P
R
T
V
X
Z
\
^
`
b
d
f
h
j
l
n
    Zählen Sie, wie häufig der Buchstabe "a" im folgenden Satz vorkommt: "Goethes literarische Produktion umfasst Lyrik, Dramen, erzählende Werke (in Vers und Prosa), autobiografische, kunst- und literaturtheoretische sowie naturwissenschaftliche Schriften."

In [7]:
a = "ABCDEuvwwxyz"
for i in a:
    print(i)


A
B
C
D
E
u
v
w
w
x
y
z

Funktionen

Funktionen dienen der Modularisierung des Programms und der Komplexitätsreduktion. Sie ermöglichen die Wiederverwendung von Programmcode und eine einfachere Fehlersuche.


In [8]:
#diese Funktion dividiert 2 Zahlen:
def div(a, b):
    return a / b

#test
div(6,2)


Out[8]:
3.0

Aufgaben

Schreiben Sie eine Funktion, die die Anzahl der Vokale in einem String zählt.


In [9]:
a = "Hallo"

def count_vowels(s):
    result = 0
    for i in s:
        if i in "AEIOUaeiou":
            result += 1
    return result
count_vowels(a)


Out[9]:
2

In [7]:
s = "hallo"
for i in s:
    print(i)


h
a
l
l
o

Dateien lesen und schreiben

open(file, mode='r', encoding=None) können Sie Dateien schreiben oder lesen.

modes:
"r" - read (default)
"w" - write. Löscht bestehende Inhalte
"a" - append. Hängt neue Inhalte an.
"t" - text (default)
"b" - binary.
"x" - exclusive. Öffnet Schreibzugriff auf eine Datei. Gibt Fehlermeldung, wenn die Datei existiert.

encoding "utf-8"
"ascii"
"cp1252"
"iso-8859-1"


In [ ]:
words = []
with open("goethe.txt", "w", encoding="utf-8") as fin:
    for line in fin:
        re.findall("\w+", s)

Aufgabe

Schreiben Sie diesen Text in eine Datei mit den Namen "goethe.txt" (utf-8):
Johann Wolfgang von Goethe (* 28. August 1749 in Frankfurt am Main; † 22. März 1832 in Weimar), geadelt 1782, gilt als einer der bedeutendsten Repräsentanten deutschsprachiger Dichtung.

Goethes literarische Produktion umfasst Lyrik, Dramen, erzählende Werke (in Vers und Prosa), autobiografische, kunst- und literaturtheoretische sowie naturwissenschaftliche Schriften. Daneben ist sein umfangreicher Briefwechsel von literarischer Bedeutung. Goethe war Vorbereiter und wichtigster Vertreter des Sturm und Drang. Sein Roman Die Leiden des jungen Werthers machte ihn in Europa berühmt. Gemeinsam mit Schiller, Herder und Wieland verkörpert er die Weimarer Klassik. Im Alter wurde er auch im Ausland als Repräsentant des geistigen Deutschlands angesehen.

Am Hof von Weimar bekleidete er als Freund und Minister des Herzogs Carl August politische und administrative Ämter und leitete ein Vierteljahrhundert das Hoftheater.

Im Deutschen Kaiserreich wurde er „zum Kronzeugen der nationalen Identität der Deutschen“[1] und als solcher für den deutschen Nationalismus vereinnahmt. Es setzte damit eine Verehrung nicht nur des Werks, sondern auch der Persönlichkeit des Dichters ein, dessen Lebensführung als vorbildlich empfunden wurde. Bis heute zählen Gedichte, Dramen und Romane von ihm zu den Meisterwerken der Weltliteratur.</code>

Reguläre Ausdrücke

  • Zeichenklassen
    z.B. '.' (hier und im folgenden ohne '') = beliebiges Zeichen
  • Quantifier
    z.B. '+' = 1 oder beliebig viele des vorangehenden Zeichens 'ab+' matches 'ab' 'abb' 'abbbbb', aber nicht 'abab'
  • Positionen
    z.B. '^' am Anfang der Zeile
  • Sonstiges
    Gruppen (x), '|' Oder‚ '|', Non-greedy: ?, '\' Escape character </ul>
  • Beispiel. Aufgabe: Finden Sie alle Großbuchstaben in einem String s.

    
    
    In [10]:
    import re
    s = "Dies ist ein Beispiel."
    re.findall(r"[A-ZÄÖÜ]", s)
    
    
    
    
    Out[10]:
    ['D', 'B']
    
    
    In [11]:
    re.findall("\w+", s)
    
    
    
    
    Out[11]:
    ['Dies', 'ist', 'ein', 'Beispiel']

    Aufgabe

    Schreiben Sie Skript, dass eine Worthäufigkeitsliste für die Datei goethe.txt erstellt. Begründen Sie den Aufbau Ihres Skripts