1
resposta

03 – ESTRUTURAS CONDICIONAIS

No tópico: 03.12 – DESAFIO: HORA DA PRATICA.

O exercicio 10 ( Um programa deve ser escrito para ler dois números e, em seguida, perguntar à pessoa usuária qual operação ele deseja realizar. O resultado da operação deve incluir informações sobre o número - se é par ou ímpar, positivo ou negativo e inteiro ou decimal.)

Analisando a opinião do do instrutor, quando utilizando os numeros 2 e 10, a instrução final, resultado "par" ou "impar, apresenta resultado "impar".

Entendo que a resposta deveria ser par, pois 2/10 = 0.2;

Aguardo confirmação e instrução.

1 resposta

Olá, Carlos Eduardo. Como vai?

Excelente observação e parabéns pelo olhar clínico ao analisar a resposta do exercício! É muito gratificante ver estudantes que não apenas copiam o código do instrutor, mas testam os cenários e analisam criticamente os resultados obtidos.

Você tocou em um ponto excelente sobre lógica de programação e matemática. Vamos analisar juntos o que está acontecendo por trás desse resultado para esclarecer a sua dúvida.


O X da Questão: O que define um número Par ou Ímpar?

A sua linha de raciocínio faz todo o sentido quando pensamos na divisão clássica: você pegou o resultado $0.2$ e tentou aplicar a lógica da divisão. Porém, no universo da matemática e da computação, a regra estrita para classificar se um número é par ou ímpar possui uma restrição importante: ela só se aplica a números inteiros.

Por definição, um número é considerado par se ele for um número inteiro e o resto da sua divisão por 2 for igual a zero ($0$). Se o resto for diferente de zero, ele é ímpar.

Quando o programa faz a operação com os números $2$ e $10$:

  • Se a operação escolhida foi a divisão ($2 / 10$), o resultado gerado pelo Python é exatamente 0.2.
  • Como $0.2$ é um número decimal (ponto flutuante), ele tecnicamente não se enquadra na classificação tradicional de par ou ímpar.

O comportamento do código no Python

Geralmente, os códigos desse exercício utilizam o operador de resto da divisão (%) para fazer essa checagem. Veja o que acontece se tentarmos aplicar essa lógica no Python com o número decimal $0.2$:

resultado = 0.2

# O Python vai tentar calcular o resto de 0.2 dividido por 2
if resultado % 2 == 0:
    print("Par")
else:
    print("Ímpar")

Ao executar 0.2 % 2, o resultado no Python não é zero, é o próprio 0.2. Como 0.2 != 0, o programa cai automaticamente no bloco do else e exibe a mensagem "Ímpar".

Portanto, o instrutor não errou na digitação da lógica, mas o código acabou gerando uma pequena inconsistência matemática ("alucinação" lógica) por tentar classificar um número decimal como par ou ímpar sem antes validar se ele era inteiro.


Como corrigir e deixar o programa perfeito?

Para o seu programa ficar 100% correto e blindado contra esse tipo de situação, a melhor prática é criar uma estrutura condicional aninhada. O sistema só deve tentar dizer se é par ou ímpar SE o número for inteiro. Caso seja decimal, ele deve pular essa classificação.

Veja um exemplo de como estruturar essa verificação final de forma robusta:

resultado = 2 / 10  # 0.2

# 1. Verificação de Inteiro ou Decimal
if resultado % 1 == 0:
    tipo_num = "inteiro"
    # Só checa par/ímpar se for inteiro!
    if resultado % 2 == 0:
        paridade = "par"
    else:
        paridade = "ímpar"
else:
    tipo_num = "decimal"
    paridade = "não aplicável (números decimais não são pares ou ímpares)"

# 2. Verificação de Positivo ou Negativo
if resultado > 0:
    sinal = "positivo"
elif resultado < 0:
    sinal = "negativo"
else:
    sinal = "neutro (zero)"

# Exibição do resultado final tratado
print(f"O resultado é {resultado}.")
print(f"Ele é um número {tipo_num}, {sinal} e a paridade é: {paridade}.")

Ao rodar esse bloco com os números 2 e 10, a saída será limpa e matematicamente precisa, informando que a paridade não se aplica a números decimais.

Muito obrigado por trazer essa discussão rica para o fórum! Essa percepção sobre o comportamento das variáveis dinâmicas e operadores é o que diferencia um programador iniciante de um profissional focado em qualidade de dados.

Espero que possa ter lhe ajudado!