Jogo de Par ou Ímpar

223 views
Skip to first unread message

pedro soares

unread,
Oct 18, 2021, 1:21:42 PM10/18/21
to Python Brasil
Olá. Estou tentando fazer um jogo de par ou impar.

O usuário entra com a escolha se quer ser par ou impar e na sequencia escolhe um numero

Acontece que quando o usuário escolhe impar e numero 5 e o PC escolhe numero 3, a resposta é: "8 é impar. Você ganhou".

Não há erros de sintaxe, mas a lógica obviamente ta errada. Se algm puder ajudar pf kkk

Segue o código

from random import randint

par_ou_impar = str(input('Escolha par ou ímpar... ')).strip()
escolha = par_ou_impar.upper()
numero_player = int(input('Escolha o número de 0 até 5: '))
numero_pc = randint(0, 6)
print(f'Eu ecolhi {numero_pc}')

soma = numero_pc + numero_player
resultado = soma % 2
if escolha == 'PAR' and resultado == 0:
print(f'{soma} é par. Você ganhou!')
elif escolha == 'IMPAR' or escolha == 'ÍMPAR' and resultado != 0:
print(f'{soma} é ímpar. Você ganhou')
else:
print('Você perdeu!')

ACMM

unread,
Oct 18, 2021, 1:35:23 PM10/18/21
to python...@googlegroups.com
Bom, pelo que vi, o programa soma o número escolhido pelo usuário com o número do random e depois divide o resultado dessa soma por 2, então, nesse caso, a lógica é a seguinte:

Número par + Número par = Número par
Número ímpar + Número ímpar = Número par
Número par + Número ímpar = Número ímpar

Sent from my AC&MM Galaxy A70

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/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-brasi...@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-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/a11fc666-bf4d-40c3-819f-b54faa64d9e2n%40googlegroups.com.

Danilo Menezes

unread,
Oct 18, 2021, 1:47:42 PM10/18/21
to python...@googlegroups.com
sua lógica do elif está errada quando se usa o comando 'or' ele precisa cumprir só 1 das condicionais desse jeito independente do valor de resultado todas as vezes que for escolhido IMPAR vai cair nessa situação.

Seria melhor se você fizesse:

if escolha == 'PAR' and resultado == 0:
print(f'{soma} é par. Você ganhou!')
if escolha == 'IMPAR' and resultado != 0:

print(f'{soma} é ímpar. Você ganhou')
else:
print('Você perdeu!')
--

Antonio Ennio de Jesus

unread,
Oct 18, 2021, 2:38:32 PM10/18/21
to python...@googlegroups.com, Danilo Menezes
Para diferenciar um para de um ímpar nas dividir por 2 transformar em inteiro e dividir por 2 e comparar se for igual e par se for diferente é ímpar , lembre de fazer uma regra especial par o número zero


Em seg, 18 18e out 18e 2021 às 14:47, Danilo Menezes
<dmsan...@gmail.com> escreveu:

Thomaz de Oliveira dos Reis

unread,
Oct 18, 2021, 3:27:14 PM10/18/21
to Python Brasil, Danilo Menezes
Basta usar o operador % que retorna o resto de uma divisão:
>>> 1%2
1
>>> 2%2
0
>>> 3%2
1
>>> 4%2
0
>>> 0%2
0

Marcelo Valle

unread,
Oct 19, 2021, 8:13:36 AM10/19/21
to Python Brasil
Tem outro "erro" na sua lógica - e se o usuário digitar `BANANA` ao invés de `PAR` ou `IMPAR`?

Uma forma fácil de você simplificar a lógica no seu programa é usando a mesma representação de par e de ímpar para escolha e para resultado. 
Faça com que escolha seja `0` se o usuário digitou `PAR`, `1` se o usuário digitou `IMPAR` e no if, você só precisará verificar se `escolha == resultado`. 
Você idealmente deveria lançar uma exceção se o usuário não digitar algo válido. 

[]s

Reply all
Reply to author
Forward
0 new messages