You are given the temperature T of an object in one of Celsius, Fahrenheit, and Kelvin scales.
Write a program to print T in all scales viz Celsius, Fahrenheit, and Kelvin.
Formula to convert from Fahrenheit F to Celsius C is C = (F - 32) * 5 / 9.
Formula to convert from Kelvin K to Celsius C is C = K - 273.
Here "C", "F", "K" represent that the temperature scale is in Celsius, Fahrenheit and Kelvin scales respectively. The input contains the temperature (a number) and the unit of the temperature scale (C, F, K) without any space. The output contains temperature in Celsius, Fahrenheit and Kelvin scales in each line in the format similar to input and the value of the temperature is rounded to 2 decimal places.
Here is the code:
def parse_input(user_input: str) -> dict:
result = {'value': None, 'scale': None}
scale = user_input[-1]
if scale in 'KCF':
result['scale'] = scale
value = float(user_input[0:-1])
result['value'] = value
else:
print('Wrong input!')
exit(0)
return result
def fahrenheit_celsium_conversion(value: float, direction='forward') -> float:
result = None
if direction == 'forward':
result = (value - 32) * 5 / 9
elif direction == 'backward':
result = (value * 9 / 5) + 32
else:
print('Internal error!')
exit(0)
return result
def kelvin_celsium_conversion(value: float, direction='forward') -> float:
result = None
if direction == 'forward':
result = value - 273
elif direction == 'backward':
result = value + 273
else:
print('Internal error!')
exit(0)
return result
def kelvin_fahrenheit_conversion(value: float, direction='forward') -> float:
result = None
if direction == 'forward':
result = (value - 273.15) * 9 / 5 + 32
elif direction == 'backward':
result = (value - 32) * 5 / 9 + 273.15
else:
print('Internal error')
exit(0)
return result
def print_data(value: float, scale: str) -> None:
print("%.2f" % value, scale, sep='')
if __name__ == '__main__':
user_input = input('Enter temperature: ')
data = parse_input(user_input)
if data['scale'] == 'K':
print_data(kelvin_celsium_conversion(data['value']), 'C')
print_data(kelvin_fahrenheit_conversion(data['value']), 'F')
print_data(data['value'], 'K')
elif data['scale'] == 'C':
print_data(data['value'], 'C')
print_data(fahrenheit_celsium_conversion(data['value'],
direction='backward'), 'F')
print_data(kelvin_celsium_conversion(data['value'],
direction='backward'), 'K')
elif data['scale'] == 'F':
print_data(fahrenheit_celsium_conversion(data['value']), 'C')
print_data(data['value'], 'F')
print_data(kelvin_fahrenheit_conversion(data['value'],
direction='backward'), 'K')
else:
print('Internal error!')
Comments
Leave a comment