首页 > 解决方案 > Python中二十一点的甲板类

问题描述

我目前正在为基于文本的二十一点游戏开发 Deck(用于扑克牌)类,即使我的嵌套字典有效(我已经测试过),我在使用 Deck 类打印卡片时遇到了一些困难.

代码如下:

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)

标签: pythonoopblackjack

解决方案


您的代码有几个问题 - 括号不匹配,您不需要调用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)

推荐阅读