Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

11 Cheatsheet

Humboldt-Universität zu Berlin, Institut für Bibliotheks- und Informationswissenschaft

11.1Variablen

name = "Alice"
alter = 25
ist_student = True
gehalt = 3500.50

# Mehrere Zuweisungen
x, y, z = 1, 2, 3
a = b = c = 0

_a = "Unterstrich am Anfang"
a3 = "Zahlen sind möglich, wenn nicht erstes Zeichen im Namen"

11.2Literale (Literal Values)

Literale sind Werte im Code, die Sie während dem Schreiben des Codes festlegen.

# Zahlen-Literale
42                    # int
3.14                  # float

# String-Literale
"Hallo"               # str
'Welt'                # str

# Boolesche Literale
True                  # bool
False                 # bool

# None - repräsentiert "kein Wert" oder "nicht vorhanden"
# Dies ist eine explizite Definition als "kein Wert" und nicht das Fehlen eines
# Wertes!
None                  # NoneType

# Beispiele für None
def keine_rückgabe():
    print("Tut etwas")
    # Kein return Statement, gibt implizit None zurück

ergebnis = keine_rückgabe()  # ergebnis ist None

# None in Bedingungen
# Tests für `None` sollten immer mit  `is` und nicht mit `==` durchgeführt werden.
if ergebnis is None:
    print("Kein Ergebnis vorhanden")

11.3Zahlen

int()

ganzzahl = 42
ganzzahl = int(42)
von_string = int("123")
von_float = int(3.14)                  # Ergebnis: 3
riesige_zahl = 1234567890987654321
lesbare_zahleneingabe = 4_294_967_296  # 4294967296

float()

kommazahl = 3.14
kommazahl = float(3.14)
von_string = float("2.5")
von_int = float(42)       # Ergebnis: 42.0

11.4Zeichenketten (str())

text = "Hallo Welt"
zahl_zu_string = str(42)            # "42"
verkettung = "Hallo" + " " + "Welt" # "Hallo Welt"
wiederholung = "Ha" * 3             # "HaHaHa"
laenge = len("Python")              # 6
grossbuchstaben = "python".upper()  # "PYTHON"
kleinbuchstaben = "PYTHON".lower()  # "python"

# Escape-Sequenzen
text = "Wie geht's?"
text = 'Wie geht\'s?'
erzählung = "Sie sagt: \"So geht das!\""
neue_zeile = "Zeile 1\nZeile 2"
tabulator = "Text\teingerückt\n\tauch eingerückt"

11.5Besondere Python-String

f-String = Formatierte String

# Variablen für die nachfolgenden Beispiele.
name = "Alice"
alter = 25
kontostand = 14

# Variablen in Strings einfügen
print(f"Hallo, ich bin {name}!")                    # Hallo, ich bin Alice!
print(f"Ich bin {name} und {alter} Jahre alt")      # Ich bin Alice und 25 Jahre alt

# Ausdrücke in f-Strings
a = 17
b = 5
print(f"{a} geteilt durch {b} ist {a//b} mit Rest {a%b}.")
# 17 geteilt durch 5 ist 3 mit Rest 2.

11.6Boolesche Werte

wahr   = True
falsch = False

wahr   = True and True
wahr   = True or False

wahr   = not False
falsch = not True

falsch = False or False
falsch = True and False

11.7Arithmetik

addition = 5 + 3             # 8
subtraktion = 10 - 4         # 6
multiplikation = 6 * 7       # 42
multiplikation_float = 6.0*7 # 42.0
division = 15 / 3            # 5.0
ganzzahldivision = 17 // 5   # 3
modulo = 17 % 5              # 2
potenz = 2 ** 3              # 8

11.8Bedingungen (if)

alter = 18

if alter >= 18:
    print("Volljährig")
elif alter >= 16:
    print("Fast volljährig")
else:
    print("Minderjährig")

# Vergleichsoperatoren: ==, !=, <, <=, >, >=
# Logische Operatoren: and, or, not
if alter >= 18 and alter < 65:
    print("Arbeitsfähig")

11.9Schleifen

while

zaehler = 0
while zaehler < 5:
    print(zaehler)
    zaehler += 1

