1
resposta

[Projeto] Momento dos Projetos: Questão 10

Eu fiz o projeto dessa maneira, mas gostaria de saber como eu poderia ser mais suscinta no desenvolvimento desse código. Poderia me explicar uma outra forma de execução desse projeto?

print('obs: números decimais não podem ser classificados como ímpar ou par.')
n1 = float(input('Digite um número: ').replace(',','.'))
n2 = float(input('Digite um número: ').replace(',','.'))
oper = input('Qual operação deseja realizar? (soma, subtração, divisão, multiplicação): ').replace('ç','c').replace('ã','a')

# numero decimal n pode ser par ou impar

if oper in 'soma''subtracao''divisao''multiplicacao''subtração''divisão''multiplicação':
    print()
else:
    print('Tente digitar a operação novamente.')
#SOMA
if oper == 'soma':
    result1 = n1 + n2
    print(f'{result1:.1f}')
    if result1 > 0:
        print('positivo')
    elif result1 < 0:
        print('negativo')
    if result1 == int(result1):
        print('inteiro')
        if result1 % 2 == 0:
            print('par')
        else:
            print('ímpar')
    else:
        print('decimal')

#subtração
if oper == 'subtracao':
    result2 = n1 - n2
    print(f'{result2:.1f}')
    if result2 > 0:
        print('positivo')
    elif result2 < 0:
        print('negativo')
    if result2 == int(result2):
        print('inteiro')
        if result2 % 2 == 0:
            print('par')
        else:
            print('ímpar')
    else:
        print('decimal')
#multiplicacao
if oper == 'multiplicacao':
    result3 = n1 * n2
    print(f'{result3:.1f}')
    if result3 > 0:
        print('positivo')
    elif result3 < 0:
        print('negativo')
    if result3 == int(result3):
        print('inteiro')
        if result3 % 2 == 0:
            print('par')
        else:
            print('ímpar')
    else:
        print('decimal')
#divisao
if oper == 'divisao':
    result4 = n1 / n2
    print(f'{result4:.1f}')
    if result4 > 0:
        print('positivo')
    elif result4 < 0:
        print('negativo')
    if result4 == int(result4):
        print('inteiro')
        if result4 % 2 == 0:
            print('par')
        else:
            print('ímpar')
    else:
#         print('decimal')
1 resposta

Ei! Tudo bem, Camila?

Agradeço por aguardar o nosso retorno.

Seu código está funcional e você teve um cuidado excelente com o tratamento de erros (como o .replace() para vírgulas e acentos). Isso mostra uma ótima atenção aos detalhes!

Uma outra forma de fazer, é deixar o código mais enxuto. Repare que a lógica para verificar se o número é par, ímpar, positivo ou negativo é exatamente a mesma para todas as operações. Podemos calcular o resultado primeiro e depois passar esse valor por um único bloco de verificações:

n1 = float(input('Digite um número: ').replace(',','.'))
n2 = float(input('Digite um número: ').replace(',','.'))
oper = input('Qual operação deseja realizar? (soma, subtração, divisão, multiplicação): ').lower()

# 1. Realizamos o cálculo primeiro
if 'soma' in oper: resultado = n1 + n2
elif 'subtra' in oper: resultado = n1 - n2
elif 'multiplic' in oper: resultado = n1 * n2
elif 'divis' in oper: resultado = n1 / n2
else:
    print('Operação inválida.')
    resultado = None

# 2. Se a operação foi válida, passamos pelas verificações uma única vez
if resultado is not None:
    print(f'Resultado: {resultado:.1f}')
    
    # Positivo/Negativo/Neutro
    if resultado > 0: print('Positivo')
    elif resultado < 0: print('Negativo')
    else: print('Neutro')

    # Inteiro/Decimal e Par/Ímpar
    if resultado == int(resultado):
        print('Inteiro')
        tipo_paridade = 'Par' if resultado % 2 == 0 else 'Ímpar'
        print(tipo_paridade)
    else:
        print('Decimal')

No c´ódigo acima temos a centralização da lógica e um bloco para decidir a conta e um para as classificações. O filtro simplificado e um código escalável para caso precise mexer no futuro fique mais fácil.

Espero ter ajudado e continue praticando, qualquer dúvida estaremos por aqui.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!