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!:)

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top