Random.choice (seq), обновить список - PullRequest
0 голосов
/ 23 января 2020

Я делаю Блэк Джек, но я очень свободен sh и зеленый в программировании, я составил список из 312 карт, и когда я делаю случайный выбор из 2 карт, как сделать, чтобы обновить список до 312 карт - 2 выбранные карты?

cards=["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2", "3", "4", "5", 
"6", "7", "8", "9", (......etc........>>>>>)", "K"]
print("Available cards",(len(cards)))
play=random.choice(cards)
play1=random.choice(cards)
start=input()
if start=="play":
    print((play),(play1))

Может быть, можно каким-то образом расставить как карты = cards-play-play1?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Например, вы можете использовать random.shuffle, а затем распаковать в play, play1 и cards переменные:

import random

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

print("Available cards", len(cards))

random.shuffle(cards)
play, play1, dealer, *cards = cards

start=input()

if start == "play":
    print('My cards:', play, play1)
    print('Dealer:', dealer)
    print("Available cards", len(cards))

Печать (например):

Available cards 23
play
My cards: A 7
Dealer: 10
Available cards 20
0 голосов
/ 23 января 2020

Вы можете просто вставить выбранные карты:

play = cards.pop(random.randrange(len(cards)))
play1 = cards.pop(random.randrange(len(cards)))

РЕДАКТИРОВАТЬ: Вот код, который я использовал, чтобы рассчитать разницу:

import random
from time import time

t = time()
for x in range(1000000):
    cards = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] * 24
    random.shuffle(cards)
    play, play1, dealer, *cards = cards
print(time() - t)


t = time()
for x in range(1000000):
    cards = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"] * 24
    play = cards.pop(random.randrange(len(cards)))
    play1 = cards.pop(random.randrange(len(cards)))
    dealer = cards.pop(random.randrange(len(cards)))
print(time() - t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...