+ 2
Consulta de calculadora IMC
Tengo una duda muy grande me da error en el primer if , Quiero saber qué estoy haciendo mal en esta tarea que te da python. Desde ya, gracias. peso=float(input("ponga el peso: ")) altura=float(input("ponga la altura: ")) imc = peso / (altura**2) if imc < 18.5: print("Underweight") elif imc <=18.5 and imc < 24.9: print ("Normal") elif imc <=25 and imc < 29.9: print("overweight") else imc <=25 and imc <30: print("Obesity")
13 Answers
+ 10
Te entiendo, si que sufrí con este ejercio jajaja y consulte con una amiga programadora pero ella decía que estaba correcto como lo hice pero sololearn me arrojaba error..
Ok, tuve un dolor de cabeza.. por este ejercicio de 3 dias jajaja pero logré resolverlo.. Soy diseñador gráfico, entrando al mundo de programación.. dificil pero cada día me encanta mas..
Aquí va mi método de como resolví.. es mi primer aporte a la comunidad..Salió todo correcto en el playground.
peso = float(input())
altura = float(input())
imc = peso // altura**2
if imc < 18.5:
print ("Underweight")
elif (imc == 18.5) or (imc <= 24.9):
print ("Normal")
elif (imc == 25) or (imc <= 29.9):
print ("Overweight")
else:
if Imc >= 30:
print ("Obesity")
El punto importante, en mi programa.. es el operador // .. si no hubiera puesto de està forma me arrojaba error, pero era extraño porque de 5 vistos buenos tenia uno no acertado.. que fueron 3 dias ..hasta que lo descrubí que era .. simplemente ese operador..
+ 6
Con función round():
Peso: 52
Altura: 1.85
IMC: 15.2 (este se redondea)
weight = int(input())
height = float(input())
imc = round(weight / (height ** 2), 1)
if (imc > 0 and imc <= 18.5):
print("Underweight")
elif (imc >= 18.5 and imc <= 24.9):
print("Normal")
elif (imc >= 25 and imc <= 29.9):
print("Overweight")
elif (imc >= 30):
print("Obesity")
+ 4
A ver si puedo ayudar en algo, ya que yo también estuve bastante tiempo peleando con este ejercicio.
El problema que tenemos si utilizamos el operador “/” al realizar la operación, es que nos devolverá un float con más de 10 decimales, cosa que se nos escapa a la hora de meterlo en los condicionales que nos indican.
La solución de utilizar el operador de división “//“ funciona, pero creo que no sería lo correcto, ya que este nos devolverá un valor entero con decimal siempre a 0 y si nos fijamos en los rangos de valores proporcionados, estos tienen 1 decimal funcional.
Por ejemplo:
Con operador /:
Peso 52
Altura 1.85
IMC: 15,19357195032871
Con operador //:
Peso: 52
Altura: 1.85
IMC: 15.0
Podéis comprobarlo vosotros mismos añadiendo un print(resultado) debajo de la operación y así poder ver la salida, aunque este muestre error.
Aunque no se ha aprendido en lecciones anteriores, creo que lo correcto sería añadir la función round() y especificar cuantos decimales queremos en el resultado.
+ 4
Así me funcionó:
peso = float(input())
altura = float(input())
imc = peso // altura**2
if imc < 18.5:
print ("Underweight")
elif (imc == 18.5) or (imc <= 24.9):
print ("Normal")
elif (imc == 25) or (imc <= 29.9):
print ("Overweight")
else:
if Imc >= 30:
print ("Obesity")
+ 1
Claro es una opción mas avanzada.. Para las proximas unidades .. Ese aporte que has dado hay valorarlo..ya que seguro no los enseña mas adelante.. En mi caso como novato me parece cool..
+ 1
Hermanos, gracias por comentar lo del operador //.
Estaba que me deprimía con ese ejercicio. 😅
0
El operador // ha sido clave!! me estaba volviendo loca ya... muchs gracias!
0
Claro.. Me pasó.. La razón es es que el programa debe recibir valor de decimales de menor dígito posible.. Y eso lo hace el operador //
0
esta es la mejor solucion, volvi despues de un tiempo a este ejercicio y la cosa seria asi:
peso = int(input())
altura = float(input())
imc = peso / altura**2
if imc < 18.5:
print("Underweight")
elif imc >= 18.5 and imc <= 25.9:
print("Normal")
elif imc >= 25 and imc <= 29.9:
print("Overweight")
elif imc >= 30:
print("Obesity")
0
Intente con diferentes maneras usando and y operadores lógicos y siempre me marcaba error en la declaración de una condición, por lo que no me dejaba ejecutar el programa, lo probé en mi lap y funcionaba perfectamente 🤨
al final me admitió una respuesta en la que no usé operadores booleanos pero los resultados fueron correctos...
peso = int(input())
altura = float(input())
imc= peso/(altura**2)
imc= round(imc,1)
if imc < 30:
if imc < 18.5:
print("Underweight")
else:
if imc < 25:
print("Normal")
elif imc >= 25:
print("Overweight")
else:
print("Obesity")
0
En vez de / Pon //
Todos mis conocidos programadores me decian que estaba bien el codigo, luego uno me pregunto de donde era el ejercicio y me dijo que era el "/" -_-
peso = int(input())
altura = float(input())
IMC = peso // altura ** 2
if IMC < 18.5:
print("Underweight")
elif 18.5 <= IMC < 24.9:
print("Normal")
elif 25 <= IMC < 29.9:
print("Overweight")
else:
print ("Obesity")
0
A mi solamente me lo dio válido de esta forma, ya es el segundo día que llevo en este problema jajsjs
peso = float(input())
altura = float(input())
imc = peso // altura**2
if imc < 18.5:
print ("Underweight")
elif (imc == 18.5) or (imc <= 24.9):
print ("Normal")
elif (imc == 25) or (imc <= 29.9):
print ("Overweight")
else:
if imc >= 30:
print ("Obesity")