66224


現在pythonを学習しています。  
トランプのカードをすべて表示したいのですが、rm_cardメソッドを定義する理由がわかりません。  
どなたか教えてください。

[code]

    from random import shuffle
    
    class Card():
        suits = ["spades", "hearts", "diamonds", "clubs"]
        values = [None, None, "2", "3", "4", "5", "6", "7","8",
                  "9", "10", "Jack", "Queen", "King", "Ace"]
        def __init__(self, value, suit):
            self.value = value
            self.suit = suit
    
        def __repr__(self):
            return self.values[self.value] + " of " + self.suits[self.suit]
    
    class Deck():
        def __init__(self):
            self.cards = []
            for i in range(2, 15):
                for j in range(0, 4):
                    self.cards.append(Card(i, j))
            shuffle(self.cards)
    
        def rm_card(self):
            if len(self.cards) == 0:
                return
            return self.cards.pop()
    
    deck = Deck()
    
    for card in deck.cards:
        print(card)
    
[/code]


CC BY-SA 4.0
2020-05-03T00:21:22.517
66222
2020-05-03T05:19:18.177
2020-05-03T00:50:56.050
32986
39937
question
python
トランプのカードをすべて表示する方法


そのプログラム(War Game)の完全版は
[self_taught/python_ex280.py](https://github.com/calthoff/self_taught/blob/master/python_ex280.py/)
になります。「rm_cardメソッドを定義する理由」は、このゲームにおける必要な処理(deck からカードを一枚取り出す)だから、です。


CC BY-SA 4.0
2020-05-03T01:15:00.190
66224
2020-05-03T01:15:00.190
66222
answer


> トランプのカードをすべて表示する方法

質問の趣旨とは異なりますが、リスト内包表記を使ったコード例です。

[code]

    from random import shuffle
    suits = ["spades", "hearts", "diamonds", "clubs"]
    values = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"]
    
    cards = [(suit, value)for suit in suits for value in values]
    shuffle(cards)
    for suit, value in cards:
        print(value + " of " + suit) 
    
[/code]

[入門Python 3](https://iss.ndl.go.jp/books/R100000002-I026914699-00)を参考にしました。


CC BY-SA 4.0
2020-05-03T05:19:18.177
66232
2020-05-03T05:19:18.177
35558
66222
answer