Jogo Python Blackjack - referenciado antes da tarefa
-
26-12-2019 - |
Pergunta
Então, meu desafio pessoal é fazer um jogo simples de Blackjack em python.Esta é a maneira que eu fiz:
singlePlayerCard = random.choice(availableCards)
singlePlayerCard2 = random.choice(availableCards)
if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
singlePlayerCardValue = singlePlayerCard
if(singlePlayerCard2 == [1,2,3,4,5,6,7,8,9,10]):
singlePlayerCard2Value = singlePlayerCard2
singlePlayerCardValueTotal = singlePlayerCardValue+singlePlayerCard2Value
print ("The total of your card values is %i"%singlePlayerCardValueTotal)
Quando se trata de imprimir o singlePlayerCardValueTotal
isso me diz isso singlePlayerCardValue
ou singlePlayerCard2Value
foi referenciado antes da atribuição.Fiquei um pouco confuso, pois já tive esse problema no passado com outro programa simples que fiz, mas a estrutura é diferente aqui.Além do problema mencionado acima, estava funcionando bem.Além disso, se você tiver tempo, informe-me sobre soluções melhores para algumas áreas, se necessário.
Como sempre, obrigado antecipadamente!:)
Solução
Como você observou em seu comentário, "referenciado antes da atribuição" significa que você mencionou uma variável antes de receber um valor.
Parece que o seu problema é este:
if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
singlePlayerCardValue = singlePlayerCard
Desde o seu singlePlayerCard
nunca é igual a a lista [1,2,3,4,5,6,7,8,9,10]
, você não atribuirá um valor à variável quando ela for um cartão numérico.
O ==
operador não é a maneira de verificar se uma lista contém um valor.Em vez disso, tente isto:
if(singlePlayerCard in [1,2,3,4,5,6,7,8,9,10]):
singlePlayerCardValue = singlePlayerCard