Класс колоды в блэкджеке в Python - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я работаю над классом колоды (для игры в карты) для текстовой игры в блэкджек, и у меня возникают трудности с распечаткой карточек с использованием класса колоды, хотя мой вложенный словарь работает (у меня есть проверил это).

Код ниже:

import random

cards  = {'Hearts': {'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}, 
          'Diamonds': {'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},
          'Spades': {'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},
          'Clubs': {'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 Deck:

    def __init__(self):
        self.deck = []
        for outer_key in cards:
            'Outer Key = ',outer_key
            for inner_key in cards[outer_key]:
                self.deck.append(('{} of {}'.format(inner_key,outer_key))

    def __str__(self):
        x = ''
        for card in self.deck:
            x += '\n' + card.__init__()
        return 'The deck has: ' + x 

test_deck = Deck()
print(test_deck)

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

У вашего кода была пара проблем - несоответствующие скобки, и вам не нужно звонить card.__init__().

Я исправил это, и это работает для меня:

import random

cards = {'Hearts':
         {'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}, 
         'Diamonds':
         {'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},
         'Spades':
         {'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},
         'Clubs':
         {'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 Deck:
    def __init__(self):
        self.deck = []
        for outer_key in cards:
            'Outer Key = ',outer_key
            for inner_key in cards[outer_key]:
                self.deck.append(('{} of {}'.format(inner_key,outer_key)))

    def __str__(self):
        x = ''
        for card in self.deck:
            x += '\n' + card
        return 'The deck has: ' + x 

test_deck = Deck()
print(test_deck)
0 голосов
/ 28 апреля 2020

card.__init__() является NoneType, и вы не можете объединить str с ним.

__init__() вызывается для вас при создании экземпляра класса, нет необходимости вызывать его, если вы Вы используете наследование для расширения __init__() дочерних классов.

...