🔴 Problema
Desenvolva um algoritmo em Python para determinar o Índice de Massa Corporal (IMC) de uma pessoa.
Para fazer o cálculo do IMC basta dividir seu peso em quilogramas (Kg) pela altura ao quadrado (em metros).
O número que será gerado deve ser comparado aos valores da tabela IMC, dada abaixo, para definir se você está abaixo, em seu peso ideal ou acima do peso.
IMC | Classificação |
< 16 | Magreza grave |
16 a < 17 | Magreza moderada |
17 a < 18,5 | Magreza leve |
18,5 a < 25 | Saudável |
25 a < 30 | Sobrepeso |
30 a < 35 | Obesidade Grau I |
35 a < 40 | Obesidade Grau II (severa) |
≥ 40 | Obesidade Grau III (mórbida) |
—
🔴 Script Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# Cálculo do Índice de Massa Corporal import os altura = float(input("Digite sua altura em metros: ")) peso = float(input("Digite seu peso em Kg: ")) imc = peso / altura**2 print("Seu IMC é: %.4f" % imc) if imc < 16: print("Magreza grave") elif imc < 17: print("Magreza moderada") elif imc < 18.5: print("Magreza leve") elif imc < 25: print("Saudável") elif imc < 30: print("Sobrepeso") elif imc < 35: print("Obesidade Grau I") elif imc < 40: print("Obesidade Grau II (severa)") else: print("Obesidade Grau III (mórbida)") os.system("pause") |
—
🔴 Saída
🔴 Utilizando a biblioteca “Tk interface” (tkinter)
Caso você queira utilizar uma interface gráfica, um código possível seria:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
from tkinter import * def calcular_imc(): altura = float(entry_altura.get()) peso = float(entry_peso.get()) imc = peso / altura**2 label_resultado['text'] = "Seu IMC é: %.4f" % imc if imc < 16: label_classificacao['text'] = "Magreza grave" elif imc < 17: label_classificacao['text'] = "Magreza moderada" elif imc < 18.5: label_classificacao['text'] = "Magreza leve" elif imc < 25: label_classificacao['text'] = "Saudável" elif imc < 30: label_classificacao['text'] = "Sobrepeso" elif imc < 35: label_classificacao['text'] = "Obesidade Grau I" elif imc < 40: label_classificacao['text'] = "Obesidade Grau II (severa)" else: label_classificacao['text'] = "Obesidade Grau III (mórbida)" root = Tk() root.title("Calculador de IMC") frame_entrada = Frame(root) frame_entrada.pack() label_altura = Label(frame_entrada, text="Altura (m):") label_altura.grid(row=0, column=0) entry_altura = Entry(frame_entrada) entry_altura.grid(row=0, column=1) label_peso = Label(frame_entrada, text="Peso (Kg):") label_peso.grid(row=1, column=0) entry_peso = Entry(frame_entrada) entry_peso.grid(row=1, column=1) frame_saida = Frame(root) frame_saida.pack() label_resultado = Label(frame_saida, text="") label_resultado.pack() label_classificacao = Label(frame_saida, text="") label_classificacao.pack() botao_calcular = Button(root, text="Calcular", command=calcular_imc) botao_calcular.pack() root.mainloop() |
—
🔴 O que é o Índice de Massa Corporal (IMC)?
O Índice de Massa Corporal (IMC) é uma medida utilizada para avaliar o nível de gordura corporal de uma pessoa. Ele é calculado dividindo o peso (em quilogramas) pelo quadrado da altura (em metros).
Os valores de referência para o IMC são:
IMC | Classificação |
< 16 | Magreza grave |
16 a < 17 | Magreza moderada |
17 a < 18,5 | Magreza leve |
18,5 a < 25 | Saudável |
25 a < 30 | Sobrepeso |
30 a < 35 | Obesidade Grau I |
35 a < 40 | Obesidade Grau II (severa) |
≥ 40 | Obesidade Grau III (mórbida) |
Por exemplo, uma pessoa que pesa 70 kg e tem 1,75 m de altura teria um IMC de 70 / (1,75 x 1,75) = 22,86, estaria dentro do intervalo de peso saudável.
O Índice de Massa Corporal (IMC) é considerado uma medida de rastreamento útil para avaliar o risco de doenças relacionadas ao peso, pois é fácil de ser calculado e não requer equipamentos sofisticados.
Pessoas com IMC elevado podem ter maior risco de doenças crônicas, como diabetes tipo 2, hipertensão, doenças cardíacas e derrames cerebrais. Além disso, a obesidade está associada a um maior risco de alguns tipos de câncer.
No entanto, é importante lembrar que o IMC não é uma medida precisa da gordura corporal e pode não ser aplicável a todas as pessoas, como atletas e idosos. Por isso, é importante que o IMC seja avaliado em conjunto com outros fatores de risco de doenças, como histórico familiar, níveis de atividade física, hábitos alimentares e resultados de exames laboratoriais.
🔴 Versões desse programa em outras linguagens
Portugol (VisuAlg)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
algoritmo "IMC" var altura, peso, imc: real inicio leia(altura) leia(peso) imc <- peso / (altura * altura) escreva("Seu IMC é: ", imc) se imc < 16 entao escreva("Magreza grave") senao se imc < 17 entao escreva("Magreza moderada") senao se imc < 18.5 entao escreva("Magreza leve") senao se imc < 25 entao escreva("Saudável") senao se imc < 30 entao escreva("Sobrepeso") senao se imc < 35 entao escreva("Obesidade Grau I") senao se imc < 40 entao escreva("Obesidade Grau II (severa)") senao escreva("Obesidade Grau III (mórbida)") fimse fimse fimse fimse fimse fimse fimse fimalgoritmo |
Linguagem C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <stdio.h> int main() { double altura, peso, imc; printf("Digite sua altura em metros: "); scanf("%lf", &altura); printf("Digite seu peso em Kg: "); scanf("%lf", &peso); imc = peso / (altura * altura); printf("Seu IMC é: %.4lf\n", imc); if (imc < 16) { printf("Magreza grave\n"); } else if (imc < 17) { printf("Magreza moderada\n"); } else if (imc < 18.5) { printf("Magreza leve\n"); } else if (imc < 25) { printf("Saudável\n"); } else if (imc < 30) { printf("Sobrepeso\n"); } else if (imc < 35) { printf("Obesidade Grau I\n"); } else if (imc < 40) { printf("Obesidade Grau II (severa)\n"); } else { printf("Obesidade Grau III (mórbida)\n"); } return 0; } |
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import java.util.Scanner; public class IMC { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double altura, peso, imc; System.out.print("Digite sua altura em metros: "); altura = sc.nextDouble(); System.out.print("Digite seu peso em Kg: "); peso = sc.nextDouble(); imc = peso / (altura * altura); System.out.printf("Seu IMC é: %.4f\n", imc); if (imc < 16) { System.out.println("Magreza grave"); } else if (imc < 17) { System.out.println("Magreza moderada"); } else if (imc < 18.5) { System.out.println("Magreza leve"); } else if (imc < 25) { System.out.println("Saudável"); } else if (imc < 30) { System.out.println("Sobrepeso"); } else if (imc < 35) { System.out.println("Obesidade Grau I"); } else if (imc < 40) { System.out.println("Obesidade Grau II (severa)"); } else { System.out.println("Obesidade Grau III (mórbida)"); } } } |
Dart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import 'dart:io'; void main() { stdout.write('Digite sua altura em metros: '); var altura = double.parse(stdin.readLineSync()); stdout.write('Digite seu peso em Kg: '); var peso = double.parse(stdin.readLineSync()); var imc = peso / (altura * altura); print('Seu IMC é: ${imc.toStringAsFixed(4)}'); if (imc < 16) { print('Magreza grave'); } else if (imc < 17) { print('Magreza moderada'); } else if (imc < 18.5) { print('Magreza leve'); } else if (imc < 25) { print('Saudável'); } else if (imc < 30) { print('Sobrepeso'); } else if (imc < 35) { print('Obesidade Grau I'); } else if (imc < 40) { print('Obesidade Grau II (severa)'); } else { print('Obesidade Grau III (mórbida)'); } } |
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
let altura = parseFloat(prompt("Digite sua altura em metros: ")); let peso = parseFloat(prompt("Digite seu peso em Kg: ")); let imc = peso / (altura * altura); console.log("Seu IMC é: " + imc.toFixed(4)); if (imc < 16) { console.log("Magreza grave"); } else if (imc < 17) { console.log("Magreza moderada"); } else if (imc < 18.5) { console.log("Magreza leve"); } else if (imc < 25) { console.log("Saudável"); } else if (imc < 30) { console.log("Sobrepeso"); } else if (imc < 35) { console.log("Obesidade Grau I"); } else if (imc < 40) { console.log("Obesidade Grau II (severa)"); } else { console.log("Obesidade Grau III (mórbida)"); } |
—
📚 Livros
-
- Aprendendo Algoritmo com Visualg
Rafael Soares de Almeida
<https://amzn.to/3DeiwxN>
- Aprendendo Algoritmo com Visualg
-
- Introdução à linguagem Python
José Augusto N. G. Manzano
<https://amzn.to/3tS3A2Y>
- Introdução à linguagem Python
-
- Algoritmos: Lógica para Desenvolvimento de Programação de Computadores
José Augusto N. G. Manzano e Jayr Figueiredo de Oliveira
<https://amzn.to/43sGKic>
- Algoritmos: Lógica para Desenvolvimento de Programação de Computadores
—
Deixe suas dúvidas e sugestões logo abaixo.
*Atualizado em 27 de julho de 2023
me ensina
Ensinar o que especificamente?
escrevi o programa como testar se esta tudo certo:
? onde coloco os valores? to perdido comecei hoje exigencia da afaculdade kkk
@jose texas, há algumas ferramentas online. Faça um teste nesta aqui: https://www.onlinegdb.com/
eu fiz o meu assim(Lembrando que eu to começando agr e nem aprende o if ,else,elif e os crlh
print(‘Calculo do IMC’)
peso = float(input(‘Digite seu peso:’))
altura =float(input(‘Digite sua altura:’))
imc = peso / (altura**2)
if imc == (18.5 and 25):
print(f'{imc:.2f} Você esta no peso ideal’)
if imc 18.5 and 25:
print(f'{imc:.2f} Você está acima do peso’)
exit()
Peso = float(input(‘Digite o peso: ‘))
Altura = float(input(‘Digite a altura: ‘))
Imc = Peso / (Altura ** 2)
if Imc = 18.5 and Imc = 25 and Imc <= 29.99:
print('Voce esta acima do peso')
else:
print('Voce esta obesa')
#Fiz o meu assim:
print(‘\033[33m=-=\033[m’ * 8)
print(‘ \033[1:36m CAUCULADORA DE IMC\033[1:36m’)
print(‘\033[33m=-=\033[m’ * 8)
from time import sleep
nome = input(‘Qual o seu primeiro nome?’)
peso = float(input(‘Olá {}, digite seu peso nesse formato:(em Kg, Ex: 68.9):’.format(nome)))
altura = float(input(‘Agora sua digite sua Altura (em m, Ex: 1.80): ‘))
print(‘Só um momento enquanto faço o cálculo…’)
sleep(2)
media = peso / altura**2
if media <= 18.5:
print('Seu \033[1:36mIMC é {:.1f}\033[m, e você está abaixo do peso ideal.'.format(media))
elif media 18.5:
print(‘Seu \033[1:36mIMC é {:.1f}\033[m, e você está com o peso Ideal.’.format(media))
elif media 25.0:
print(‘Seu \033[1:36mIMC é {:.1f}\033[m, e você está com sobrepeso.’.format(media))
elif media 30.0:
print(‘Seu \033[1:36mIMC é {:.1f}\033[m, e você está Obeso.’.format(media))
else:
print(‘Seu \033[1:36mIMC é {:.1f}\033[m, e você está com obesidade mórbida.’.format(media))
“””Calculadora de IMC”””
height = float(input(“Qual a sua altura? “))
weight = float(input(“Qual é o seu peso? “))
media = (weight / (height * 2))
if media = 18.6 and media = 25.0 and media = 30.0 and media = 35.0 and media <= 39.9:
print('Você está com obesidade grau II (severa)')
else:
print('Você está com obesidade grau III (mórbida)')
Não seria assim?
print(‘Vamos calcular seu IMC’)
nome = input(‘Digite o seu nome: ‘)
peso = float(input(‘Olá, {}, agora digite seu peso (em Kg, Ex: 68.9): ‘ .format(nome)))
altura = float(input(‘Digite sua altura (em m, Ex: 1.80): ‘))
media = peso / (altura * altura)
print(‘Seu IMC é: {:.1f}’.format(media))
if media <= 18.5 and media <=25.0 and media <=30.0 and media <=35.0 and media <=39.9:
print('Você está com obesidade grau II (severa)')
else:
print('Você está com obesidade grau III (mórbida)')
Esta meio bugado neste comentário mas eu fiz o mesmo exercício que você colocou e subi no meu GitHub.
estruturas-lógicas-e-condicionais/41.Calculadora de IMC.py
//Acho que é isso
print(“Vamos calcular seu IMC?”)
nome = input(“Digite o seu nome: “)
peso = float(input(“Olá, {}, agora digite seu peso (em Kg, Ex: 68.9): ” .format(nome)))
altura = float(input(“Digite sua altura (em m, Ex: 1.80): “))
media = peso / (altura * altura)
print(‘Seu IMC é: {:.1f}’.format(media))
if media = 18.5 and media =25.0 and media=30.0 and media=35.0 and media<=39.9:
print("Obesidade Grau 2")
else:
print("Obesidade grau 3(mórbida)")
print(“Vamos calcular seu IMC?”)
nome = input(“Digite o seu nome: “)
peso = float(input(“Olá, {}, agora digite seu peso (em Kg, Ex: 68.9): ” .format(nome)))
altura = float(input(“Digite sua altura (em m, Ex: 1.80): “))
media = peso / (altura * altura)
print(‘Seu IMC é: {:.1f}’.format(media))
if media = 18.5 and media =25.0 and media=30.0 and media=35.0 and media<=39.9:
print("Obesidade Grau 2")
else:
print("Obesidade grau 3(mórbida)")
Boa noite!…Estou com dificuldades em calcular o imc em python pq peso e alturas estão em um dicionário
Olá, e caso eu queira trazer uma resposta baseada num intervalo de valor, por exemplo.
Entre 14 e 18.5 magro
Entre 18,9 e 25 saudavel
Entre 25.1 e 29,9 sobrepeso
E a sim por diante, como que eu poderia fazer ?
Obrigado.
Peso = float(input(‘Digite o peso: ‘))
Altura = float(input(‘Digite a altura: ‘))
Imc = Peso / (Altura ** 2)
if Imc = 18.5 and Imc = 25 and Imc <= 29.99:
print('Voce esta acima do peso')
else:
print('Voce esta obesa')
//Fiz Assim, espero que seja o que você procura.
print(“Vamos calcular seu IMC?”)
nome = input(“Digite o seu nome: “)
peso = float(input(“Olá, {}, agora digite seu peso (em Kg, Ex: 68.9): ” .format(nome)))
altura = float(input(“Digite sua altura (em m, Ex: 1.80): “))
media = peso / (altura * altura)
print(‘Seu IMC é: {:.1f}’.format(media))
if media = 18.5 and media =25.0 and media=30.0 and media=35.0 and media<=39.9:
print("Obesidade Grau 2")
else:
print("Obesidade grau 3(mórbida)")
Por exemplo:
if (imc >= 18,5) and (imc <= 29,9):
print (nome, "está no seu peso ideal!")
Fiz um +/- com o que você está a falar, porem add uma var de idade, consoante a idade o imc será adaptado
https://gist.github.com/Dreizzy27/bf9c6c545ba5a72174350315230b2829
como assim ? especifique mais q talvez eu consiga te ajudar