Неподдерживаемые типы операндов для -: 'str' и 'int' при использовании списка целых чисел

def run_counter(card_list, num_cards):
    hand = functions1.hand_sample(card_list, num_cards)
    hand1 = functions1.hand_shuffle(card_list, num_cards)
    srt_hand = sorted(hand)
    srt_hand1 = sorted(hand1)
    prop_hand = functions1.proper_hand(srt_hand)
    prop_hand1 = functions1.proper_hand(srt_hand1)
    run1 = 0
    i = 0
    for count in range(len(srt_hand)-1):
        if srt_hand[i] == srt_hand[i+1] - 1:
            run1 += 1
    run2 = 0
    i = 0
    for count in range(len(srt_hand1)-1):
        if srt_hand1[i] == srt_hand1[i+1] - 1:
            run2 += 1
    return run1+1, run2+1, prop_hand, prop_hand1

У меня есть рука карт, которую я генерирую, и храню в отсортированном списке 'srt_hand' и 'srt_hand1'. Я сделал функцию, которая должна посчитать длину пробежек в руке. Я иду, чтобы проверить это, но он продолжает говорить, что 'if srt_hand[i] == srt_hand[i+1] - 1:' является неподдерживаемым типом операнда. Это почему? Это не имеет никакого смысла, так как я индексирую список целых чисел...

У меня было это раньше, с той же техникой сортировки, и она работала (за исключением того, что она остановилась после первого запуска):

run1 = 0
i = 0
while i < len(srt_hand)-1 and run1 < 2:
    while i < len(srt_hand)-1 and srt_hand[i] == srt_hand[i+1] - 1:
        if srt_hand[i] == srt_hand[i+1]:
            i += 1
        run1 += 1
        i += 1
    i += 1
run2 = 0
i = 0
while i < len(srt_hand1)-1 and run2 < 2:
    while i < len(srt_hand1)-1 and srt_hand1[i] == srt_hand1[i+1] - 1:
        if srt_hand[i] == srt_hand[i+1]:
            i += 1
        run2 += 1
        i += 1
    i += 1
return run1+1, run2+1, prop_hand, prop_hand1

1 ответ

sorted Функция возвращает генератор в Python3.3, поэтому вы не можете индексировать его как список, как в srt_hand[i] (что вызовет исключение).

Другие вопросы по тегам