#python #set #python-3.7
#python #установить #python-3.7
Вопрос:
Я новичок здесь, поэтому прошу прощения, если это не очень хороший способ задать вопрос…
Это мой код:
import random
i = 0
#the numbers of the cards
numbers = ["A","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
#the suits of decks
suits = ["Spades","Hearts","Clubs","Diamonds"]
#empty list
used = []
#Generate random Number and Suit
while i != 5:
number = random.choice(numbers)
suit = random.choice(suits)
print (number " of " suit)
used.append(number " of " suit)
i = 1
чего я пытаюсь добиться, так это того, чтобы код генерировал серию из 5 карточек (без дубликатов), а затем печатал их…
Но я не знаю, как избавиться от дубликатов (и повторить код)
в настоящее время я получаю следующее:
Король пик Король пик Дама червей A треф 6 червей [‘Король пик’, ‘Король пик’, ‘Дама червей’, ‘A треф’, ‘6 червей’]
Заранее спасибо!
Комментарии:
1. Вместо того, чтобы пытаться генерировать случайные карты, обычно лучше перетасовать колоду.
2. да, но моя домашняя работа по CS такова…
Ответ №1:
Чтобы избавиться от дублирующих карточек, попробуйте добавить строку следующим образом:
# Generate random Number and Suit
while i != 5:
number = random.choice(numbers)
numbers.remove(number) ###
suit = random.choice(suits)
print(number " of " suit)
used.append(number " of " suit)
i = 1
Комментарии:
1. Если вы удалите номер, вы не сможете получить тот же номер из другого набора.
Ответ №2:
Попробуйте это:
import itertools
import random
numbers = ["A","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
#the suits of decks
suits = ["Spades","Hearts","Clubs","Diamonds"]
deck=list(itertools.product(numbers,suits))
random.shuffle(deck)
for i in range(5):
print( deck[i][0],'of' ,deck[i][1])
Комментарии:
1. После четырех карт масти заканчиваются.
2. @Shadowcodder Спасибо, но я хочу знать, что именно вы поставили, чтобы удалить дубликат? (что привело к удалению дубликата?)
3. Я ничего не делал для удаления дубликатов, строка
deck= something
создает все возможные комбинации в повторяющемся типе данных. Я просто печатаю первые пять ее значений после их перетасовки.4. @Shadowcodder Есть ли какой-нибудь способ напечатать, например, следующие 5 карт ПОСЛЕ первого раза (скажем, я должен был повторить это), мой код в настоящее
card = 0 print(deck[i][card 1], deck[i][card]) card = 5
время Так работает или это как-то неправильно?5. @s11010 Deck — это список кортежей, поэтому вы можете делать с ним все, что угодно, как вы делаете со списком. Вы можете запустить для этого цикл for .
for i in range(5,10): print(deck[i][0],deck[i][1])
. То, как вы пытаетесь это сделать, неверно.