Unit-converter / app.py
Wall06's picture
Update app.py
5a89251 verified
# app.py
import gradio as gr
MASS_FACTORS = {
"kg": 1000.0,
"g": 1.0,
"lb": 453.59237,
"oz": 28.349523125
}
UNITS = [
"Mass: kg", "Mass: g", "Mass: lb", "Mass: oz",
"Temp: C", "Temp: F", "Temp: K"
]
def convert(value, from_label, to_label):
try:
x = float(value)
except:
return "Error: enter a numeric value."
fcat, funit = from_label.split(": ")
tcat, tunit = to_label.split(": ")
if fcat != tcat:
return f"Error: can't convert between categories ({fcat} vs {tcat})."
if fcat == "Mass":
grams = x * MASS_FACTORS[funit]
out = grams / MASS_FACTORS[tunit]
return f"{out:.6f} {tunit}"
else:
if funit == tunit:
return f"{x:.6f} {tunit}"
# to Celsius
if funit == "C":
c = x
elif funit == "F":
c = (x - 32.0) * 5.0/9.0
elif funit == "K":
c = x - 273.15
else:
return "Error: unknown temperature unit."
# Celsius -> target
if tunit == "C":
out = c
elif tunit == "F":
out = c * 9.0/5.0 + 32.0
elif tunit == "K":
out = c + 273.15
else:
return "Error: unknown temperature unit."
return f"{out:.6f} {tunit}"
iface = gr.Interface(
fn=convert,
inputs=[
gr.Number(label="Value", value=1),
gr.Dropdown(UNITS, label="From"),
gr.Dropdown(UNITS, label="To"),
],
outputs=gr.Textbox(label="Result"),
title="Simple Unit Converter",
description="Converts Mass (kg, g, lb, oz) and Temperature (C, F, K)."
)
if __name__ == "__main__":
iface.launch()