Как отсортировать список по алфавиту в обратном порядке, но сначала цифры - PullRequest
0 голосов
/ 04 февраля 2020

Я пишу простую программу для блэкджека так, как я ее кодировал. Мне нужно, чтобы буква «А» была отсортирована до конца списка, поэтому ее нужно перевернуть в алфавитном порядке, а все цифры нужно проверить перед этим

часть кода:

oyuncukart = []
eroskart = []
oyuncuToplam = 0
erosToplam = 0

def Donustur(El,oyuncuTop):
    aTane = El.count("A")
    for kart in El:
        if "2" == kart:
            oyuncuTop += 2
        if "3" == kart:
            oyuncuTop += 3
        if "4" == kart:
            oyuncuTop += 4
        if "5" == kart:
            oyuncuTop += 5
        if "6" == kart:
            oyuncuTop += 6
        if "7" == kart:
            oyuncuTop += 7
        if "8" == kart:
            oyuncuTop += 8
        if "9" == kart:
            oyuncuTop += 9
        if "10" == kart:
            oyuncuTop += 10
        if "J" == kart:
            oyuncuTop += 10
        if "Q" == kart:
            oyuncuTop += 10
        if "K" == kart:
            oyuncuTop += 10
        if "A" == kart and aTane == 1 and oyuncuTop <= 10:
            oyuncuTop += 11
        elif "A" == kart and aTane == 1 and oyuncuTop > 10:
            oyuncuTop += 1
        elif "A" == kart and aTane > 1  and oyuncuTop < 10:
            oyuncuTop += 11
        elif "A" == kart and aTane > 1 and oyuncuTop >= 10:
            oyuncuTop += 1

    return oyuncuTop

kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]


oyuncukart.append(random.choice(kartlar))
oyuncukart.append(random.choice(kartlar))
oyuncukart.sort(reverse=True)

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Вы не хотите сортировать численно или по алфавиту (в обратном порядке или нет); Вы хотите очень особый порядок сортировки 2,3,4,5,6,7,8,9,J,Q,K,A.

. Вы можете применить пользовательский порядок к sort внутри самой команды:

oyuncukart.sort(key=["2","3","4","5","6","7","8","9","10","J","Q","K","A"].index)

, и это может привести к (с большим количеством dr aws чем 2 - но это только порядок sort , так что это не имеет значения) последовательность, такая как:

['2', '10', 'J', 'Q', 'A']
0 голосов
/ 04 февраля 2020

Я бы подошел к этому по-другому, с функцией, которая возвращает значение карты, которую можно использовать в качестве аргумента key для sorted(). Это даст нам следующее:

Код:

face_cards = {'J': 11,
              'Q': 12,
              'K': 13,
              'A': 14}

def card_val(card):
    try:
        return int(card)
    except ValueError:
        return face_cards[card]

kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]

sorted_kartlar = sorted(kartlar, key=card_val)

Использование:

>>> import random
>>> kartlar = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
>>> random.shuffle(kartlar)
>>> kartlar
['6', '4', '10', 'J', '2', 'A', 'K', '8', '3', '5', 'Q', '9', '7']
>>> sorted(kartlar, key=card_val)
['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...