Python — Reto 1.2: Conversor de Escalas de Temperatura
En este nuevo reto, vamos a crear un conversor de escalas de temperatura entre grados Celsius (°C), Fahrenheit (°F) y Kelvin (K).
Un poco de teoría
La temperatura es una medida de la energía cinética promedio de los átomos o moléculas del sistema. En palabras más sencillas, es una medida que nos indica qué tan frío o qué tan caliente se encuentra un objeto o el ambiente.
Get denebtech’s stories in your inbox
Join Medium for free to get updates from this writer.
Disponemos de distintas escalas para medir temperatura:
- La escala Celsius (°C) toma en cuenta el valor 0° para el punto de fusión del agua, mientras que el punto de ebullición del agua corresponde a 100°.
- La escala Fahrenheit (°F) toma el punto de fusión del agua en 32 °F y el de ebullición en 212 °F.
- La escala Kelvin (K) es la escala del cero absoluto, en la cual el punto de fusión del agua se da a 273 K y el punto de ebullición a 373 K.
Para la conversión entre estas escalas, vamos a tomar en cuenta la siguiente tabla.
Manos a la obra
En el caso de nuestro conversor, vamos a hacer uso de varias funciones:
- Un menú de opciones para ingreso del usuario
- Una función para convertir de Celsius a Fahrenheit y Kelvin
- Una función para convertir de Fahrenheit a Celsius y Kelvin
- Una función para convertir de Kelvin a Celsius y Fahrenheit
def menu():
print("Conversor de escalas de temperatura")
print("-" * 50)
while True:
print("Seleccione la escala de temperatura que desea convertir:")
print("1. Celsius")
print("2. Fahrenheit")
print("3. Kelvin")
escala = int(input("Ingrese una de las opciones mencionadas: "))
if escala not in [1, 2, 3]:
print("Opción no válida. Intente nuevamente.")
continue
temperatura = float(input("Ingrese la temperatura a convertir: "))
return escala, temperatura
def convertir_celsius(temperatura):
fahrenheit = (temperatura * 9/5) + 32
kelvin = temperatura + 273.15
return fahrenheit, kelvin
def convertir_fahrenheit(temperatura):
celsius = (temperatura - 32) * 5/9
kelvin = ((temperatura - 32) * 5/9) + 273.15
return celsius, kelvin
def convertir_kelvin(temperatura):
celsius = temperatura - 273.15
fahrenheit = ((temperatura - 273.15) * 9/5) + 32
return celsius, fahrenheitUna vez definidas nuestras funciones, es hora de utilizarlas en conjunto para ejecutar nuestro código.
if __name__ == "__main__":
while True:
escala, temperatura = menu()
if escala == 1:
fahrenheit, kelvin = convertir_celsius(temperatura)
print(f"{temperatura:.2f}°C es igual a {fahrenheit:.2f}°F y {kelvin:.2f}K")
elif escala == 2:
celsius, kelvin = convertir_fahrenheit(temperatura)
print(f"{temperatura:.2f}°F es igual a {celsius:.2f}°C y {kelvin:.2f}K")
elif escala == 3:
celsius, fahrenheit = convertir_kelvin(temperatura)
print(f"{temperatura:.2f}K es igual a {celsius:.2f}°C y {fahrenheit:.2f}°F")
print("-" * 50)
continuar = input("¿Desea realizar otra conversión? (s/n): ")
if continuar.lower() != 's':
print("¡Gracias por usar el conversor de escalas de temperatura!")
breakComo observamos, definimos un input para que el usuario indique si desea continuar usando el conversor o terminar el programa. Veamos que tal funciona:
user@host $ python main.py
Conversor de escalas de temperatura
--------------------------------------------------
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 5
Opción no válida. Intente nuevamente.
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 2
Ingrese la temperatura a convertir: 85
85.00°F es igual a 29.44°C y 302.59K
--------------------------------------------------
¿Desea realizar otra conversión? (s/n): s
Conversor de escalas de temperatura
--------------------------------------------------
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 3
Ingrese la temperatura a convertir: 312
312.00K es igual a 38.85°C y 101.93°F
--------------------------------------------------
¿Desea realizar otra conversión? (s/n): n
¡Gracias por usar el conversor de escalas de temperatura!Veamos ahora cómo capturar algunos errores, como cuando se usa un string para opciones como la temperatura.
user@host $ python main.py
Conversor de escalas de temperatura
--------------------------------------------------
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 1
Ingrese la temperatura a convertir: tres
Traceback (most recent call last):
File "/home/freelancer/Documents/entrepreneurships/retos-medium/python/reto1.2/main.py", line 41, in <module>
escala, temperatura = menu()
File "/home/freelancer/Documents/entrepreneurships/retos-medium/python/reto1.2/main.py", line 16, in menu
temperatura = float(input("Ingrese la temperatura a convertir: "))
ValueError: could not convert string to float: 'tres'Usaremos excepciones para capturar estos errores en nuestros inputs.
def menu():
print("Conversor de escalas de temperatura")
print("-" * 50)
while True:
print("Seleccione la escala de temperatura que desea convertir:")
print("1. Celsius")
print("2. Fahrenheit")
print("3. Kelvin")
try:
escala = int(input("Ingrese una de las opciones mencionadas: "))
except ValueError:
print("Entrada no válida. Por favor, ingrese un número.")
continue
if escala not in [1, 2, 3]:
print("Opción no válida. Intente nuevamente.")
continue
while True:
try:
temperatura = float(input("Ingrese la temperatura a convertir: "))
except ValueError:
print("Entrada no válida. Por favor, ingrese un número.")
continue
break
return escala, temperaturaAl realizar nuevas pruebas, vemos que nuestro código funciona mucho mejor al ingresar valores inválidos.
user@host $ python main.py
Conversor de escalas de temperatura
--------------------------------------------------
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: fd
Entrada no válida. Por favor, ingrese un número.
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 9
Opción no válida. Intente nuevamente.
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: kd
Entrada no válida. Por favor, ingrese un número.
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 1
Ingrese la temperatura a convertir: kfd
Entrada no válida. Por favor, ingrese un número.
Ingrese la temperatura a convertir: 105
105.00°C es igual a 221.00°F y 378.15K
--------------------------------------------------
¿Desea realizar otra conversión? (s/n): s
Conversor de escalas de temperatura
--------------------------------------------------
Seleccione la escala de temperatura que desea convertir:
1. Celsius
2. Fahrenheit
3. Kelvin
Ingrese una de las opciones mencionadas: 3
Ingrese la temperatura a convertir: 375
375.00K es igual a 101.85°C y 215.33°F
--------------------------------------------------
¿Desea realizar otra conversión? (s/n): n
¡Gracias por usar el conversor de escalas de temperatura!El código de nuestro nuevo reto puedes encontrarlo en el siguiente repositorio de GitHub. ¿Puedes encontrar alguna mejora en las funciones de conversión? Happy coding…!










