I am making a BMI calculator with plotly Dash. I'm trying to code it where the user choses the unit of the input for weight and height, however its throwing an error on line 38:
UnboundLocalError: local variable 'bmi' referenced before assignment
from dash import Dash, dcc, html, Input, Output
app = Dash(__name__)
app.layout = html.Div([
html.H1("BMI Calculator"),
html.Div([
html.H2('Enter your weight'),
dcc.Input(id = 'weight', value = 160, type = 'number'),
dcc.RadioItems(options = [{'label': 'pounds', 'value': 'lbs'}, {'label': 'kilograms', 'value': 'kgs'}],
value = 'lbs',
id = 'weight_unit'),
html.H2('Enter your height'),
dcc.Input(id = 'height', value = 5.83333333, type = 'number'),
dcc.RadioItems(options = [{'label': 'feet', 'value': 'ft'},{'label': 'meters', 'value': 'm'}],
value = 'ft',
id = 'height_unit'),
]),
html.Br(),
html.H1("Your estimated body mass index is:"),
html.H1(id = 'bmi'),
])
@app.callback(
Output(component_id = 'bmi', component_property = 'children'),
Input(component_id = 'weight', component_property = 'value'),
Input(component_id = 'weight_unit', component_property = 'value'),
Input(component_id = 'height', component_property = 'value'),
Input(component_id = 'height_unit', component_property = 'value'),
)
def update_output_div(weight, weight_unit, height, height_unit):
if weight_unit == 'lbs' and height_unit == 'ft':
bmi = 703 * (weight/(height * 12)**2)
if weight_unit == 'kgs' and height_unit == 'm':
bmi = (weight)/((height)**2)
return bmi
if __name__ == '__main__':
app.run_server(debug=True)