Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BMI Calculator in Python

Tags:

python

The program calculates a person's BMI from the weight and height supplied using the user's input. However, after I enter 'metric' or 'imperial' and press enter, the program closes. The first three print functions work fine and anything after doesn't appear subsequent to me pressing the enter button. How do I fix this?

print('\t\t\t BMI Calculator')
print('\t\t\t By Abdinasir Hussein')
print('\n Hello, this is a BMI Calculator!')

input('Do you wish to enter metric units or imperial units: ')

while input == 'metric':
    height = float(input('Please enter your height input meters(decimals): '))
    weight = int(input('Please enter your weight input kg: '))
    bmi = weight/(height*height)

    if bmi <= 18.5:
        print('Your BMI is', bmi,'which means you are underweight.')

    elif bmi > 18.5 and bmi < 25:
        print('Your BMI is', bmi,'which means you are normal.')

    elif bmi > 25 and bmi < 30:
        print('your BMI is', bmi,'overweight.')

    elif bmi > 30:
        print('Your BMI is', bmi,'which means you are obese.')

    else:
        print('There is an error with your input')
        print('Please check you have entered whole numbers\n'
              'and decimals were asked.')

while input == 'imperial':
    height = int(input('Please enter your height input inputches(whole number): '))
    weight = int(input('Please enter your weight input pounds(whole number): '))
    bmi = (weight*703)/(height*height)

    if bmi <= 18.5:
        print('Your BMI is', bmi,'which means you are underweight.')

    elif bmi > 18.5 and bmi < 25:
        print('Your BMI is', bmi,'which means you are normal.')

    elif bmi > 25 and bmi < 30:
        print('Your BMI is', bmi,'which means you are overweight')

    elif bmi > 30:
        print('Your BMI is', bmi,'which means you are obese.')

    else:
        print('There is an error with your input')
        print('Please check you have entered whole numbers\n'
              'and decimals were asked.')

input('\n\nPlease press enter to exit.')

I've now changed it, but how do I go about editing this block:

input = input('Do you wish to enter metric units or imperial units: ')

if input == 'metric':
    height = float(input('Please enter your height input meters(decimals): '))
    weight = int(input('Please enter your weight input kg: '))
    bmi = weight/(height*height)

    if bmi <= 18.5:
        print('Your BMI is', bmi,'which means you are underweight.')

    elif bmi > 18.5 and bmi < 25:
        print('Your BMI is', bmi,'which means you are normal.')

    elif bmi > 25 and bmi < 30:
        print('your BMI is', bmi,'overweight.')

    elif bmi > 30:
        print('Your BMI is', bmi,'which means you are obese.')

    else:
        print('There is an error with you inputput')
        print('Please check you have entered whole numbers\n'
              'and decimals where asked.')
like image 790
oneabdi Avatar asked Jan 22 '26 11:01

oneabdi


2 Answers

Instead of while input == 'imperial':

Use

else: 
    height = float(input('Please enter your height input inputches: '))
    weight = int(input('Please enter your weight input pounds: ')) 

Or use

elif input == 'imperial':
    height = float(input('Please enter your height input inputches: '))
    weight = int(input('Please enter your weight input pounds: '))
else: 
print("Please enter any one of the units")`
like image 66
Kawin M Avatar answered Jan 25 '26 01:01

Kawin M


You shouldn't use while. You meant to write:

units = input('Do you wish to enter metric units or imperial units: ')

if units == 'metric':
    ......
elif units == 'imperial':
    ......
like image 45
Simeon Visser Avatar answered Jan 25 '26 00:01

Simeon Visser



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!