+ 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")

13th Dec 2021, 2:38 AM
Gaspar Guzman
Gaspar Guzman - avatar
13 Réponses
+ 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..
18th Feb 2022, 8:40 PM
Andres cedeño
Andres cedeño - avatar
+ 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")
17th Mar 2022, 7:23 PM
Cristian Rebollo Castillo
Cristian Rebollo Castillo - avatar
+ 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.
17th Mar 2022, 7:23 PM
Cristian Rebollo Castillo
Cristian Rebollo Castillo - avatar
+ 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")
25th Mar 2022, 12:07 AM
N Kowal
N Kowal - avatar
+ 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..
17th Mar 2022, 10:27 PM
Andres cedeño
Andres cedeño - avatar
+ 1
Hermanos, gracias por comentar lo del operador //. Estaba que me deprimía con ese ejercicio. 😅
13th Apr 2022, 3:53 PM
Luis André Baroni Istúriz
Luis André Baroni Istúriz - avatar
0
El operador // ha sido clave!! me estaba volviendo loca ya... muchs gracias!
11th Mar 2022, 8:27 AM
Marina
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 //
11th Mar 2022, 4:17 PM
Andres cedeño
Andres cedeño - avatar
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")
14th Aug 2022, 10:27 PM
Gaspar Guzman
Gaspar Guzman - avatar
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")
8th Mar 2023, 1:05 AM
Litzi Yarely Sánchez Enríquez
Litzi Yarely Sánchez Enríquez - avatar
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")
24th Mar 2023, 5:08 AM
Daniel Barrios
Daniel Barrios - avatar
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")
9th Nov 2023, 2:59 PM
Alexis J Centurión
Alexis J Centurión - avatar