File size: 9,306 Bytes
6fbfa2f
 
 
2c01839
4b2acd7
bc41047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b2acd7
486d1eb
141900d
486d1eb
9376215
 
141900d
 
 
 
 
 
 
 
4b2acd7
 
 
486d1eb
 
3acafd5
bc41047
 
3acafd5
bc41047
 
 
 
 
 
 
 
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
3acafd5
 
bc41047
 
 
 
3acafd5
 
bc41047
 
3acafd5
 
bc41047
 
 
 
 
3acafd5
 
bc41047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# Define the function for joule per second to watt conversion
def joule_per_second_to_watt(joules_per_second):
    return joules_per_second  # 1 joule per second = 1 watt
import streamlit as st
import math
# Length conversions
def micrometers_to_nanometers(micrometers):
    return micrometers * 1000

def angstroms_to_nanometers(angstroms):
    return angstroms * 0.1

def light_years_to_kilometers(light_years):
    return light_years * 9.461e12

def au_to_kilometers(au):
    return au * 1.496e8

def parsecs_to_light_years(parsecs):
    return parsecs * 3.262

def chains_to_meters(chains):
    return chains * 20.1168

def furlongs_to_meters(furlongs):
    return furlongs * 201.168

def meter_to_millimeter(meters):
    return meters * 1000

def millimeter_to_meter(millimeters):
    return millimeters / 1000

def kilometer_to_meter(kilometers):
    return kilometers * 1000

def meter_to_kilometer(meters):
    return meters / 1000

def centimeter_to_meter(centimeters):
    return centimeters / 100

def meter_to_centimeter(meters):
    return meters * 100

# Weight conversions
def gram_to_kilogram(grams):
    return grams / 1000

def kilogram_to_gram(kilograms):
    return kilograms * 1000

def milligram_to_gram(milligrams):
    return milligrams / 1000

def gram_to_milligram(grams):
    return grams * 1000

def pound_to_kilogram(pounds):
    return pounds * 0.453592

def kilogram_to_pound(kilograms):
    return kilograms * 2.20462

def ounce_to_gram(ounces):
    return ounces * 28.3495

def gram_to_ounce(grams):
    return grams * 0.035274

# Time conversions
def seconds_to_minutes(seconds):
    return seconds / 60

def minutes_to_seconds(minutes):
    return minutes * 60

def hours_to_minutes(hours):
    return hours * 60

def minutes_to_hours(minutes):
    return minutes / 60

def days_to_hours(days):
    return days * 24

def hours_to_days(hours):
    return hours / 24

# Temperature conversions
def celsius_to_fahrenheit(celsius):
    return (celsius * 9/5) + 32

def fahrenheit_to_celsius(fahrenheit):
    return (fahrenheit - 32) * 5/9

def celsius_to_kelvin(celsius):
    return celsius + 273.15

def kelvin_to_celsius(kelvin):
    return kelvin - 273.15

def fahrenheit_to_kelvin(fahrenheit):
    return (fahrenheit - 32) * 5/9 + 273.15

def kelvin_to_fahrenheit(kelvin):
    return (kelvin - 273.15) * 9/5 + 32

# Pressure conversions
def pascal_to_atm(pascals):
    return pascals / 101325

def atm_to_pascal(atms):
    return atms * 101325

def pascal_to_bar(pascals):
    return pascals / 100000

def bar_to_pascal(bars):
    return bars * 100000

def psi_to_pascal(psi):
    return psi * 6894.76

def pascal_to_psi(pascals):
    return pascals / 6894.76

# Energy conversions
def joule_to_calorie(joules):
    return joules / 4.184

def calorie_to_joule(calories):
    return calories * 4.184

def joule_to_kilojoule(joules):
    return joules / 1000

def kilojoule_to_joule(kilojoules):
    return kilojoules * 1000

def watt_hour_to_joule(watt_hours):
    return watt_hours * 3600

def joule_to_watt_hour(joules):
    return joules / 3600

# Power conversions
def watt_to_horsepower(watts):
    return watts / 745.7

def horsepower_to_watt(horsepower):
    return horsepower * 745.7

def watt_to_kilowatt(watts):
    return watts / 1000

def kilowatt_to_watt(kilowatts):
    return kilowatts * 1000

# Volume conversions
def liter_to_milliliter(liters):
    return liters * 1000

def milliliter_to_liter(milliliters):
    return milliliters / 1000

def gallon_to_liter(gallons):
    return gallons * 3.78541

def liter_to_gallon(liters):
    return liters / 3.78541

def cubic_meter_to_liter(cubic_meters):
    return cubic_meters * 1000

def liter_to_cubic_meter(liters):
    return liters / 1000

# Speed conversions
def kilometer_per_hour_to_meter_per_second(kmph):
    return kmph / 3.6

def meter_per_second_to_kilometer_per_hour(mps):
    return mps * 3.6

def mile_per_hour_to_kilometer_per_hour(mph):
    return mph * 1.60934

def kilometer_per_hour_to_mile_per_hour(kmph):
    return kmph / 1.60934

# Angle conversions
def radians_to_degrees(radians):
    return radians * (180 / math.pi)

def degrees_to_radians(degrees):
    return degrees * (math.pi / 180)

# Frequency conversions
def hertz_to_kilohertz(hertz):
    return hertz / 1000

def kilohertz_to_hertz(kilohertz):
    return kilohertz * 1000

def hertz_to_megahertz(hertz):
    return hertz / 1e6

def megahertz_to_hertz(megahertz):
    return megahertz * 1e6

# Streamlit UI
st.title("Unit Conversion App ๐Ÿงฎ")

