BMI Calculator using Python 3 I am creating a simple BMI Calculator to check if the user is overweight or not. I am not sure how much improvement I need but I do appreciate any comments as to whether the coding is inconsistent.

def introduction_page():
  print("Welcome to the BMI Calculator")
  to_start = str(input("Y to start. N to exit"))
  if to_start in ("Y","y"):
    print("We will calculate now")
    return main_page()
  else:
    print("exiting")


def main_page():
  found = False

  while not found:
    weight_store = float()
    height_store = float()
    user_weight = float(input("Please enter your weight(kg): "))
    weight_confirm =  str(input("Y to confirm. N to re-enter"))
    if weight_confirm in("y","Y"):
      weight_store = weight_store + user_weight
      while not found:
        user_height = float(input("Please enter your height(m): "))
        height_confirm = str(input("Y to confirm. N to re-enter"))
        if height_confirm in ("Y","y"):
          height_store = height_store + user_height
          total_height = (height_store * height_store)
          total_weight = (weight_store)
          BMI = (total_weight / total_height)
          print (int(BMI))
          if (BMI &lt; 18.5 or BMI &lt;25) :
            print("Normal Weight")
            found = True
          elif (BMI &lt; 25 or BMI &lt; 30):
            print("Over-weight")
            found = True
          elif (BMI &lt; 30 or BMI &lt; 40):
            print("Obesity")
            found = True
          else:
            print("Morbid Obesity")
            found = True
        else:
          print("Please re-enter")
    else:
      print("Please re-enter!")


introduction_page()
for a starter I see tree aspects which you could upgrade:


Improve code readability
Make code reusable
Improve validation / error handling.


From main_page() extract 4 functions:


get_user_height()
get_user_weight()
calculate_bmi(height, weight)
print_bmi_description(bmi)


In get_user_height() and get_user_weight() user input. What is min and max value which are correct in your model? e.g. nobody has weight of -1.0.
Make sure that you can trust this functions i.e. they return only valid values.

calculate_bmi(height, weight) - extracting calculation code to distinct function makes it easy to reuse and test (unit tests or even simpler in interactive console).

print_bmi_description(bmi) - make sure your logic covers all possible values. By covers I mean it returns correct description or throws an error (ie. for negative BMIs). 


You should remove redundant code eg. BMI &lt; 18.5 or BMI &lt;25 -
check only for BMI &lt;25.
Validate your logic. BMI &lt; 30 or BMI &lt; 40 seems incorrect. I think it should be BMI &gt; 30 or BMI &lt; 40 or in more pythonic way 30 &lt; BMI &lt; 40


I think it is enough for know. If you make this changes we could make next step :-)