# Mit break und continue
zaehler = 0
while True:
    if zaehler == 3:
        break        # Abbruch der Schleife
    if zaehler == 1:
        zaehler += 1
        continue     # Überspringe den Rest des Codes in der Schleife und starte die nächste Iteration
    print(zaehler)
    zaehler += 1

# Häufiges Pattern: Eingaben bis leer einlesen
numbers = []
while True:
    text = input(">> ")
    if text == "":   # Leere Eingabe beendet die Schleife
        break
    numbers.append(int(text))
# Danach enthält numbers alle eingegebenen Zahlen

# Walrus-Operator := (Assignment Expression)
# Erlaubt Zuweisung in Bedingungen
while result := calculate():
    print(result)  # Schleife läuft, solange calculate() nicht None/0/False zurückgibt

# Äquivalent zu:
result = calculate()
while result:
    print(result)
    result = calculate()

for

# Über eine Liste iterieren
fruechte = ["Apfel", "Banane", "Orange"]
for frucht in fruechte:
    print(frucht)

# Über einen Bereich iterieren
for i in range(5):  # 0, 1, 2, 3, 4
    print(i)

for i in range(2, 8, 2):  # 2, 4, 6
    print(i)

# Mit enumerate für Index und Wert
for index, wert in enumerate(fruechte):
    print(f"{index}: {wert}")

11.10Funktionen (def)

def begruessung():
    print("Hallo!")

def addiere(a, b):
    return a + b

def quadrat(zahl=1):  # Standardwert
    return zahl ** 2

# Aufrufe
begruessung()
ergebnis = addiere(5, 3)  # 8
wert = quadrat(4)         # 16
standard = quadrat()      # 1

11.11Importieren von Code (import)

# Gesamtes Modul importieren
import math
ergebnis = math.sqrt(16)  # 4.0

# Spezifische Funktionen importieren
from math import sqrt, pi
ergebnis = sqrt(25)  # 5.0
kreisflaeche = pi * 5**2

# Modul mit Alias importieren
import datetime as dt
heute = dt.date.today()

# Alles aus einem Modul importieren (nicht empfohlen)
from math import *

11.12Listen (list)

fruechte = ["Apfel", "Banane", "Orange"]
zahlen = [1, 2, 3, 4, 5]
gemischt = ["Text", 42, True, 3.14]

# Zugriff auf Elemente (0-basiert - erstes Element hat Index 0)
erstes = fruechte[0]        # "Apfel" (erstes Element)
zweites = fruechte[1]       # "Banane" (zweites Element)
drittes = fruechte[2]       # "Orange" (drittes Element)
letztes = fruechte[-1]      # "Orange" (letztes Element)
vorletztes = fruechte[-2]   # "Banane" (vorletztes Element)

# Praktisches Beispiel mit Zahlen-Liste
numbers = [10, 20, 30, 40]
op1 = numbers[0]            # 10 (erstes Element)
op2 = numbers[1]            # 20 (zweites Element)

# Länge einer Liste
anzahl = len(fruechte)      # 3

# Elemente hinzufügen
fruechte.append("Mango")    # Am Ende hinzufügen

# Über Liste iterieren
for frucht in fruechte:
    print(frucht)

# Mit Index iterieren
for i, frucht in enumerate(fruechte):
    print(f"{i}: {frucht}")

11.13Wörterbücher (dict)

person = {
    "name": "Alice",
    "alter": 25,
    "stadt": "Berlin"
}

# Zugriff auf Werte
name = person["name"]           # "Alice"
alter = person.get("alter")     # 25
gehalt = person.get("gehalt", 0) # 0 (Standardwert)

# Werte setzen
person["beruf"] = "Entwicklerin"

# Über Wörterbuch iterieren
for schluessel, wert in person.items():
    print(f"{schluessel}: {wert}")

for schluessel in person.keys():
    print(schluessel)

11.14Nützliche eingebaute Funktionen

print()

print("Hallo Welt")                    # Hallo Welt
print("Name:", "Alice", "Alter:", 25)  # Name: Alice Alter: 25
print("Ergebnis", 42, sep=" -> ")      # Ergebnis -> 42
print("Ende", end="!\n")               # Ende!

# Formatierung
name = "Bob"
alter = 30
print(f"Ich bin {name} und {alter} Jahre alt")


# Zugriff auf Variable ohne Wert
print(nicht_existent)                  # Achtung, wirft `NameError()`

input()

