Lernziele dieses Kapitels
- Du nutzt input() für Benutzer-Eingaben und wandelst Typen korrekt um
- Du beherrschst f-Strings für formatierte Ausgaben
- Du wendest String-Methoden praktisch an
- Du lässt PyBuddy den Nutzer nach seinem Namen fragen
input() — Das Programm hört dir zu
Bisher haben wir nur ausgegeben (print). Jetzt lernst du einzugeben (input). Das Programm pausiert und wartet, bis der Benutzer etwas tippt.
WICHTIG: input() liefert immer einen String. Auch wenn jemand 16 eingibt, ist es für Python "16". Für Zahlen musst du mit int() oder float() umwandeln.
name = input("Wie heißt du? ")
print(f"Hallo {name}!")
# Zahlen müssen umgewandelt werden!
alter = int(input("Wie alt bist du? "))
print(f"In 10 Jahren bist du {alter + 10}.")
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
name = input("Name: ")
alter = int(input("Alter: "))
let name = prompt("Name:");
let alter = parseInt(prompt("Alter:"));
input() und int() direkt — JavaScript braucht prompt() und parseInt(). Außerdem: input() wartet im Terminal, prompt() öffnet ein Popup.f-Strings — Python's magische Textverarbeitung
In JavaScript kennst du Template Literals mit Backticks: `Hallo ${name}`. In Python gibt es f-Strings — noch einfacher und schneller.
Schreibe einfach ein f vor den String und setze Variablen in geschweifte Klammern. Fertig!
# f-Strings in Python
name = "Max"
alter = 16
print(f"Hallo {name}!")
print(f"Du bist {alter} Jahre alt.")
print(f"In 5 Jahren bist du {alter + 5}.")
# Formatierung
preis = 19.995
print(f"Preis: {preis:.2f}€") # 2 Dezimalstellen
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
print(f"Hallo {name}!")
print(f"Preis: {preis:.2f}€")
console.log(`Hallo ${name}!`);
console.log(`Preis: ${preis.toFixed(2)}€`);
:.2f formatiert direkt im f-String. JavaScript: .toFixed(2) ist eine Methode. Beides rundet auf 2 Dezimalstellen.String-Methoden — Texte manipulieren
Strings sind in Python Objekte mit eingebauten Methoden. Du kannst sie verändern, teilen, durchsuchen und formatieren — ohne selbst Code schreiben zu müssen.
text = " Python ist mega cool "
# Formatierung
print(text.upper()) # PYTHON IST MEGA COOL
print(text.lower()) # python ist mega cool
print(text.strip()) # Leerzeichen entfernt
# Suchen & Ersetzen
print(text.replace("cool", "OP"))
print(text.find("mega")) # Position: 15
# Teilen & Verbinden
woerter = text.split() # ["Python", "ist", "mega", "cool"]
print(woerter)
print("-".join(woerter)) # Python-ist-mega-cool
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
text.upper()
text.replace("alt", "neu")
text.split()
text.toUpperCase()
text.replace("alt", "neu")
text.split(" ")
strip() in Python vs trim() in JavaScript und find() vs indexOf() unterscheiden sich leicht.String-Slicing — Texte wie ein Profi teilen
Mit Slicing kannst du Teile eines Strings herausschneiden — ähnlich wie bei JavaScript-Arrays, aber noch intuitiver. Die Syntax ist: text[start:stop:step].
name = "Python"
print(name[0]) # P (erstes Zeichen)
print(name[-1]) # n (letztes Zeichen)
print(name[0:4]) # Pyth (Zeichen 0-3)
print(name[2:]) # thon (ab Index 2)
print(name[:4]) # Pyth (bis Index 3)
print(name[::2]) # Pto (jedes 2. Zeichen)
print(name[::-1]) # nohtyP (rückwärts!)
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
name[0:4] # Slicing direkt
name[::-1] # Rückwärts
name.slice(0, 4); // Methode nötig
name.split("").reverse().join(""); // Kompliziert!
[::-1] dreht einen String sofort um — in JavaScript brauchst du split().reverse().join().Warm-Up: Mad Libs Spiel
Schreibe ein Mad Libs-Spiel: Das Programm fragt nach Adjektiv, Nomen und Verb und setzt diese in einen lustigen Satz ein.
Hinweis: adjektiv = input("Ein Adjektiv: ")
nomen = input("Ein Nomen: ")
verb = input("Ein Verb: ")
print(f"Der {adjektiv}e {nomen} hat beschlossen, {verb} zu gehen.")
adjektiv = input("Ein Adjektiv: ")
nomen = input("Ein Nomen: ")
verb = input("Ein Verb: ")
print(f"Der {adjektiv}e {nomen} hat beschlossen, {verb} zu gehen.")
Challenge: Passwort-Generator
Erstelle einen simplen Passwort-Generator. Der Nutzer gibt seinen Namen und sein Geburtsjahr ein. Das Passwort setzt sich zusammen aus: Großbuchstabe des Namens + kleinbuchstaben + Geburtsjahr + "!"
Hinweis: name = input("Dein Name: ")
jahr = input("Geburtsjahr: ")
passwort = name[0].upper() + name[1:].lower() + jahr + "!"
print(f"Dein Passwort: {passwort}")
name = input("Dein Name: ")
jahr = input("Geburtsjahr: ")
passwort = name[0].upper() + name[1:].lower() + jahr + "!"
print(f"Dein Passwort: {passwort}")
PyBuddy-Checkpoint: Interaktive Begrüßung
PyBuddy soll den Nutzer nach seinem Namen fragen und ihn persönlich begrüßen. Nutze input() und f-Strings für eine professionelle Begrüßung.
Hinweis: # pybuddy/main.py
nutzer_name = input(" Wie heißt du? ")
print(f"\n Hallo {nutzer_name}!")
print(f"Schön, dass du da bist, {nutzer_name}.")
print("Ich bin PyBuddy — dein digitaler Assistent.")
print(f"Bereit für deine Befehle, {nutzer_name}? ")
# pybuddy/main.py
nutzer_name = input(" Wie heißt du? ")
print(f"\n Hallo {nutzer_name}!")
print(f"Schön, dass du da bist, {nutzer_name}.")
print("Ich bin PyBuddy — dein digitaler Assistent.")
print(f"Bereit für deine Befehle, {nutzer_name}? ")
In Discord-Bots ist input() das Herzstück: Wenn jemand !wetter Wien schreibt, liest der Bot die Eingabe, verarbeitet sie und antwortet. Genau das lernst du gerade — und in Kapitel 11 baust du deinen ersten API-Call!
Zusammenfassung
- input() liest Benutzer-Eingaben — immer als String!
- f-Strings: f"Hallo {name}" — die einfachste Textformatierung
- String-Methoden: upper(), lower(), strip(), replace(), split(), join()
- Slicing: text[0:5] extrahiert Teile — text[::-1] dreht um
- PyBuddy fragt jetzt nach dem Namen des Nutzers