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 # 4294967296float()¶
kommazahl = 3.14
kommazahl = float(3.14)
von_string = float("2.5")
von_int = float(42) # Ergebnis: 42.011.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 False11.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 # 811.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() # 111.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 # Kommentardocstrings¶
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 python3if __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.py11.20Python Code ausführen¶
$ python3 code.py
...
$ python3 -i code.py
...
>>> interaktive_weiterarbeit_möglich = True