Hangman Spiel – Wörter raten

Im folgenden Beispiel wird zufällig ein Wort aus einer Liste gewählt und in Zeilen 18–24 dargestellt: Unbekannte Buchstaben werden durch _ ersetzt, korrekt geratene Buchstaben werden angezeigt. Zeile 29 prüft, ob das Wort vollständig erraten ist, und Zeile 34, ob bereits zu viele Fehlversuche vorliegen (6 Fehler ⇒ Game Over). In den Zeilen 38–53 erfolgt die Abfrage und Verarbeitung eines neuen Buchstabens.

import random

woerter = [
    "python", "computer", "programm", "schule", "spielen",
    "banana", "internet", "kaktus", "stern", "zauber"
]

# Ein Wort auswählen
wort = random.choice(woerter).lower()
geraten = set()
falsch = set()
max_fehler = 6

print("Hangman (Wörter raten)")

while True:
    # Wort anzeigen (mit _ für unbekannte Buchstaben)
    anzeige = ""
    for buchstabe in wort:
        if buchstabe in geraten:
            anzeige += buchstabe + " "
        else:
            anzeige += "_ "
    print("\nWort:", anzeige.strip())
    print("Falsch geraten:", " ".join(sorted(falsch)) if falsch else "-")
    print("Fehler:", len(falsch), "/", max_fehler)

    # Gewonnen?
    if "_" not in anzeige:
        print("\n✅ Gewonnen! Das Wort war:", wort)
        break

    # Verloren?
    if len(falsch) >= max_fehler:
        print("\n❌ Verloren! Das Wort war:", wort)
        break

    tipp = input("Buchstabe eingeben: ").strip().lower()

    if len(tipp) != 1 or not tipp.isalpha():
        print("Bitte genau 1 Buchstaben eingeben.")
        continue

    if tipp in geraten or tipp in falsch:
        print("Den Buchstaben hast du schon ausprobiert.")
        continue

    if tipp in wort:
        geraten.add(tipp)
        print("✅ Treffer!")
    else:
        falsch.add(tipp)
        print("❌ Leider falsch!")

ToDo Tool

Folgender Code zeigt ein Beispiel eines einfachen ToDo Konsolen Tools.

Alles wird in eine Datei gespeichert. Jede Zeile ein ToDo. Mit 1 können alle Aufgaben angezeigt werden. Mit zwei eine neue Zeile hinzugefügt werden und mit 3 eine einzelne Zeile gelöscht werden.

Spannend ist hier wie die einzelne Zeile „gefunden“ wird:

todos = [line.strip() for line in f if line.strip()] –> f ist die Datei | for line in f -> das zerlegt den Inhalt der Datei in Zeilen | if line.strip() -> Löschen leere Zeile.

Daraufhin wird die ausgewählte Zeile gelöscht: geloescht = todos.pop(nr – 1)

import os

datei = "todos.txt"

# Falls Datei nicht existiert, anlegen
if not os.path.exists(datei):
    with open(datei, "w", encoding="utf-8") as f:
        pass

while True:
    print("\n📝 ToDo Tool")
    print("1) Anzeigen")
    print("2) Hinzufügen")
    print("3) Löschen")
    print("4) Beenden")

    wahl = input("Auswahl: ").strip()

    # 1) Anzeigen
    if wahl == "1":
        with open(datei, "r", encoding="utf-8") as f:
            todos = [line.strip() for line in f if line.strip()]

        if not todos:
            print("Keine ToDos vorhanden.")
        else:
            for i, todo in enumerate(todos, start=1):
                print(f"{i}) {todo}")

    # 2) Hinzufügen
    elif wahl == "2":
        text = input("Neue ToDo: ").strip()
        if text == "":
            print("Leere ToDo wird nicht gespeichert.")
        else:
            with open(datei, "a", encoding="utf-8") as f:
                f.write(text + "\n")
            print("✅ Gespeichert!")

    # 3) Löschen
    elif wahl == "3":
        with open(datei, "r", encoding="utf-8") as f:
            todos = [line.strip() for line in f if line.strip()]

        if not todos:
            print("Keine ToDos zum Löschen.")
            continue

        for i, todo in enumerate(todos, start=1):
            print(f"{i}) {todo}")

        try:
            nr = int(input("Nummer zum Löschen: ").strip())
        except ValueError:
            print("Bitte eine gültige Nummer eingeben.")
            continue

        if nr < 1 or nr > len(todos):
            print("Nummer existiert nicht.")
            continue

        geloescht = todos.pop(nr - 1)

        with open(datei, "w", encoding="utf-8") as f:
            for todo in todos:
                f.write(todo + "\n")

        print("🗑️ Gelöscht:", geloescht)

    # 4) Beenden
    elif wahl == "4":
        print("Bye 👋")
        break

    else:
        print("Ungültige Auswahl.")

Tage bis zu einem Datum

Das besondere hier sind Formatierungsangaben! Mit denen kann man angeben wie ein Text generiert oder Interpretiert werden soll. Der Grund: Manche Datenstrukturen werden ja nach Ort / Land anders dargestellt. Uhrzeit zum Beispiel. Ist es gerade 15 Uhr oder 3 PM? Was ist 2 ein halb? 2,5 (zwei Komma 5) oder 2.5 (2 Punkt 5).

  • strptime(eingabe, „%d.%m.%Y“) –> Zerlege den eingegeben Text in d.m.Y –>
    d = Tag, m = Monat, Y = Jahr
  • strftime(„%d.%m.%Y“) –> Generiert einen Text in d.m.Y –>
    d = Tag, m = Monat, Y = Jahr
from datetime import date, datetime

print("📅 Tage bis Datum")
print("Format: TT.MM.JJJJ (z.B. 31.12.2026)")

eingabe = input("Datum eingeben: ").strip()

try:
    ziel = datetime.strptime(eingabe, "%d.%m.%Y").date()
except ValueError:
    print("❌ Ungültiges Format. Bitte z.B. 31.12.2026 eingeben.")
    raise SystemExit

heute = date.today()
diff = (ziel - heute).days

print("Heute:", heute.strftime("%d.%m.%Y"))
print("Zieldatum:", ziel.strftime("%d.%m.%Y"))

if diff > 0:
    print(f"⏳ Noch {diff} Tage.")
elif diff == 0:
    print("🎉 Das ist heute!")
else:
    print(f"✅ Das Datum war vor {-diff} Tagen.")

Von CarlWenz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert