29 lines
602 B
Python
29 lines
602 B
Python
# tag::TOMBOLA_BINGO[]
|
|
|
|
import random
|
|
|
|
from tombola import Tombola
|
|
|
|
|
|
class BingoCage(Tombola): # <1>
|
|
|
|
def __init__(self, items):
|
|
self._randomizer = random.SystemRandom() # <2>
|
|
self._items = []
|
|
self.load(items) # <3>
|
|
|
|
def load(self, items):
|
|
self._items.extend(items)
|
|
self._randomizer.shuffle(self._items) # <4>
|
|
|
|
def pick(self): # <5>
|
|
try:
|
|
return self._items.pop()
|
|
except IndexError:
|
|
raise LookupError('pick from empty BingoCage')
|
|
|
|
def __call__(self): # <6>
|
|
self.pick()
|
|
|
|
# end::TOMBOLA_BINGO[]
|