Jogo de "ZERINHO OU UM"

90 views
Skip to first unread message

Nixon Silva

unread,
Apr 25, 2018, 9:18:18 AM4/25/18
to Python Brasil
Olá galera da comunidade.

Eu preciso de uma ajuda, o que acontece, eu fiz um programa em python que faz você escolher entre zero ou um, e o computador escolher por duas pessoas (joao, thiago), a principio se eu jogar zero, e joao um, thiago um, eu ganho, esse é o principio, eu consegui esse resultado, mas caso joao ou thiago ganhe, não consigo o resultado que mostre que eles venceram, analisem o código, e se puderem me ajudar a resolver.

from random import randint
from time import sleep

itens = ('ZERO', 'UM')
joao = randint(0,1)
thiago = randint(0,1)
print('''Suas opções
[ 0 ] ZERO
[ 1 ] UM''')

jogador = int(input('Faça sua jogada: '))

print('ZE')
sleep(1)
print('RI')
sleep(1)
print('NHO')
sleep(1)
print('UM!!!')
sleep(1)

print('=' * 20)
print('Jogador jogou {}'.format(itens[jogador]))
print('João jogou {}'.format(itens[joao]))
print('Thiago jogou {}'.format(itens[thiago]))
print('=' * 20)

#JOGADA DO JOGADOR
if jogador == 0:
if jogador != joao and jogador != thiago:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')
elif jogador == 1:
if jogador != joao and jogador != thiago:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')

#JOGADA DE JOAO
elif joao == 0:
if joao != jogador and joao != thiago:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')
elif joao == 1:
if joao != jogador and joao != thiago:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')

#JOGADA DO THIAGO
elif thiago == 0:
if thiago != joao and thiago != jogador:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')
elif thiago == 1:
if thiago != joao and thiago != jogador:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')

Guilherme Medeiros

unread,
Apr 25, 2018, 12:11:50 PM4/25/18
to python...@googlegroups.com
Amigo Nixon,
boa tarde.

O seu problema com esse exercício é o entendimento do IF-ELIF-ELSE.

Vamos fazer uma revisão rápida aqui.
Depois de ler meu email vc volta a tentar resolver o seu problema.
Provavelmente vc encontrará o erro e tentará uma nova abordagem.


IF, ELIF e ELSE - são mutuamente excludentes.
O que quero dizer com isso?
Que se a CPU ou INTERPRETADOR executar o bloco de uma dessas expressões ele irá automaticamente ignorar o resto.

Dessa forma, podemos tentar definir a partir do seguinte exemplo:

if expressao A: código W
elif expressao B: código X
elif expressao C: código Y
else: código Z

A CPU/INTERPRETADOR irá ler a primeira linha - IF EXPRESSAO A:
Se essa expressao for TRUE, irá realizar o código W.
NEsse caso, como afirmamos que IF-ELIF-ELSE são EXCLUDENTES, o interpretador não olhará mais para as outras condições. Ele simplesmente irá embora.

Agora, se IF EXPRESSAO A for FALSE?
O interpretador não irá realizar o CÓDIGO W, ele seguirá testando a próxima condição.

ELIF EXPRESAO B é igual a TRUE?
Se for, realiza código X e ignora todas as outras expressões.

E assim se segue, até o "caso especial:" que chamamos de ELSE.
ELSE é executado se, e somente se, nenhuma outra condição foi TRUE.
Se todas as condições falharam, então ELSE é executado.



Diante disso, sugiro que vc revise seu código e, com certeza, irá encontrar o problema.

Se novas dúvidas surgirem, conte com a comunidade.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/2f716ad5-e265-42fb-87af-2b9adc336f06%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gabriel Farias

unread,
Apr 25, 2018, 12:45:56 PM4/25/18
to Python Brasil
#jogada joao e #jogada thiago está aninhada ao if do #jogada jogador

inves de elif tente colocar somente if apos cada #jogada

Nixon Silva

unread,
Apr 26, 2018, 7:18:46 AM4/26/18
to Python Brasil
from random import randint
        print('JOGADOR VENCEU!')

else:
print('TENTE DE NOVO!')
if jogador == 1:
if jogador != joao and jogador != thiago:
        print('JOGADOR VENCEU!')

else:
print('TENTE DE NOVO!')

#JOGADA DE JOAO
if joao == 0:
if joao != jogador and joao != thiago:
        print('JOGADOR VENCEU!')

else:
print('TENTE DE NOVO!')
if joao == 1:
if joao != jogador and joao != thiago:
        print('JOGADOR VENCEU!')

else:
print('TENTE DE NOVO!')

#JOGADA DO THIAGO
if thiago == 0:
if thiago != joao and thiago != jogador:
print('JOGADOR VENCEU')
else:
print('TENTE DE NOVO!')
if thiago == 1:
if thiago != joao and thiago != jogador:
        print('JOGADOR VENCEU!')

else:
print('TENTE DE NOVO!')
print('=' * 20)

Valeu Gabriel e Guilherme, agora sim está funcionando.

Edson Silva

unread,
Apr 26, 2018, 8:36:30 AM4/26/18
to Python Brasil

Olá !!
Veja o arranjo que eu fiz, igual ao sugerido pelos colegas. estude o código pois ele é relativamente simples e fundamental para avançar em seus programas.
Observe que minha lógica parti do jogador para depois verificar se houve outro vencedor. Repare também que não consideremos um empate.

#JOGADA DO JOGADOR
if jogador == 0:
    if jogador != joao and jogador != thiago:
        print('JOGADOR VENCEU')
    elif joao != jogador and joao != thiago:
        print('JOÃO VENCEU')
    elif thiago != joao and thiago != jogador:
        print('THIAGO VENCEU')
elif jogador == 1:
    if jogador != joao and jogador != thiago:
        print('JOGADOR VENCEU')
    elif joao != jogador and joao != thiago:
        print('JOÃO VENCEU')
    elif thiago != joao and thiago != jogador:
        print('THIAGO VENCEU')
print(jogador,joao,thiago)


Qualquer dívida posta aqui !

Nixon Silva

unread,
Apr 26, 2018, 8:44:42 AM4/26/18
to Python Brasil
Excelente Edson, era exatamente o que eu queria, condição aninhada.

Obrigado pela ajuda.

Rafael Soares

unread,
Apr 26, 2018, 8:50:46 AM4/26/18
to python...@googlegroups.com

Nixon,

Parabéns por ter resolvido o problema, olhando aqui rapidamente o seu código, consegui simplificar um pouco.

if jogador == joao and joao == thiago:
    print('Empate, jogue novamente!')
elif jogador == joao:
    print('Thiago venceu!')
elif jogador == thiago:
    print('Joao venceu!')
else:
    print('Jogador venceu!')


Espero que ajude.

--
Rafael Soares

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Nixon Silva

unread,
Apr 26, 2018, 8:53:39 AM4/26/18
to Python Brasil
Caraca mano que legal!, ficou super simples agora, show de bola!!!
precisava mesmo de aprender um pouco mais de condição aninhada, ai o Edson ajudou muito, estudando o código dele pude entender.
Mas tu não fica atrás, seu código ficou show, além de funcional, ficou super simples.

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Thomaz de Oliveira dos Reis

unread,
Apr 26, 2018, 9:28:35 AM4/26/18
to python...@googlegroups.com
Daria até para simplificar mais um pouquinho:

if jogador == joao == thiago:

    print('Empate, jogue novamente!')

Já que os 3 tem que ser igual, basta igualar duas vezes, fica mais claro também, já que está dizendo que todo mundo é igual!

Reply all
Reply to author
Forward
0 new messages