Skip to content
Snippets Groups Projects
Commit b4e3e62e authored by vand's avatar vand
Browse files

Delete module5_BMI_calculator.py

parent 03fbb5b4
No related branches found
No related tags found
No related merge requests found
import numpy as np
import matplotlib.pyplot as plt
def input_main_menu():
print('')
print('What would you like to do?')
print('Type 1, 2, or 3 followed by enter:')
print('1. Compute and display BMI from weight and height.')
print('2. Compute and display a normal BMI range from height.')
print('3. Quit')
i = 0
while i==0:
s = input('Choice: ')
try:
i = int(s)
except:
pass
if not i in [1,2,3]:
print('You typed ' + s)
print('You should type 1, 2 or 3 followed by enter.')
i = 0
return(i)
def input_measure(measure_type, units, m_min, m_max):
print('')
m = 0
while m==0:
s = input('Type ' + measure_type + ' followed by enter: ')
try:
m = float(s)
except:
pass
if m<m_min or m>m_max:
print('You typed ' + s)
print('Type a valid ' + measure_type + ' in ' + units +'.')
m = 0
return(m)
def make_plot(height, weight=None):
h = np.linspace(1.3, 2.2)
plt.plot(h, 30*h**2,'r')
plt.plot(h, 25*h**2,'m')
plt.plot(h, 18.5*h**2,'g')
if weight is None:
wmin = 18.5*height**2
wmax = 25*height**2
plt.plot([height, height], [wmin, wmax],'k')
d = f'Normal range [{wmin:.2f} {wmax:.2f}]'
else:
plt.plot(height, weight, 'ko')
d = f'BMI {weight/(height**2):.2f}'
plt.legend(['Obese to overweight', 'Overweight to normal',
'Normal to underweight', d])
plt.xlabel('Height')
plt.ylabel('Weight')
plt.title('BMI plot')
plt.show()
# main program
print('*************************')
print('Welcome to BMI calculator')
choice = 0
while choice<3:
choice = input_main_menu()
if choice==1:
h = input_measure('height', 'meters', 1, 2.5)
w = input_measure('weight', 'kilograms', 40, 300)
make_plot(h, w)
if choice==2:
h = input_measure('height', 'meters', 1, 2.5)
make_plot(h)
print('Bye!')
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment