python.casapython.casa
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
  • Stundenplan
  • Teil 1

    • Thema 1 - Einführung Programmiersprache
      • Slides Thema 1
      • Übungen Thema 1
    • Thema 2 - Variablen und Datentypen
      • Slides Thema 2
      • Übungen Thema 2
    • Thema 3 - Boolsche Algebra und Zeichenketten
      • Slides Thema 3
      • Übungen Thema 3
        • Aufgaben
          • Aufgabe 3.1: Wahr oder Falsch
          • Aufgabe 3.2: Vereinfachen
          • Aufgabe 3.3: Geheim
          • Aufgabe 3.4: Formatierung 🚧
          • Aufgabe 3.4: Suchen und Ersetzen
          • Aufgabe 3.5: DNA
          • Aufgabe 3.6: DNA 2
        • Wiederholungsfragen
        • Quellen
    • Thema 4 - Datum und Zeit
      • Slides Thema 4
      • Übungen Thema 4
    • Thema 5 - Kontrollstrukturen und Listen
      • Slides Thema 5
      • Übungen Thema 5
    • Thema 6 - Funktionen und Flowcharts
      • Slides Thema 6
      • Übungen Thema 6
    • Thema 7 - Objektorientierte Programmierung
      • Slides Thema 7
      • Übungen Thema 7
    • Thema 8 - Ein- und Ausgabe
      • Slides Thema 8
      • Übungen Thema 8
  • Teil 2

    • Thema 9 - Module und Import
      • Slides Thema 9
      • Übungen Thema 9
    • Thema 10 - Datenbanken
      • Slides Thema 10
      • Übungen Thema 10
    • Thema 11 - Grafische Benutzeroberfläche
      • Slides Thema 11
      • Übungen Thema 11
    • Thema 12 - Webapplikation mit Python Flask
      • Slides Thema 12
      • Übungen Thema 12
    • Thema 13 - Versionskontrolle mit Git
      • Slides Thema 13
      • Übungen Thema 13
    • Thema 14 - Dokumentation mit Markdown
      • Slides Thema 14
    • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
      • Slides Thema 15
      • Übungen Thema 15
  • Prüfung

    • Wissensprüfung 1
    • Wissensprüfung 2
    • Leistungsnachweis

Übungen Thema 3

Aufgaben

Aufgaben zum Thema.

Aufgabe 3.1: Wahr oder Falsch

Es folgt ein Skript mit 3 Ausgaben (print). Bestimmen Sie für jede Ausgabe ob der Ausdruck True oder False ist.

x = False
y = True
z = 1

print(x and y and z)
print(x or z)
print(not(x and not y))

Konnten Sie die Ausgaben richtig bestimmen? Prüfen Sie ihre Antworten indem Sie das Skript ausführen.

⭐ WahrFalsch.py

Aufgabe 3.2: Vereinfachen

Vereinfachen Sie den folgenden Ausdruck:

not (not (a)) and (b and (b or a))

Bestimmen sie, ob dieser unter den folgenden Bedingungen vollständig evaluiert wird oder nicht:

Bedingung 1:

a = True
b = False

Bedingung 2:

a = False
b = True

⭐ Vereinfachen.py

Aufgabe 3.3: Geheim

Wir haben eine geheime Zeichensequenz erhalten:

msg = 'LeLrLeLrLoLdLeLlLbLmLuLDLsLlLlLiLKLeLpLaLnLSLeLr'

Zum entschlüsseln müssen wir ...

  • die Position 4 bis 44 herausschneiden
  • die Reihenfolge umkehren
  • jede zweite Position lesen

Zur Hilfe haben wir diese Slice-Anweisungen:

msg = msg[::-1]
msg = msg[::2]
msg = msg[4:44]

Wie lautet die geheime Nachricht?

⭐ Geheim.py

Aufgabe 3.4: Formatierung 🚧

Aufgabe 3.4: Suchen und Ersetzen

Sie erhalten diesen Text:

text = 'The quick brown fox jumps over the lazy dog'

Führen Sie diese Anweisungen aus:

  • Suchen Sie nach dem Wort fox. Sie erhalten die Position als Antwort.
  • Ersetzen Sie das Wort fox mit cat.

Wenn das zu einfach war, führen Sie diese Anweisungen aus:

  1. Alle Zeichen bis zum Wort brown ausgeben.
  2. Alle Zeichen ab Wort brown ausgeben.
  3. Die Anweisungen 1 und 2 kombinieren damit The quick fox jumps over the lazy dog ausgeben wird.

⭐ SuchenErsetzen.py

Aufgabe 3.5: DNA

Eine Analyse hat eine DNA-Sequenz zurückgeben.

ACTNGTGCTYGATRGTAGC

Wir möchten herausfinden, ob diese Sequenz auch wirklich DNA enthält [^1]. Zählen Sie die Anzahl der Buchstaben A, T, G und C in der Sequenz zu einer Summe.

⭐ DNA.py

Aufgabe 3.6: DNA 2

Rechnen Sie die Summe geteilt durch die Anzahl Zeichen der Sequenz. Das Ergebnis ist eine Prozentzahl. Formatieren Sie Prozentzahl so, dass die Zahl zwei Stellen nach dem Komma und mit Prozentzeichen ausgegeben wird.

⭐ DNA2.py

Wiederholungsfragen

W1: Wie bilden Sie eine Zeichenkette, die selbst ein Anführungszeichen enthält?

ℹ️ Anführungszeichen sind Zeichen aus der Programmier-Syntax.

Eine Möglichkeit besteht, zur Abgrenzung von Zeichenketten das jeweils andere Zeichen zu verwenden, also:
s1="O'Reilly"  
s2='It is "O Reilly"'
Eine zweite Möglichkeit bieten die Spezialcodes \' und \":
s3='abc \" def \' ghi'  # ergibt: abc " def ' ghi

W2: Wie bilden Sie Zeichenketten, die das Zeichen \ enthalten?

Wenn der Backslash nicht zur Kennzeichnung von Sonderzeichen verwendet werden soll, formulieren Sie Zeichenketten am besten in der Raw-Syntax mit vorangestelltem r:
s=r'C:\verzeichnis\readme.txt'

W3: Extrahieren Sie aus der folgenden Zeichenkette das Tag zwischen den eckigen Klammern:

bla [wichtig] mehr bla

s='bla [wichtig] mehr bla'  
start=s.find('[')+1    # Startposition  
end=s.rfind(']')       # Endposition  
print(s[start:end])    # Teilzeichenkette auslesen  
  'wichtig'

W4: Zerlegen Sie den folgenden Dateinamen in Linux-Notation in die Verzeichnisangabe (bis zum letzten /-Zeichen) und den eigentlichen Dateinamen (ab dieser Position):

/home/kofler/Bilder/foto1.jpg

s='/home/kofler/Bilder/foto1.jpg'  
pos=s.rfind('/')+1  
pfad=s[:pos]  
datei=s[pos:]  
print('Pfad:', pfad, 'Datei:', datei)  
  Pfad: /home/kofler/Bilder/   Datei: foto1.jpg

W5: Fordern Sie den Anwender eines Scripts auf, seinen Namen einzugeben, und entfernen Sie dann alle Leerzeichen am Beginn und Ende der Eingabe.

name = input('Geben Sie Ihren Namen an: ')  
name = name.strip()

W6: Geben Sie Hello, World! in umgekehrter Reihenfolge aus.

hello = 'Hello, World!'  
print(hello[::-1])  
  !dlroW ,olleH

W7: Was ist die Short-Circuit-Evaluation? Nennen Sie ein Beispiel!

Die logischen Operatoren and und or verzichten auf die Auswertung des zweiten Operanden, wenn der erste Operand bereits zum Ergebnis führt. Wenn im folgenden Beispiel rechenfunktion(x) den Wert 0 oder eine negative Zahl liefert, dann wird rechenfunktion(y) nicht aufgerufen. Das ist nicht notwendig, weil and nur dann True liefern kann, wenn beide Teilergebnisse True sind.
x=2  
y=3  
if rechenfunktion(x)>0 and rechenfunktion(y)>0:   
    # Code ...

Quellen

[^1]: How to count non-DNA bases in a sequence using Python

Edit this page
Last Updated:
Contributors: Janik von Rotz
Prev
Slides Thema 3