In python for beginners there is a task to code a BMI calculator. What a better code
My code is working good but I am confused that whether I can use loops (Flow control concept) here .. Help me in making my code to look more better with your feedback
5/31/2021 3:21:20 PM
ch Murali
13 Answers
New Answer# much more "pythonic" code: weight = float(input()) height = float(input()) bmi = weight / (height ** 2) if bmi < 18.5: print("Underweight") elif bmi < 25: print("Normal") elif bmi < 30: print("Overweight") else: print("Obesity") """ + meaningfull variable name + spacing between operator and operands + not use of unuseful parenthesis (outer expressions), but explicit parenthesis for exponentiation even if operators precedence make them optional + inlined block of il..elif..else statements since only one statement and total line length is still short enough """
I don't think you need to use a loop since you only have to compare the values and give outputs. most BMI calculators made by people here used only if and else statements
#my bmi code weight = float(input()) height = float(input()) bmi = weight/height**2 if bmi < 18.5: print("Underweight") elif bmi >= 18.5 and bmi < 25: print("Normal") elif bmi >= 25 and bmi < 30: print("Overweight") else: if bmi > 30: print("Obesity")
The future is now thanks to science[INACTIVE] python do not have ternary operator, only inlined if..else statement ^^ ch Murali ternary operator is operator wich takes 3 operands... most of languages (but at least not python nor kotlin) have an if..else ternary operator shortcut: if condition: value = v1 # if condition == True else: value = v2 # if condition == False would be shortened to: value = condition ? v1 : v2 but in python you can only do: value = v1 if condition else v2 calling the second "ternary operator" is a language abuse ;P ... and chaining ternary operator (or inlined if..else) to mimic if..elif.else is often considered as bad practice as ends with a code mess, quite unreadable, mostly used by code shortener/obfuscators or in code golf... decreasing maintanability :( finally, python doesn't have such operator by design choice for these reasons, and code recommendations prevent longest lines ;)
wt = float(input()) ht = float(input()) BMI = round(float( (wt)/(ht**2) ),2) if BMI < 18.5: print("Underweight") elif 18.5 <= BMI <= 25: print("Normal") elif 25 <= BMI <= 30: print("Overweight") elif BMI > 30: print("Obesity") Here is my code
weight = int(input()) height = float(input()) a = (weight / (height*height)) if a < 18.5: print ("Underweight") if 18.5 <= a < 25: print ("Normal") if 25 <= a < 30: print ("Overweight") if a >= 30: print ("Obesity") This is my code
@visph thanks for pointing this out. Yes, I agree with you. It is considered a bad practice to use. Also thanks for the information which I didn't know before.