二十一点类



我没有收到一个错误,但不能让我的类正常工作。我正在尝试让Card类打印"两颗心"。但我运行的时候什么也没得到。也测试我的甲板类,我得到<__main__.Deck object at 0x0000029A1F045F70>,我不记得如何纠正。

import random

suits = ['spades', 'hearts', 'clubs', 'diamonds']
ranks = ['two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'jack', 'queen', 'king', 'ace']
values = {'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9, 'ten': 10, 'jack': 10, 'queen': 10, 'king': 10, 'ace': 11}
playing = True
class Card:
    def __init__(self, value, suit):
        self.value = value
        self.suit = suit
    def show(self):
        print("{} of {}".format(self.value, self.suit))
            
card_picked = Card('two', 'hearts')
class Deck:
    def __init__(self):
       self.cards = []
       self.build()
    def build(self):
        for i in values:
            for s in suits:
                self.cards.append(Card(i, s))
    def show(self):
        for c in self.cards:
            c.show()
    def shuffle(self):
        random.shuffle(self.cards)
    def deal(self):
        single_card = self.cards.pop()
        return single_card
deck = Deck()
print(deck)

提前感谢您提供的任何帮助!

print()访问类的__str__方法,如果该方法存在。

你可以为你的Card类定义它:

class Card:
    
    [...]
    def __str__(self):
        return "{} of {}".format(self.value, self.suit)

对于整个牌组,你可以获得该牌组中每张牌的__str__方法:

class Deck:
    [...]
    def __str__(self):
        return 'n'.join([c.__str__() for c in self.cards])

你的代码运行良好。

deck = Deck()
deck.shuffle()
card = deck.deal()
card.show()

我得到输出:

six of hearts

最新更新