Здравствуйте! как можно удалить не нужный объект списка all_card, но при этом дальше вызывать из того списка значения для игры в покер
def card_deck(x):
num = x
deck_card = {}
text = "" # название мастей # сделать нужно вложенные словарь {масть: цифра}
if 1 <= x <= 13:
text = "черви"
elif 14 <= x <= 26:
num = x - 13
text = "буби" # нужно сделать в функцииб в словаре цифру не превышающую 13, чтобы в будущем легче оформлять игру
elif 27 <= x <= 39:
text = "крести"
num = x - 26
else:
text = "пики"
num = x - 39
deck_card[text]= num
"""if num == 1:
deck_card[text] = "Туз"
if num == 11:
deck_card[text] = "Валет"
if num == 12:
deck_card[text] = "Дама"
if num == 13:
deck_card[text] = "Король"
"""
return deck_card
#[[{}, {}], ...]
#словарь с числами и строками, которые будут обозначать название карты
all_card = [{"черви": 1}, {"черви": 2}, {"черви": 3}, {"черви": 4}, {"черви": 5}, {"черви": 6}, {"черви": 8}, {"черви": 9}, {"черви": 10}, {"черви": 11}, {"черви": 1}, {"черви": 12}, {"черви": 13},
{"буби": 1}, {"буби": 2}, {"буби": 3}, {"буби": 4}, {"буби": 5}, {"буби": 6}, {"буби": 7}, {"буби": 8}, {"буби": 9}, {"буби": 10}, {"буби": 11}, {"буби": 12}, {"буби": 13},
{"крести": 1}, {"крести": 2}, {"крести": 3}, {"крести": 4}, {"крести": 5}, {"крести": 6}, {"крести": 7}, {"крести": 8}, {"крести": 9}, {"крести": 10}, {"крести": 11}, {"крести": 12}, {"крести": 13},
{"пики": 1}, {"пики": 2}, {"пики": 3}, {"пики": 4}, {"пики": 5}, {"пики": 6}, {"пики": 7}, {"пики": 8}, {"пики": 9}, {"пики": 10}, {"пики": 11}, {"пики": 12}, {"пики": 13}]
total = 0
for _ in range(count_players):
arr = []
for _ in range(2):
random_card = card_deck(randint(1, 52 - total))
arr.append(random_card)
total += 1
del all_card[all_card.index(random_card)]
card_players.append(arr)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Удалять элементы из списка в цикле - обычно непродуктивная идея. Если задача заключается в том, чтобы раздать все карты из колоды n-ному количеству игроков, то лучше сначала перемешать список, потом срезами раздать нужное кол-во карт каждому. В последнем элементе списка останется (или не останется, если кол-во карт делится без остатка на кол-во игроков) некое кол-во карт. Можно раздать не все карты, а каждому по m карт. Неплохо бы уточнить задачу.
import random
all_card = [{"черви": 1}, {"черви": 2}, {"черви": 3}, {"черви": 4}, {"черви": 5}, {"черви": 6}, {"черви": 8}, {"черви": 9}, {"черви": 10}, {"черви": 11}, {"черви": 1}, {"черви": 12}, {"черви": 13},
{"буби": 1}, {"буби": 2}, {"буби": 3}, {"буби": 4}, {"буби": 5}, {"буби": 6}, {"буби": 7}, {"буби": 8}, {"буби": 9}, {"буби": 10}, {"буби": 11}, {"буби": 12}, {"буби": 13},
{"крести": 1}, {"крести": 2}, {"крести": 3}, {"крести": 4}, {"крести": 5}, {"крести": 6}, {"крести": 7}, {"крести": 8}, {"крести": 9}, {"крести": 10}, {"крести": 11}, {"крести": 12},
{"крести": 13},
{"пики": 1}, {"пики": 2}, {"пики": 3}, {"пики": 4}, {"пики": 5}, {"пики": 6}, {"пики": 7}, {"пики": 8}, {"пики": 9}, {"пики": 10}, {"пики": 11}, {"пики": 12}, {"пики": 13}]
count_players, card_players = 7, []
cards_for_one = len(all_card) // count_players # или указать число карт, раздаваемое каждому игроку, например, 5
random.shuffle(all_card)
for i in range(0, len(all_card), cards_for_one):
card_players.append(all_card[i:i + cards_for_one])
print(*card_players, sep='\n')
[{'пики': 7}, {'крести': 9}, {'пики': 5}, {'крести': 7}, {'крести': 2}, {'пики': 3}, {'крести': 6}]
[{'черви': 10}, {'крести': 1}, {'пики': 10}, {'пики': 4}, {'пики': 13}, {'пики': 12}, {'пики': 1}]
[{'черви': 8}, {'буби': 3}, {'крести': 11}, {'черви': 2}, {'буби': 2}, {'черви': 1}, {'пики': 11}]
[{'крести': 13}, {'буби': 4}, {'черви': 3}, {'черви': 9}, {'буби': 12}, {'пики': 2}, {'буби': 5}]
[{'черви': 4}, {'крести': 12}, {'крести': 10}, {'черви': 6}, {'пики': 9}, {'пики': 6}, {'черви': 11}]
[{'крести': 5}, {'буби': 9}, {'крести': 4}, {'крести': 8}, {'буби': 7}, {'буби': 6}, {'крести': 3}]
[{'буби': 13}, {'буби': 11}, {'буби': 8}, {'черви': 12}, {'черви': 5}, {'черви': 1}, {'буби': 10}]
[{'черви': 13}, {'буби': 1}, {'пики': 8}]