計算機科学のブログ

ほしい物リスト

Python - Why Python: Similar but Different - set, remove method

Head First Python: A Learner’s Guide to the Fundamentals of Python Programming, A Brain-Friendly GuidePaul Barry(著)、 O’Reilly Mediaの Chapter 1.(Why Python?: Similar but Different)、SHARPEN YOUR PENCIL(98/682)の解答を求めてみる。

Jupyter(コード、入出力結果)

Cards.ipynb

def draw():
    card = random.choice(list(deck))
    deck.remove(card)
    return card
for _ in range(55):
    print(draw())
(9, 'of', 'Diamonds')
(5, 'of', 'Hearts')
('Ace', 'of', 'Hearts')
('King', 'of', 'Spades')
(3, 'of', 'Spades')
(8, 'of', 'Spades')
(4, 'of', 'Diamonds')
(7, 'of', 'Spades')
('King', 'of', 'Hearts')
(10, 'of', 'Hearts')
(4, 'of', 'Hearts')
(4, 'of', 'Spades')
(7, 'of', 'Clubs')
('Jack', 'of', 'Hearts')
(6, 'of', 'Diamonds')
(5, 'of', 'Clubs')
(9, 'of', 'Hearts')
('Jack', 'of', 'Diamonds')
('Queen', 'of', 'Spades')
(8, 'of', 'Diamonds')
('Jack', 'of', 'Spades')
(9, 'of', 'Spades')
(2, 'of', 'Diamonds')
(8, 'of', 'Hearts')
(2, 'of', 'Spades')
(3, 'of', 'Hearts')
(4, 'of', 'Clubs')
('King', 'of', 'Clubs')
(8, 'of', 'Clubs')
(10, 'of', 'Diamonds')
(10, 'of', 'Spades')
(7, 'of', 'Diamonds')
(5, 'of', 'Diamonds')
(3, 'of', 'Diamonds')
(5, 'of', 'Spades')
('Queen', 'of', 'Diamonds')
('Queen', 'of', 'Clubs')
(2, 'of', 'Clubs')
(6, 'of', 'Clubs')
(7, 'of', 'Hearts')
(10, 'of', 'Clubs')
(9, 'of', 'Clubs')
('Queen', 'of', 'Hearts')
(3, 'of', 'Clubs')
('King', 'of', 'Diamonds')
('Ace', 'of', 'Diamonds')
('Ace', 'of', 'Clubs')
(6, 'of', 'Spades')
('Ace', 'of', 'Spades')
(6, 'of', 'Hearts')
(2, 'of', 'Hearts')
('Jack', 'of', 'Clubs')



---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

Cell In[3], line 2
      1 for _ in range(55):
----> 2     print(draw())


Cell In[2], line 2, in draw()
      1 def draw():
----> 2     card = random.choice(list(deck))
      3     deck.remove(card)
      4     return card


File /opt/local/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/random.py:351, in Random.choice(self, seq)
    348 # As an accommodation for NumPy, we don't use "if not seq"
    349 # because bool(numpy.array()) raises a ValueError.
    350 if not len(seq):
--> 351     raise IndexError('Cannot choose from an empty sequence')
    352 return seq[self._randbelow(len(seq))]


IndexError: Cannot choose from an empty sequence