geekcomputers/Python · warning · ValueError

Not enough chips

Error message

Not enough chips

What it means

Raised by the Chips.insurance setter in the blackjack simulator when setting an insurance amount that would push the player's total committed chips (bet + insurance) below zero. It is a domain-rules error enforcing that a player cannot insure more chips than they currently hold. The message is formatted via Chips.get_tips.

Source

Thrown at BlackJack_game/blackjack_simulate.py:176

    def double_bet(self):
        if self.can_double():
            self._bet_amount *= 2
            self.is_double = True
        else:
            over_tips = "Not enough chips || "
            cannot_double = "CAN'T DO DOUBLE"
            raise ValueError(Chips.get_tips(over_tips + cannot_double))

    @property
    def insurance(self):
        return self._insurance

    @insurance.setter
    def insurance(self, value):
        if self.amount - value < 0:
            over_tips = "Not enough chips"
            raise ValueError(Chips.get_tips(over_tips))
        self._insurance = value
        self.is_insurance = True

    def current_amount(self):
        return self.amount - self.bet_amount - self.insurance

    def reset_chip(self):
        self._bet_amount = 0
        self._insurance = 0
        self.is_double = False
        self.is_insurance = False

    def can_double(self):
        return self.current_amount() - self.bet_amount >= 0


class User:
    def __init__(self, name, role, chips_amount=None, color="END"):

View on GitHub (pinned to 40f4cd2652)

Solutions

  1. Clamp the insurance value to the available chips before assigning: insurance = min(requested, chips.amount - chips.bet_amount)
  2. Ensure the bet was deducted/checked before offering insurance
  3. In the UI/game loop, disable the insurance option when chips.amount <= 0
  4. Wrap the assignment in try/except ValueError and re-prompt the player

Example fix

// before
chips.insurance = requested_insurance
// after
max_ins = chips.amount - chips.bet_amount
chips.insurance = min(requested_insurance, max_ins)
Defensive patterns

Strategy: validation

Validate before calling

available = chips.amount - chips.bet_amount
if requested_insurance > available:
    requested_insurance = max(available, 0)
chips.insurance = requested_insurance

Try / catch

try:
    chips.insurance = value
except ValueError:
    # re-prompt player or skip insurance
    pass

Prevention

When it happens

Trigger: Calling player.chips.insurance = value where value > chips.amount (e.g. setting insurance 50 when amount is 40), or stacking insurance on top of an existing bet so amount - value < 0.

Common situations: Game-loop code that computes insurance as a fraction of the bet without clamping to available chips; tests that construct Chips with a small amount then assign a large insurance.

Related errors


AI-assisted analysis of geekcomputers/Python@40f4cd2652 (2026-08-27). Data as JSON: /api/errors/b4a372b4b6b98aab. Report an issue: GitHub.