Я бы предложил итого + = 1, тузы + = 1, а затем в конце добавьте 10, если необходимо для каждого туза.
Несколько указателей на вопрос: не размещайте функцию раздачи, как это совершенно не имеет значения. Опубликовать ввод, вывод и ожидаемый вывод
def sumHand(hand):
...
hand = ['A', 'K', 'Q']
expected 21
actual 31
Вот мое предлагаемое исправление (минимальное изменение для этой конкретной проблемы)
def sumHand(hand):
total = 0
aces = 0
for card in hand:
card = str(card)
if card == "J" or card == "Q" or card== "K":
total+=10
continue
elif card == "2" or card == "3" or card == "4" or card == "5" or card == "6" or card == "7" or card == "8" or card == "9" or card == "10":
total += int(card)
elif card == "A":
total += 1
aces += 1
for _ in range(aces):
if total <= 11:
total += 10
return total
Я изменил «список» на «рука», потому что это скрывая имя встроенного класса, но в остальном не связывайтесь с ним. Я бы предложил добавить функцию (проверенную модулем), чтобы получить значение карты. Может быть, дикт, который служит в качестве карты имя-значение. Вы можете упростить некоторые условия с помощью оператора «in». Странно, что обрабатывают int, преобразовывая их в строку, а затем обратно в int. Но ничего из этого не имеет прямого отношения к вопросу подсчета тузов.