Медленно работая на симулятор блэкджека с кли. Я только начал с него, поэтому я не слишком глубоко в него, но я уже получаю нечетные результаты: иногда, когда я запускаю код ниже, он дает мне нормальный вывод (например, 4 of Clubs, 9 of Spades
), но иногда он дает мне вывод, например c of Diamonds
или i of Clubs
. Поскольку у меня нет ничего, установленного в c
или i
, определенных в функции Card
, я не могу понять, почему это даст мне такой вид вывода. Кто-нибудь может мне это объяснить?Получение нечетного вывода от блэкджека sim
import random
def Card():
cardValue = random.randint(2,10)
suits = ["Clubs", "Diamonds", "Hearts", "Spades"]
special = ['Ace', 'King', 'Queen', 'Jack']
special = random.choice(special)
suit = random.choice(suits)
special = random.choice(special)
randO = random.randint(1,52)
if randO > 16:
print(cardValue,'of',suit)
else:
if special == 'Ace':
cardValue = 11
print(special,'of',suit)
else:
cardValue = 10
print(special,'of',suit)
Card()
Card()
Это нехороший способ провести случайную выборку. Он не корректирует карты, которые уже удалены пчелами из колоды. Вы должны сделать колоду из 52 карточек, возможно (ранг, костюм), а также извлечь (и удалить) случайные карточки из колоды. В противном случае вы рано или поздно окажетесь с Ace of Spades в двух разных руках или что-то в этом роде. – saulspatz
Спасибо за отзыв, очень оцененный - я действительно столкнулся с проблемой Ace of Spades * 2. – n1c9
Вы также можете random.shuffle в списке, возвращаемом диапазоном (1, 53), а затем берете карты в порядке, так как колода «перетасована». –