2015-10-12 2 views
0
spades = ['2S','3S','4S','5S','6S','7S','8S','9S','10S','JS','QS','KS','AS'] 
hearts = ['2H','3H','4H','5H','6H','7H','8H','9H','10H','JH','QH','KH','AH'] 
clubs = ['2C','3C','4C','5C','6C','7C','8C','9C','10C','JC','QC','KC','AC'] 
diamonds = ['2D','3D','4D','5D','6D','7D','8D','9D','10D','JD','QD','KD','AD'] 

suits = [spades,hearts,clubs,diamonds] 

Как я могу присвоить значение силе карты. т. е. 5S = 5, JS = 11, AS = 14.Как атрибут значения для символа в элементе массива (Python)

+0

Что вы имеете в виду 'приписывая value'? – sam

+0

Используйте словарь. – wwii

ответ

1

Вы можете создать dictionary:

card_values = { 
    '5S': 5, 
    'JS': 11, 
    'AS': 14, 
    # Etc. 
} 

Затем получить соответствующее значение с помощью card_values["5S"], например.

0

Я думаю, что разделение типов карт (от 2 до 10, J, Q, K, A) и карточных костюмов стало более чистым. Таким образом, вам не нужно беспокоиться о нумерации или опечатках в костюмах.

card_types = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'] 
spades = [card + "S" for card in card_types] 
hearts = [card + "H" for card in card_types] 
clubs = [card + "C" for card in card_types] 
diamonds = [card + "D" for card in card_types] 

suits = [spades, hearts, clubs, diamonds] 

card_strengths = {'J': 11, 
      'Q': 12, 
      'K': 13, 
      'A': 14 
} 


def get_strength(card): 
    rank = card[0] 
    if rank.isdigit(): 
    return int(rank) 
    return card_strengths[rank] 


if __name__ == "__main__": 
    print get_strength('3S') 
    print get_strength('JS') 
    print get_strength('AC') 

Выход:

0

Используя dictionary ключ-значение пары для каждого значения в каждой не хорошее решение. В этой конкретной ситуации вы можете достичь того, чего хотите с помощью простого решения.

Смотрите рисунок,

list_index:0 value:2 
list_index:1 value:3 
list_index:2 value:4 
............ ....... 
list_index:12 value:14 

Используйте этот шаблон, чтобы найти более простое решение.

value = spades.index('5S')+2 
value = diamonds.index('AD')+2 

От этого вы получите интуицию, на которую я надеюсь.

0

Вы, вероятно, хотите функцию ..

def get_card_value(card_str): 
     value = card_str[0] 
     face_values = { 'A':14, 
         'K':13, 
         'Q':12, 
         'J':11 } 
     if value.upper() in face_values: 
      return face_values[value.upper()] 
     else: 
      return int(value) 

Тогда вы можете просто назвать это

print(get_card_value(hearts[2]))