3
respostas

Calculando o IMC

def valida_entrada(entrada: str, nome: str):
    try:
        if float(entrada) and entrada[0] == '-':
            print(f"Erro: O valor de {nome} não pode ser negativo.")
            exit()
    except ValueError:
        print(f"Erro: Insira um valor válido para {nome}.")
        exit()

def calcula_imc(peso: float, altura: float) -> float:
    return peso / (altura ** 2)

def valida_imc(imc: float):
    if imc < 18.5:
        print(f"Abaixo do peso IMC é {imc:.2f}")
    elif 18.5 <= imc < 25:
        print(f"Peso normal IMC é {imc:.2f}")
    else:
        print(f"Acima do peso IMC é {imc:.2f}")

peso: str = input("Digite seu peso (kg): ")
valida_entrada(peso, "peso")

altura: str = input("Digite sua altura (m): ")
valida_entrada(altura, "altura")

imc: float = calcula_imc(float(peso), float(altura))
valida_imc(imc)
3 respostas
def valida_entrada(entrada: str, nome: str):
    try:
        if float(entrada) and entrada[0] == '-':
            print(f"Erro: O valor de {nome} não pode ser negativo.")
            exit()
    except ValueError:
        print(f"Erro: Insira um valor válido para {nome}.")
        exit()

def calcula_imc(peso: float, altura: float) -> float:
    return peso / (altura ** 2)

def valida_imc(imc: float):
    if imc < 18.5:
        print(f"Abaixo do peso IMC é {imc:.2f}")
    elif 18.5 <= imc < 25:
        print(f"Peso normal IMC é {imc:.2f}")
    else:
        print(f"Acima do peso IMC é {imc:.2f}")

peso: str = input("Digite seu peso (kg): ")
valida_entrada(peso, "peso")

altura: str = input("Digite sua altura (m): ")
valida_entrada(altura, "altura")

imc: float = calcula_imc(float(peso), float(altura))
valida_imc(imc)
class CalculadoraIMC:
    def __init__(self, peso: str, altura: str):
        self.peso = self.valida_entrada(peso, "peso")
        self.altura = self.valida_entrada(altura, "altura")
        self.imc = self.calcula_imc()

    def valida_entrada(self, entrada: str, nome: str):
        try:
            if entrada[0] == '-':
                print(f"Erro: O valor de {nome} não pode ser negativo.")
                exit()
            return float(entrada)
        except ValueError:
            print(f"Erro: Insira um valor válido para {nome}.")
            exit()

    def calcula_imc(self) -> float:
        return self.peso / (self.altura ** 2)

    def valida_imc(self):
        if self.imc < 18.5:
            print(f"Abaixo do peso IMC é {self.imc:.2f}")
        elif 18.5 <= self.imc < 25:
            print(f"Peso normal IMC é {self.imc:.2f}")
        else:
            print(f"Acima do peso IMC é {self.imc:.2f}")

peso: str = input("Digite seu peso (kg): ")
altura: str = input("Digite sua altura (m): ")

imc_obj = CalculadoraIMC(peso, altura)
imc_obj.valida_imc()

Olá! Como vai?

Mandou muito bem na resolução da atividade!

Observei que você explorou o uso de orientação a objetos para encapsular a lógica do cálculo de IMC, utilizou muito bem o tratamento de entrada com try/except para garantir dados válidos e ainda compreendeu a importância do uso de métodos para organizar etapas do processo.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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