Как я могу добавить две итерации элементов из списка, чтобы сформировать общую сумму (карты из руки блэкджека) - PullRequest
0 голосов
/ 09 мая 2020

PlayersHand настроен следующим образом.

import random

PlayersHand = []
DealersHand = []
Ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "10","Ace", "Jack", "Queen", "King"]
Suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
Deck = []
for num in Ranks:
    for  suit in Suits:
        card = num + ' of ' + suit
        Deck += [card]
        random.shuffle(Deck)

print()

for i in Deck:
    numval=(i[0]) 

PlayersHand = random.choices(Deck, k=2)
        print(name,"Your cards are", PlayersHand)
        DealersHand = random.choices(Deck, k=1)
        print("Dealer, your cards are Blank +",DealersHand)
        total = 0

  for i in PlayersHand:
        countval=(i[0])#to get the value of the card(perhaps need first two values for one or ten)
        print ("count is", countval);
        print("-------------")
        print(i)
    if countval == "J" or countval =="K" or countval =="Q": total +=10
    elif  countval =="A":
            total = 11
    else:
            total=countval

    print ("countval is",countval)
    print ("countval is",total)

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

Я знаю, что есть способы получше, которые я пока не совсем понимаю (например, dicts et c) Но я бы хотел завершить его вот так, так как я так долго боролся с этим!

1 Ответ

1 голос
/ 09 мая 2020

Обратите внимание, что в двух других ветках оператора if вы забыли + и, таким образом, вместо добавления к итоговой сумме (+=) вы перезаписываете значение (=).

Предполагая, что PlayersHand - повторяемый объект (т.е. список) строк, ваш код должен выглядеть примерно так:

total = 0

for i in PlayersHand:
    countval = i[:2] # up to two characters

    if countval in 'JKQ':
        total += 10
    elif countval == 'A':
        total += 11
    else:
        total += int(countval) # cast a string to a number 
...