Slides Thema 3

Boolsche Algebra und Zeichenketten

◀️ Thema 3

⚡Anwesenheit bestätigen

📖 Kapitel 3 Operatoren und 5 Zeichenketten


Lernziele

Ich kann ...

  • boolsche Operationen anwenden und vereinfachen.
  • Zeichenketten erstellen, bearbeiten und formatieren.
  • mit der IDE Ordner und Skripte erstellen, ausführen und debuggen.

Herkunft Boolean

  • Boolean sind benannt nach Georg Boole (1815)
  • Er gründete die moderne mathematische Logik

Seinen Arbeiten verdanken wir den Computer


Boolsche Algebra

Im Programmieren sind wir immer mit logischen Problemstellungen konfrontiert.

Boolsche Algebra hilft uns diese Probleme zu lösen.


Beispiel Schaltkreis

Anwendung in der Elektronik.


Binäre und logische Operatoren


Gesetze

In den nächsten Slides schauen wir uns die Gesetze[^1] der boolschen Algebra an.

🎬 Deklariert diese Variablen in der Python-Shell:

a = True
b = False

Konjunktion

🎬 In der Python-Shell ausführen:

a and b

Disjunktion

🎬 In der Python-Shell ausführen:

a or b

Negation

🎬 In der Python-Shell ausführen:

not a
not b

Absorption

Bestimmte Ausdrücke können vereinfacht werden.

🎬 In der Python-Shell ausführen:

(a or (a and b)) == a
(a and (a or b)) == a
a == a # Das gleiche wie oben

Doppelte Negation

Wenn man einer doppelten Negation begegnet, kann man das auch vereinfachen.

🎬 In der Python-Shell ausführen:

(not not a) == a
a == a # Das gleiche wie oben

Es gibt noch viele weitere Gesetze.


Short-Circuit-Evaluation

Evaluation wird abgebrochen sobald Ergebnis feststeht.

x = True
y = False
y and (x and y) or (y and x) # Evaluation wird nach y abgebrochen
x and (x and y) or (y and x) # Evaluation vollständig geprüft

Wahre Werte

Die meisten Werte sind wahr.

bool("abc")
bool(123)
bool(["apple", "cherry", "banana"])

Falsche Werte

Andere Werte sind falsch.

bool(False)
bool(None)
bool(0)
bool("")
bool(())
bool([])
bool({})

Aufgaben 1

Lösen Sie die ersten zwei Aufgaben 3.1 und 3.2.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Grundregeln Zeichenketten

  • Wichtigkeit: Zeichenketten > Zahlen
  • Python macht den Umgang mit Zeichenketten relativ leicht

Beispiel:

s='abc'
print(type(s)) # <class 'str'>

Apostrophe

Einfache oder doppelte Apostrophe sind gleichwertig.

'abc' == "abc"

Mehrzeilige Zeichenketten

🎬 Erstellen Sie eine mehrzeilige Zeichenkette:

s = """Das ist
       eine lange
    Zeichenkette."""
print(s)

ℹ️ Zeilenumbrüche werden mit der Escape-Sequenzen \n gespeichert.


Zeichenketten kombinieren

🎬 Folgende Aktionen ausführen:

  • Ordner Thema3 und Datei Zeichenketten.py erstellen
  • Geben Sie den folgenden Code ein:

Zeichenkette.py

s1 = 'abc'
s2 = 'efg'
s3 = s1 + s2 + s1
print(s3) # Ergebnis 'abcefgabc'

Zeichenketten vervielfältigen

s1 = 'abc'
s2 = s1*3 + 'x'*2
print(s2) # Ergebnis 'abcabcabcxx'

Sonderzeichen

Sonderzeichen können mit Escape-Sequenzen eingebettet werden.

print("Hallo\nWelt")

Raw-Zeichenketten

Python interpretiert \-Sequenzen als Sonderzeichen, um das zu vermeiden, stellen Sie den Buchstaben r (raw) voran:

latexcode = r'\section{Überschrift}'

Teilzeichenketten

Mit der Slicing-Syntax s[start:ende] kann auf Teile einer Zeichenkette zugegriffen werden.

🎬 Erstellen Sie die Datei Teilzeichenketten.py


Index

Wir greifen nun auf den Index der Zeichenkette. Der Index beginnt immer bei 0!

01234567...
abcdefgh...

Zugriff Teilzeichenketten

🎬 Führen Sie die folgenden Zeilen aus:

