Нужен совет с этой функцией в карточной игре - PullRequest
0 голосов
/ 01 мая 2020

Итак, я делаю игру в блэкджек, и вот как я определил функцию добавления карты, когда игрок требует ее:

def addcard(self):
    self.cards.append(self.a.deal())
    for a in range(0,len(self.cards)):
        self.value = self.value + values[self.cards[a]]

Значения - это словарь, который присваивает номера карт к некоторой ценности. Карты - это список, определенный в объекте класса «Рука». Этот класс рук принимает в качестве атрибута экземпляр отдельного класса «колода» (в данном случае он называется «а»), для которого определена функция «раздача» (функция раздачи просто возвращает первую карту в колоде). Проблема состоит в том, что карты значений содержат ключи с именами «Два», «Три», «Джек» и т. Д. c, в то время как функция раздачи возвращает строки типа «Два сердца» и т. Д. c. Теперь я не могу изменить названия ключей, потому что именно так я решил сформулировать список карт:

suits = ['Hearts','Spades','Diamonds','Clubs']
ranks = ['Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','King', 'Queen','Ace']
values = {'Two':2,'Three':3,'Four':4,'Five':5,'Six':6,'Seven':7,'Eight':8,'Nine':9,'Ten':10,'Jack':10,'King':10,'Queen':10,'Ace':11} 


class Deck:

def __init__(self):
    self.deck = []
    for rank in ranks:
        for suit in suits:
            self.deck.append(rank +' '+'of'+' '+suit)    

Так что смена ключей испортит мою колоду. По сути, мне нужно разобраться в этом беспорядке. Есть ли способ индексировать список так, чтобы он занимал только первое слово каждого элемента ??

1 Ответ

0 голосов
/ 01 мая 2020

Я не совсем уверен, что вы спрашиваете, но я предполагаю, что по вашему вопросу

Есть ли способ проиндексировать список так, чтобы он занимал только первое слово каждого элемента ?

если вы имели в виду, есть ли способ получить доступ к словарю , используя первое слово строки? Тогда да.

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

my_card = 'Two of Hearts'
my_card_rank = my_card.split(' ')[0]

print(values[my_card_rank])

Который должен вывести: 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...