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

[Sugestão] 07 - Calculando o IMC

Anna Júlia está criando um sistema para calcular o Índice de Massa Corporal (IMC) e fornecer recomendações básicas. O programa deve receber o peso e a altura de uma pessoa e exibir o valor do IMC, além de indicar se está abaixo do peso, com peso normal ou acima do peso. Crie um programa que receba o peso (em kg) e a altura (em metros) e calcule o IMC usando a fórmula: IMC = peso / (altura ** 2) Depois, exiba o valor do IMC e uma mensagem indicando se está abaixo do peso (IMC < 18.5), peso normal (18.5 <= IMC < 25) ou acima do peso (IMC >= 25).

def imc (peso, altura):
    massacorporal = peso / (altura ** 2)
    if massacorporal < 18.5:
        print('Abaixo do peso')
    elif massacorporal >= 18.5 and massacorporal < 25:
        print('Peso normal')
    else:
        print('Sobrepeso')
    return massacorporal

peso = float(input('Digite o peso em kg: '))
altura = float(input('Digite a altura em metros: '))
resultado = imc(peso, altura)
print(f'O seu IMC é: {resultado:.2f}')
1 resposta
solução!

Olá, Malderson. Como vai?

Excelente contribuição! É muito bom ver a aplicação de funções para organizar o código. Como você é consultor de TI, sabe que encapsular a lógica em funções como a def imc() facilita muito a reutilização do código em sistemas maiores.

Seu uso da formatação de strings com :.2f para limitar as casas decimais também foi uma ótima escolha, pois torna a leitura do resultado muito mais amigável para o usuário final.

Para agregar valor ao seu aprendizado, deixo duas sugestões técnicas que podem tornar seu código ainda mais robusto e elegante:

  • Simplificação das Condicionais: Em Python, podemos simplificar a comparação de intervalos. No seu elif, em vez de usar o and, você pode escrever de forma mais matemática e direta:
elif 18.5 <= massacorporal < 25:
    print('Peso normal')
  • Tratamento de Exceções: Como o programa depende de entradas do usuário, um erro comum é a pessoa digitar a altura com vírgula (ex: 1,75) em vez de ponto, ou até mesmo digitar zero (o que causaria um erro de divisão por zero). Uma boa prática é envolver o cálculo em um bloco try/except:
try:
    peso = float(input('Digite o peso em kg: '))
    altura = float(input('Digite a altura em metros: '))
    resultado = imc(peso, altura)
    print(f'O seu IMC é: {resultado:.2f}')
except ValueError:
    print('Erro: Por favor, insira apenas números utilizando ponto como separador decimal.')
except ZeroDivisionError:
    print('Erro: A altura deve ser maior que zero.')

Essa camada extra de proteção evita que o programa "quebre" bruscamente e oferece um feedback claro para o usuário. No mais, sua lógica está correta e muito bem estruturada!

Espero que possa ter lhe ajudado!