So currently im working on a black jack game where cards are put in a dictionary and each starting deck has a random card taken from the dictionary but when i execute the code i get a keyerror
code
# Black Jack
import random
from art import logo
print(logo)
cards = {
"ace": [1, 11],
"one": 1,
'two': 2,
'three': 3,
"four": 4,
"Five": 5,
"six": 6,
'seven': 7,
'eight': 8,
'nine': 9,
"king": 10,
"queen": 10,
"jack": 10,
"ten": 10
}
user_deck = []
computer_deck = []
user_deck.append(random.choice(cards))
computer_deck.append(random.choice(cards))
print(f"{computer_deck} \n {user_deck}" )
CodePudding user response:
random.choice(seq) does
Return a random element from the non-empty sequence seq.
and you give it dict which is not sequence, you need first to convert keys of said dict into sequence, for example tuple that is replace
user_deck.append(random.choice(cards))
computer_deck.append(random.choice(cards))
using
user_deck.append(random.choice(tuple(cards.keys())))
computer_deck.append(random.choice(tuple(cards.keys())))
CodePudding user response:
Consider doing it in the following way:
user_deck.append(random.choice(tuple(cards.keys())))
computer_deck.append(random.choice(tuple(cards.keys())))
The problem is random.choice() accepts seq which has to support __getitem__() and __len__() methods, it should be list or tuple, not set or dict which you passed.