# Add selectbox for the type of conversion category
category = st.selectbox("Choose a conversion category", [
    "Length ๐Ÿ“",
    "Weight โš–๏ธ",
    "Time โฐ",
    "Temperature ๐ŸŒก๏ธ",
    "Pressure ๐Ÿ’จ",
    "Energy โšก",
    "Power ๐Ÿ’ช",
    "Volume ๐Ÿงƒ",
    "Speed ๐Ÿš—",
    "Angle ๐Ÿ”บ",
    "Frequency ๐Ÿ“ถ"
])

# Conversion selection based on category
# Full updated set of handlers
conversions = {
    "Length ๐Ÿ“": [
        ("Micrometers to Nanometers", micrometers_to_nanometers),
        ("Angstroms to Nanometers", angstroms_to_nanometers),
        ("Light-Years to Kilometers", light_years_to_kilometers),
        ("Astronomical Units (AU) to Kilometers", au_to_kilometers),
        ("Parsecs to Light-Years", parsecs_to_light_years),
        ("Chains to Meters", chains_to_meters),
        ("Furlongs to Meters", furlongs_to_meters),
        ("Meter to Millimeter", meter_to_millimeter),
        ("Millimeter to Meter", millimeter_to_meter),
        ("Kilometer to Meter", kilometer_to_meter),
        ("Meter to Kilometer", meter_to_kilometer),
        ("Centimeter to Meter", centimeter_to_meter),
        ("Meter to Centimeter", meter_to_centimeter),
    ],
    "Weight โš–๏ธ": [
        ("Gram to Kilogram", gram_to_kilogram),
        ("Kilogram to Gram", kilogram_to_gram),
        ("Milligram to Gram", milligram_to_gram),
        ("Gram to Milligram", gram_to_milligram),
        ("Pound to Kilogram", pound_to_kilogram),
        ("Kilogram to Pound", kilogram_to_pound),
        ("Ounce to Gram", ounce_to_gram),
        ("Gram to Ounce", gram_to_ounce),
    ],
    "Time โฐ": [
        ("Seconds to Minutes", seconds_to_minutes),
        ("Minutes to Seconds", minutes_to_seconds),
        ("Hours to Minutes", hours_to_minutes),
        ("Minutes to Hours", minutes_to_hours),
        ("Days to Hours", days_to_hours),
        ("Hours to Days", hours_to_days),
    ],
    "Temperature ๐ŸŒก๏ธ": [
        ("Celsius to Fahrenheit", celsius_to_fahrenheit),
        ("Fahrenheit to Celsius", fahrenheit_to_celsius),
        ("Celsius to Kelvin", celsius_to_kelvin),
        ("Kelvin to Celsius", kelvin_to_celsius),
        ("Fahrenheit to Kelvin", fahrenheit_to_kelvin),
        ("Kelvin to Fahrenheit", kelvin_to_fahrenheit),
    ],
    "Pressure ๐Ÿ’จ": [
        ("Pascal to ATM", pascal_to_atm),
        ("ATM to Pascal", atm_to_pascal),
        ("Pascal to Bar", pascal_to_bar),
        ("Bar to Pascal", bar_to_pascal),
        ("PSI to Pascal", psi_to_pascal),
        ("Pascal to PSI", pascal_to_psi),
    ],
    "Energy โšก": [
        ("Joule to Calorie", joule_to_calorie),
        ("Calorie to Joule", calorie_to_joule),
        ("Joule to Kilojoule", joule_to_kilojoule),
        ("Kilojoule to Joule", kilojoule_to_joule),
        ("Watt Hour to Joule", watt_hour_to_joule),
        ("Joule to Watt Hour", joule_to_watt_hour),
    ],
    "Power ๐Ÿ’ช": [
        ("Watt to Horsepower", watt_to_horsepower),
        ("Horsepower to Watt", horsepower_to_watt),
        ("Watt to Kilowatt", watt_to_kilowatt),
        ("Kilowatt to Watt", kilowatt_to_watt),
        ("Joule per second to Watt", joule_per_second_to_watt),
        ("Watt to Joule per second", watt_to_joule_per_second),
    ],
    "Volume ๐Ÿงƒ": [
        ("Liter to Milliliter", liter_to_milliliter),
        ("Milliliter to Liter", milliliter_to_liter),
        ("Gallon to Liter", gallon_to_liter),
        ("Liter to Gallon", liter_to_gallon),
        ("Cubic Meter to Liter", cubic_meter_to_liter),
        ("Liter to Cubic Meter", liter_to_cubic_meter),
    ],
    "Speed ๐Ÿš—": [
        ("Kilometer per Hour to Meter per Second", kilometer_per_hour_to_meter_per_second),
        ("Meter per Second to Kilometer per Hour", meter_per_second_to_kilometer_per_hour),
        ("Mile per Hour to Kilometer per Hour", mile_per_hour_to_kilometer_per_hour),
        ("Kilometer per Hour to Mile per Hour", kilometer_per_hour_to_mile_per_hour),
    ],
    "Angle ๐Ÿ”บ": [
        ("Radians to Degrees", radians_to_degrees),
        ("Degrees to Radians", degrees_to_radians),
    ],
    "Frequency ๐Ÿ“ถ": [
        ("Hertz to Kilohertz", hertz_to_kilohertz),
        ("Kilohertz to Hertz", kilohertz_to_hertz),
        ("Hertz to Megahertz", hertz_to_megahertz),
        ("Megahertz to Hertz", megahertz_to_hertz),
    ],
}

# User selection for conversion
conversion_type = st.selectbox(
    f"Choose a {category.lower()} conversion",
    conversions[category],
    format_func=lambda x: x[0]
)

# Input for conversion
value = st.number_input("Enter the value to convert", min_value=0.0)

# Perform conversion
if st.button("Convert"):
    func = conversion_type[1]
    result = func(value)
    st.success(f"The result is: {result}")

# Full updated set of handlers