Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Projeto exercício 10

Olá

Na minha resolução do exercício 10 estou tendo dificuldades em fazer a validação correta quando o número é par. Caso eu coloque qualquer número decimal, o resto da divisão por 2 será diferente de 0, levando o programa a reconhecer que o número é ímpar. Segue o código(ta um pouco grande kkk):

n1 = float(input('Digite o primeiro número: '))
n2 = float(input('Digite o segundo número: '))

op = int(input('''1- somar
               \n2- subtrair
               \n3- multiplicar
               \n4- dividir '''
               ))

print('-='*30)

if op == 1:
    resultado = n1 + n2
    print(f'A soma de {n1} + {n2} é igua a {resultado}')
    if resultado % 2 == 0:
        print('O número é par.')
    else:
        print('O número é ímpar.')
    if resultado > 0:
        print('O número é positivo')
    else:
        print('O número é negativo.')
    if resultado % 1 == 0:
        print('O número é inteiro.')
    else:
        print('O número é decimal')

elif op == 2:
    resultado = n1 - n2
    print(f'A diferença entre {n1} - {n2} é igua a {resultado}')
    if resultado % 2 == 0:
        print('O número é par.')
    else:
        print('O número é ímpar.')
    if resultado > 0:
        print('O número é positivo')
    else:
        print('O número é negativo.')
    if resultado % 1 == 0:
        print('O número é inteiro.')
    else:
        print('O número é decimal')

elif op == 3:
    resultado = n1 * n2    
    print(f'O produto de {n1} x {n2} é igua a {resultado}')
    if resultado % 2 == 0:
        print('O número é par.')
    else:
        print('O número é ímpar.')
    if resultado > 0:
        print('O número é positivo')
    else:
        print('O número é negativo.')
    if resultado % 1 == 0:
        print('O número é inteiro.')
    else:
        print('O número é decimal')
    
elif op == 4:
    resultado = n1 / n2
    print(f'O quociente entre {n1} / {n2} é igual a {resultado :.2f}')
    if resultado % 2 == 0:
        print('O número é par.')
    else:
        print('O número é ímpar.')
    if resultado > 0:
        print('O número é positivo')
    else:
        print('O número é negativo.')
    if resultado % 1 == 0:
        print('O número é inteiro.')
    else:
        print('O número é decimal')
    
else:
    print('OPERAÇÃO INVÁLIDA')
1 resposta
solução!

Oii Luís, como você está?

Como você disse, o problema acontece, pois, como o operador módulo (%) retorna o resto da divisão de dois números, o resto da divisão por 2 será sempre diferente de zero.

Uma possível solução é verificar se o número é inteiro, antes de fazer a verificação se é par ou ímpar. Afinal, números decimais não se encaixam na definição de paridade - se o número for decimal, você pode pular essa verificação.

Ficaria mais ou menos assim:

if resultado % 1 == 0:  # Verifica se o número é inteiro
    print('O número é inteiro.')
    if resultado % 2 == 0:  # Se for inteiro, verifica se é par
        print('O número é par.')
    else:
        print('O número é ímpar.')
else:
    print('O número é decimal')

Adapte ao seu código para ficar com seu jeitinho.

Espero ter ajudado, Luís.

Abração!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!