radeyeye
(Eagle Eye)
June 9, 2022, 8:18am
1
Hello Guys,
Please how can I have the computer print out a random card using an fstring from these two lists?
(2,3,4,5,6,7,8,9,10,J,Q,K,A)
(clubs, diamonds, spades, and hearts)
I have tried to use this code below to test generate a single from 1-10, but with the string inside the loop gets confusing:
#Random.Randint Program
import random
value = random.randint(1,10)
print(value)
Thanks,
Eagle Eye
@radeyeye
No need to use a loop to pick a random card.
Just use randint inside the tuples to get a random element, and combine them with fstring.
from random import randint
cards = (2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A')
card_types = ('clubs', 'diamonds', 'spades', 'hearts')
random_card = f'{cards[randint(0, len(cards) - 1)]} of {card_types[randint(0, len(card_types) - 1)]}'
print(random_card)
Happy coding
Cheers.
1 Like
could use itertools.product
also for this,
import itertools, random
value = random.choice(list(itertools.product((2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', \
'Q', 'K', 'A'), ('clubs', 'diamonds', 'spades', 'hearts'))))
or,
import more_itertools # would have to `pip install more-itertools`
more_itertools.random_product((2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A'),
('clubs', 'diamonds', 'spiders', 'hearts'))
radeyeye
(Eagle Eye)
June 9, 2022, 8:37am
4
Thanks Francesco, that worked.
import random
# Choose a random suit.
suit = random.choice(['clubs', 'diamonds', 'spades', 'hearts'])
# Choose a random card value.
value = random.choice(['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'])
print(value, 'of', suit)
2 Likes
radeyeye
(Eagle Eye)
June 9, 2022, 8:54am
6
Awesome Steven !!! This one has interesting less coding.
rob42
(Rob)
June 9, 2022, 8:57am
7
You’re using random.randint()
incorrectly.
For a the card rank, you need (0, 12)
as there are 13 card ranks 2 – A
For the card suit, you need (0, 3)
as there are four suits.
1 Like
Eagle Eye:
value = random.randint(1,10) cardValue = [2,3,4, ... 10,J,Q,K,A]
Lists indexes are Zero-Based , meaning that the first element in the list is
cardValue[0]
Your random.randint()
range must start from 0, not 1 .
IMPORTANT
Lists have square brackets []
.
When you use parentheses, that is a different data type (a different data object).