Почему я получаю TypeError в своей функции? - PullRequest
0 голосов
/ 24 апреля 2020

Я написал эту функцию, чтобы "выиграть" руки для игры в блэкджек Python (я знаю, что тузы могут быть 1 или 11, это будущая проблема, которую нужно выяснить). Входные данные представляют собой список кортежей (карт), и ранг может быть 2-10 или A, J, K или Q.

Иногда я получаю ошибку TypeError, которая читает TypeError: unsupported operand type(s) for +: 'int' and 'str' в качестве ссылки до score = score + rank. Я не уверен, почему есть проблема, потому что, если он достигнет этой точки, ранг должен быть int. Кто-нибудь видит проблему?

def analyzeHand(hand):
    score = 0
    for card in hand:
        rank = card[0]
        if (rank == 'A'):
            score = score + 11
        if (rank == 'K' or rank == 'Q' or rank == 'J'):
            score = score + 10
        else:
            score = score + rank
    return score

1 Ответ

1 голос
/ 24 апреля 2020

То, что score = score + rank в последнем другом, вероятно, должно быть

score += int(rank)

, поскольку из контекста rank имеет тип str, предполагается, что "2" .. "9".

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