Musterlösung: Blackjack (Python)

Diese Lösung zeigt ein komplettes Blackjack-Konsolenspiel in Python. Du siehst, wie ein Deck erzeugt und gemischt wird, wie der Handwert mit Ass-Sonderfall berechnet wird und wie der Spielablauf für Spieler und Dealer funktioniert – exakt analog zur Java-Variante.

Erklärung der Lösung

Schritt-für-Schritt

1) Deck & Kartenwerte

RÄNGE = ["2","3","4","5","6","7","8","9","10","B","D","K","A"]
WERTE: 2–10 → Zahl; B/D/K → 10; A → 11 (zunächst)
Deck = RÄNGE * 4; random.shuffle(Deck)

Wir nutzen ein 4-faches Rang-Deck (Farben egal) und mischen es. Bildkarten zählen 10, ein Ass zählt zuerst 11.

2) Handwert berechnen (Ass-Logik)

wert = sum(WERTE[k] für k in hand)
anzahl_ass = hand.count("A")
while wert > 21 und anzahl_ass > 0: wert -= 10

Bei Überkauf (> 21) „wandeln“ wir Asse von 11 auf 1 (−10 je Ass), bis der Wert ≤ 21 ist oder keine Asse mehr übrig sind.

3) Spielerzug

while:
  Eingabe "z" → Karte ziehen (deck.pop())
  Eingabe "h" → halten
  >21 → sofort verloren

Der Spieler zieht beliebig oft. Er trifft die Entscheidung per Eingabe z (ziehen) oder h (halten).

4) Dealerzug

Dealer deckt auf, zieht solange hand_wert(dealer) < 17

Die erste Dealer-Karte ist anfangs verdeckt. Danach deckt der Dealer auf und zieht bis mindestens 17.

5) Auswertung

Werte vergleichen → Spieler / Dealer / Unentschieden

Zum Schluss werden die Handwerte verglichen und das Ergebnis ausgegeben.

Komplette Musterlösung (Python)

Was du aus dieser Aufgabe lernst

  • Deck-Generierung und Mischen in Python.
  • Dynamische Ass-Behandlung (11 → 1) zur Vermeidung des Überkaufs.
  • Spielabläufe für Spieler und Dealer (Eingabe, Schleifen, Bedingungen).
Zurück zur Aufgabe
Zur Übersicht