Skip to main content

Quiz


Lernziele

L01: Einführung in Python

Erläutere 7 Stärken von Python. (Gründe für wachsende Beliebtheit)
  • lesbare, kompakte Syntax (fast wie Pseudocode auf Englisch)
  • große Bibliothekssammlung (NumPy, Pandas, SciPy ...)
  • interpretiert (direkte Ausführung) & interaktive (feedback, REPL, Terminal, Jupyter Notebook, Lab)
  • mehrere Programmierparadigmen (prozedural, objektorientiert und funktional)
  • aktive Community (viele Ressourcen, Tutorials, Hilfe)
  • vielseitig (Scripting, Webseiten,Deep Learning)
  • plattformübergreifend (Windows, MacOs, Linux)
Erläutere 4 Schwächen von Python.
  • Ausführungsgeschwindigkeit (kann zum Teil durch optimierte Bibliotheken gemildert werden,
    z.B.: numpy intern in C geschrieben
    )
  • Typenprüfung erst zur Laufzeit
  • Speicherverbrauch (tendenziell mehr Arbeitsspeicher als C oder Java)
  • Mobilentwicklung (kaum verbreitet für iOS/Android-Apps)
Welche 2 Möglichkeiten gibt es Python zu installieren.
  1. Python direkt von python.org oder Paketmanager (Packte manuell nach installieren)
  2. Distribution (z.B.: Anaconda enthält Python, Jupyter Notebook, Lab, NumPy, Pandas usw)
Nenne und beschreibe die 4 verschiedenen Komponenten einer Python-Entwicklungsumgebung
  1. 1. Python-Interpreter:
    start python
    Code wird sofort ausgeführt (REPL).

  1. IPython:
    start source ~/Apps/anaconda3/bin/activate -> ipython
    Erweiterte interaktive Shell:
    • Autovervollständigung mit der Tab-Taste
    • Inline-Dokumentation zu Funktionen
    • Farbige Hervorhebung von Code

  1. Jupyter Notebook:
    start source ~/Apps/anaconda3/bin/activate -> jupyter notebook
    Im Browser, ausführbarer Code + Dokumentation, (verwendet IPython):
    • Code-Zellen – ausführbarer Python-Code
    • Markdown-Zellen – formatierter Text, Erklärungen
    • Ausgaben – Diagramme, Tabellen, direkt eingebettet

  1. Jupyter Lab:
    start source ~/Apps/anaconda3/bin/activate -> jupyter lab
    Im Browser, Jupyter Notebook + IDE + Extensions

L02: Variablen und Datentypen

Wie werden Variablen in Python Typisiert?

Dynamische Typisierung (dynamic typing):

  • Datentyp erschliesst sich aus dem Wert z.B.: x = 1 Int, x = "hello" String
  • Datentyp einer Variable kann sich ändern.
Welche Syntax Regeln bzw. Konventionen sind bei der Namens Vergabe zu Beachten?

Syntax Regeln:

  • Müssen eingehalten werden sonst wird der Code nicht ausgeführt.
  • muss mit Unterstrich oder Buchstaben beginnen
  • kann auch von Zahlen gefolgt werden
  • darf kein Schlüsselwort sein

Konventionen (style guide):

  • Code wird auch so ausgeführt, soll ihn aber lesbarer machen.
  • Aussagekräftige Namen
  • Variablen & Funktionen in snake_case: Kleinbuchstaben, Wörter durch Unterstrich trennen, Funktionsnamen aus Verben
  • Klassen & Ausnahmen in UpperPascalCase: Wortanfang in Großbuchstaben, Ausnahmen mit Error z.B.: ValueError
  • Konstante & Globals in UPPER_CASE: alles in Großbuchstaben, Wörter durch Unterstrich trennen, z.B.: MAX_SIZE
Welche drei numerischen Datentypen gibt es?
  • Sind alle immutable, können aber mit einen neuen Wert überschrieben werden.

Ganzzahlen (Integer):

  • Größe ist nur durch Speicher begrenzt, können negative wie positive sein
  • Datentyp ist int, cast mit int() falls möglich, z.B.: x = int("4.4") Nachkommastellen gehen verloren

Gleitkommazahlen (Floating Point):

  • Datentyp ist float, cast mit float() falls möglich, z.B.: x = float(1)
  • begrenzte Genauigkeit (~15-17 Dezimalstellen), für exakte Berechnungen decimal Modul
  • wissenschaftliche Notation e oder E z.B.: 3.14e2 == 314.0 , 314e-2 == 3.14
print(0.1 + 0.2)         # Output: 0.30000000000000004
print(0.1 + 0.2 == 0.3) # Output: False (wegen Rundungsfehler)

imaginäre Zahlen:

  • haben den Datentyp complex. Format a + bJ
Nenne 5 wichtige Methoden um einen String zu bearbeiten.
print(("-").join("TEST"))                   # T-E-S-T
print("This is a string".split(" ")) # ['This', 'is', 'a', 'string']
print("I love Java".upper()) # I LOVE JAVA
print("I love Java".lower()) # i love java
print("Java is amazing".replace("is","==")) # Java == amazing
Welche 4 Collections gibt es?
  • alle können unterschiedliche Datentypen haben
  • alle außer Set sind geordnet (Dic seit 3.7)

Set { VALUE1, VALUE2 }

  • jeder wert kann nur einmal vorkommen
  • add(Element), remove(Element), clear()
  • durch frozen_set = frozenset({1,4}) unveränderlich

List [VALUE1, VALUE1]

  • append(Element), insert(i,Element), remove(Element), clear(), count(Element)

Tuple (VALUE1, VALUE1)

  • wie List aber unveränderlich

Dictionary{"KEY1":VALUE1, KEY2:VALUE1}

  • Key muss hashable und immutable sein (string, Zahlen, tuples) und Einzigartig
  • dic.get("Key") oder dic["Key"] gibt den Wert zurück
Welche 4 Modus gibt es um einen Datei zu öffnen?

z.B.: my_file = open("myfileName.txt", "w")

  • Read r: standart, lesen, Ausnahme falls nicht vorhanden
  • Create x: erstellt Datei, Ausnahme falls bereits existiert
  • Append a: erstellt Datei, falls existiert dann wird angehängt
  • Write w: wie Append allerdings wird eine vorhanden Datei überschrieben
Was muss man nach dem öffnen einer Datei zum Schluss unbedingt tun?
  • sie mit der close() Methode wieder schliessen
my_file=open("someFile.txt", "r")
# do something
my_file.close()
Mit welchen Methoden schreibt bzw. liest man aus einer Datei.
  • read: .read() bzw. je Zeile .readline()
  • write: .write("hello")
f = open("demofile.txt")
print(f.read())
print(f.readline())
f.close()

f = open("demofile.txt", "a")
write("More Text")
f.close()