geekcomputers/Python · warning · ValueError
Player BUST
Error message
Player BUST
What it means
Raised in card_manage when the player draws a card (Hit or Double-down) and their point total exceeds BLACK_JACK (21). It is control flow used to end the round with a player bust, not an infrastructure failure. The caller (play) is expected to catch it and settle the bet.
Source
Thrown at BlackJack_game/blackjack_simulate.py:550
prompt="Insurance amount >> ",
general_err=err,
)
self.player.chips.insurance = pay_ins
if self.choice == "Double-down":
try:
self.player.chips.double_bet()
except ValueError as e:
print(e)
self.player.refresh_prompt()
if self.choice in ("Insurance", "Double-down", "Surrender"):
self.go_on = False
def card_manage(self):
if self.choice in ("Hit", "Double-down"):
self.player.obtain_card(self.deck)
if self.player.is_point(">", BLACK_JACK):
raise ValueError("Player BUST")
else:
self.dealer.strategy_trigger(self.deck)
if self.dealer.is_point(">", BLACK_JACK):
raise ValueError("Dealer BUST")
elif self.choice != "Surrender":
if not self.player.chips.is_insurance:
self.dealer.strategy_trigger(self.deck)
if self.dealer.is_point(">", BLACK_JACK):
raise ValueError("Dealer BUST")
self.dealer.showing()
self.player.showing()
if self.choice in ("Double-down", "Stand"):
self.go_on = False
def is_surrender(self):
if self.choice == "Surrender":
self.player.speak("Sorry, I surrender....\n")View on GitHub (pinned to 40f4cd2652)
Solutions
- Catch ValueError in the calling play loop and settle the round as a player loss
- Before hitting, check the current total and consider standing on 17+
- Use is_point to inspect the hand total before requesting Hit/Double-down
Example fix
// before
self.card_manage()
// after
try:
self.card_manage()
except ValueError as e:
# round ends: player bust, settle bet
self.settle(busted=str(e)) Defensive patterns
Strategy: try-catch
Validate before calling
if choice in ('Hit','Double-down') and player.is_point('>', BLACK_JACK - 5):
# risky draw ahead; consider standing
pass Try / catch
try:
self.card_manage()
except ValueError as e:
if 'Player BUST' in str(e):
self.settle(player_wins=False) Prevention
- Wrap every card_manage call in the play loop with try/except ValueError
- Treat bust errors as round outcomes, not failures
- Settle bets and reset state inside the handler before the next round
When it happens
Trigger: self.choice in ('Hit','Double-down') followed by player.obtain_card(deck) making player.is_point('>', 21) true. Card_manage is invoked from play after each player decision.
Common situations: Simulating many rounds where a hit on a stiff hand (12-16) exceeds 21; forgetting that Double-down also draws a card and can bust.
Related errors
- Dealer BUST
- Not enough chips
- Your integer should bigger than 0
- Your chips should between 1 -
- Parameter n must be greater or equal to one.
AI-assisted analysis of geekcomputers/Python@40f4cd2652 (2026-08-27).
Data as JSON: /api/errors/cc9b592f35262f1b.
Report an issue: GitHub.