s='abcdefghijklmnopqrstuvwxyz'
print(s[3]) # Viertes Zeichen
print(s[3:6]) # Viertes bis Sechstes Zeichen
print(s[:3]) # Alles bis und mit dem dritten Zeichen
print(s[-4]) # Das viertletzte Zeichen
print(s[-4:]) # Alles ab dem iertletzten Zeichen

Schrittweite

Mit dem dritten Parameter kann die Schrittweite angegeben werden.

🎬 Fügen Sie diese Zeilen an:

print(s[::2]) # jedes zweite Zeichen

Zeichenketten umkehren

Mit negativen Schrittweite kehrt die Reihenfolge:

print(s[::-1]) # alles in umgekehrter Reihenfolge
print(s[::-2]) # Jedes zweite Zeichen in umgekehrter Reihenfolge

Aufgaben 2

Lösen Sie die Aufgabe 3.3.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Zeichenkettenfunktionen

Zeichenketten können mit vielen Funktionen und Methoden bearbeitet werden.


Funktionen versus Methoden

ℹ️ Methoden sind etwas Ähnliches wie Funktionen, Sie werden aber direkt auf die zugrundeliegenden Daten (Objekte) angewendet.

funktion(daten)
daten.methode(weitere, daten)

Anwendungsbeispiele Methoden

🎬 Erstellen Sie die Datei Methoden.py mit diesem Inhalt:

s='abcdefghijklmnopqrstuvwxyz'
print(s.upper()) # Alles in Grossbuchstaben
print(s.count('efg')) 

Eigenschaften ermitteln

Mit str.isxxx-Funktionen können Sie Zeichenketten nach bestimmten Eigenschaften testen.

🎬 Erstellen Sie die Datei Eigenschaften.py mit diesem Inhalt:

print(len('abc')) # 3
print(str.isalpha('abcäöü')) # True
print(str.isalpha('abc123')) # False
print(str.isdigit('123')) # True
print(str.isalnum('abc123')) # True
print(str.isascii('abc123|$!')) # True
print(str.islower('abcD')) # False

Suchen

🎬 Führen Sie diese Aktionen aus:

  • Datei Suchen.py erstellen
  • Diesen Code einfügen und ausführen:

Suchen.py

help(str.find)
s="abcdefghijklmnopqrstuvwxyz"
print(s.find("hij")) # Ergebnis: 7
print(s.find("hij", 8)) # -1 also nicht gefunden
print(s.rfind("hij")) # Suche von Rechts nach Links

ℹ️ Beim Zugriff auf die Startposition muss 1 dazugezählt werden.


Ersetzen

🎬 Fügen Sie diesen Code an die letzte Datei:

print(s.replace('e', 'X'))

Daten formatieren

Es gibt mehrere Ansätze zum Formatieren von Zeichenketten:

  • %-Operator
  • format-Methode
  • format-Kurzschreibweise

🎬 Erstellen Sie eine Datei Formatierung.py


Formatierung mit %-Operator

Als Platzhalter kann man in einem String %s verwenden. Wendet man den %-Operator an, wird der Platzhalter mit einer Variable ersetzt.

🎬 Führen Sie diesen Code aus:

name = 'Matthias'
print('%s ist 11 Jahre alt.' % name)

Formatierung mit Nachkommastellen

Der Platzhalter %.3f bedeutet, dass eine Zahl mit 2 Nachkommastellen ausgeben werden soll.

🎬 Führen Sie diesen Code aus:

zahl = 1/7
print('1/7 mit drei Nachkommastellen: %.3f' % zahl)

Formatierung mit format-Methode

Eine ganz andere Formatierung funktioniert mit {} als Platzhalter und der Methode format() zum übergeben der Variablen..

🎬 Führen Sie diesen Code aus:

print('{} ist {} Jahre alt.'.format('Sebastian', 13))
print('{name} ist {alter} Jahre alt.'.format(alter=13, name='Sebastian'))

Formatierung mit format-Kurzschreibweise

Die wohl einfachste Formatierung ist die Schreibweise mit f'' und den {variable}-Platzhalter.

🎬 Führen Sie diesen Code aus:

alter=26/3
name='Sebastian'
print(f'{name} ist {alter:.3} Jahre alt.')

ℹ️ Diese Formatierung ist ab Python 3.6 verfügbar.


Aufgaben 3

Lösen Sie restlichen Aufgaben 3.4 bis 3.6.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Review

🎯 Wurden die Lernziele erreicht?

⚡ Feedback zu den Zielen einholen.


Quellen

[^1]: Wikipedia - Boolesche Algebraopen in new window