Итак, игра Блэкджек, и у меня есть фрагменты кода, чтобы сделать колоду и сделать руку. Из колоды, которая является списком, я пытаюсь создать словарь, чтобы каждая карта (кортеж из колоды) имела значение, сопоставленное с ним, в соответствии с правилами Блэкджека.Что не так с моим словарем (сопоставление значений с картами)
from random import randint
def make_deck():
deck = []
for suit in suits:
for rank in ranks:
deck.append((suit,rank))
return deck
suits = ['spades','hearts','diamonds','clubs']
ranks = ['ace','two','three','four','five','six','seven','eight','nine','ten','jack','queen','king']
deck = make_deck()
def make_hand():
hand = []
for k in range(2):
card = deck.pop(randint(0,51))
hand.append(card)
return hand
hand = make_hand()
values = {} #empty dictionary
for card in deck:
rank = [card[1] for card in deck]
if rank == 'ace':
values[card] = 1
elif rank == 'two':
values[card] = 2
elif rank == 'three':
values[card] = 3
elif rank == 'four':
values[card] = 4
elif rank == 'five':
values[card] = 5
elif rank == 'six':
values[card] = 6
elif rank == 'seven':
values[card] = 7
elif rank == 'eight':
values[card] = 8
elif rank == 'nine':
values[card] = 9
elif rank == 'ten' or 'jack' or 'queen' or 'king':
values[card] = 10
print values
Очевидно, что это очень создание словаря с помощью грубой силы и не имеет каких-либо изяществом поэтому любые указатели в более эффективным образом будут оценены. Реальная проблема заключается в том, что я не могу определить, что не так с моим кодом, что print values
возвращает только один кортеж, сопоставленный с его значением, а не со всем словарем. Если я переведу порядок списка для rank
за пределами цикла, я просто получу словарь, где все отображается на значение 10.
Кроме того, я просто понял, что моя функция make_hand()
иногда приводит к ошибке, где «индекс поп-индекса» «вне пределов досягаемости», поэтому совет по вещам, чтобы попробовать, чтобы он работал все время, также был бы оценен.
Возможно, сделайте элементы в строках '' '' ряды''' (ранга, значения). Затем вы можете использовать ['' 'operator.itemgetter'''] (https://docs.python.org/3/library/operator.html#operator.itemgetter), чтобы получить ранжирование значения. – wwii