text = input("Wie heißen Sie? ")

zahl = float(input("Zahl > "))   # Achtung, kann `ValueError()` "werfen"

assert - Überprüfungen im Code

# assert überprüft eine Bedingung und wirft AssertionError bei False
# Ein assert macht eine Annahme über den nachfolgenden Code explizit.
def addiere(a, b):
    return a + b

assert addiere(2, 3) == 5, "Fehler: 2 + 3 sollte 5 sein"
assert addiere(10, 25) == 35, "Fehler: 10 + 25 sollte 35 sein"

# Nützlich für Tests und Debugging
ergebnis = calculate()
assert ergebnis is not None, "Berechnung gab None zurück"
assert ergebnis > 0, f"Ergebnis sollte positiv sein, war aber {ergebnis}"

help() - Dokumentation anzeigen

# Zeigt Dokumentation zu Funktionen, Modulen, etc.
help(print)
help(len)
help(str.upper)

# Für eigene Funktionen mit docstrings
def meine_funktion():
    """Diese Funktion macht etwas Tolles."""
    pass

help(meine_funktion)  # Zeigt "Diese Funktion macht etwas Tolles."

11.15Dateien lesen und schreiben

# Datei lesen
with open("datei.txt", "r") as f:
    inhalt = f.read()           # Gesamten Inhalt lesen

with open("datei.txt", "r") as f:
    zeilen = f.readlines()      # Alle Zeilen als Liste

with open("datei.txt", "r") as f:
    for zeile in f:             # Zeile für Zeile
        print(zeile.strip())

# Datei schreiben
with open("ausgabe.txt", "w") as f:
    f.write("Hallo Welt\n")

# An Datei anhängen
with open("log.txt", "a") as f:
    f.write("Neuer Eintrag\n")

11.16CSV-Dateien

import csv

# CSV lesen
with open("daten.csv", "r") as f:
    reader = csv.reader(f, delimiter=";")
    for zeile in reader:
        print(zeile)  # zeile ist eine Liste

# CSV mit Spaltennamen lesen
with open("daten.csv", "r") as f:
    reader = csv.DictReader(f, delimiter=";")
    for zeile in reader:
        print(zeile["spaltenname"])  # zeile ist ein Wörterbuch

# CSV schreiben
with open("ausgabe.csv", "w", newline="") as f:
    writer = csv.writer(f, delimiter=";")
    writer.writerow(["Name", "Alter", "Stadt"])
    writer.writerow(["Alice", "25", "Berlin"])

11.17Ausnahmebehandlung (try/except)

try:
    zahl = int(input("Zahl eingeben: "))
    ergebnis = 10 / zahl
    print(ergebnis)
except ValueError:
    print("Das war keine gültige Zahl!")
except ZeroDivisionError:
    print("Division durch Null nicht möglich!")
except Exception as e:
    print(f"Unerwarteter Fehler: {e}")
finally:
    print("Wird immer ausgeführt")

11.18Dokumentation

Kommentare

kein_kommentar # Kommentar

docstrings

Am Anfang einer Datei, Funktion, Klasse, … kann ein String plaziert werden, welche von der Funktion help() für die Dokumentation genutzt wird. Es haben sich verschiedene Formatierungen entwickelt. Hier wird eine vorgestellt.

"""Lend or return media, if within allowed number of media on account.

Parameters:
-----------
account_balance (int): The current balance before the transaction is attempted.
        Valid values: 0 <= x <= 15

number_of_media (int): The number of the media to be lent or returned.
        A positive number signifies lending and a negative Number signifies returning.

Returns:
--------
int: The current account balance.
"""

11.19Ausführbare Skripte

Shebang

Nur die erste Zeile des Skripts kann als Shebang benutzt werden!

#! /usr/bin/env python3

if __name__ == "__main__":

wird_immer_ausgeführt = 1 # bspw. beim Importieren
def das_auch():
    print("wird ausgeführt, wenn die Funktion aufgerufen wird")
    ...

if __name__ == "__main__":
    wird_nur_als_skript = "ausgeführt"
    das_auch()

Datei ausführbar machen

In Unix-artigen Betriebssystemen.

$ chmod +x datei.py

11.20Python Code ausführen

$ python3 code.py
...
$ python3 -i code.py
...
>>> interaktive_weiterarbeit_möglich = True