Temperature unit converter written in Python 3
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

642 lines
27 KiB

#!/usr/bin/python3
# coding: utf-8
import argparse
import sys
class UnsupportedPythonVersion(Exception):
pass
if sys.version_info[0] < 3:
raise UnsupportedPythonVersion('Python 3 or newer is required')
# list of temp unit notations to check user input against
celsius_notations = ['celsius','grad celsius','c','°c','° c','celcius']
kelvin_notations = ['kelvin','grad kelvin','k','°k','° k']
fahrenheit_notations = ['fahrenheit','grad fahrenheit','f','°f','° f']
rankine_notations = ['rankine','grad rankine','r','ra','°r','°ra','° r','° ra']
newton_notations = ['newton','grad newton','n','°n','° n']
delisle_notations = ['delisle','grad delisle','d','°d','° d','de','°de','° de']
reaumur_notations = ['reaumur','grad reaumur','réaumur','grad réaumur','re','°re','° re']
romer_notations = ['romer','grad romer','rømer','grad rømer','','°rø','° rø']
# id for temp units
id_temp_celsius = 'c'
id_temp_kelvin = 'k'
id_temp_fahrenheit = 'f'
id_temp_rankine = 'r'
id_temp_newton = 'n'
id_temp_delisle = 'd'
id_temp_reaumur = 're'
id_temp_romer = 'ro'
# absolute zero values
temp_celsius_absolute_zero = -273.15
temp_kelvin_absolute_zero = 0
temp_fahrenheit_absolute_zero = -459.670
temp_rankine_absolute_zero = 0
temp_newton_absolute_zero = 0
temp_delisle_absolute_zero = 559.725
temp_reaumur_absolute_zero = -218.520
temp_romer_absolute_zero = -135.90375
# strings for input requests
user_prompt_temp_unit_input = 'Welche Temperatur-Einheit soll umgerechnet werden?: '
user_prompt_temp_unit_output = 'In welche Temperatur-Einheit soll umgerechnet werden?: '
user_prompt_temp_input_first = "Gebe die Temperatur in "
user_prompt_temp_input_last = " ein: "
# strings for program output
user_output_celsius = ' Grad Celsius'
user_output_kelvin = ' Grad Kelvin'
user_output_fahrenheit = ' Grad Fahrenheit'
user_output_rankine = ' Grad Rankine'
user_output_newton = ' Grad Newton'
user_output_delisle = ' Grad Delisle'
user_output_reaumur = ' Grad Réaumur'
user_output_romer = ' Grad Rømer'
temp_output_unit_input = None
temp_output_unit_output = None
user_output_temp_output = "Das sind "
user_output_dumb_convert = 'Das kannst du selber ;-)'
user_output_invalid_temp_value = 'Die eingebene Temperatur ist kälter als der absolute Nullpunkt. Das ist unmöglich. Gib eine zulässige Temperatur ein.'
welcome_message = \
'''
--- python temperature converter ---
Konvertiert jede Temperatur von einer Einheit in eine beliebige andere Einheit.
Verfügbare Einheiten:
- Celsius
- Kelvin
- Fahrenheit
- Rankine
- Newton
- Delisle
- Réaumur
- Rømer
'''
# strings for argparser
parser_description = 'Python Temperatur-Koverter. Konvertiert zwischen Temperaturen in Celsius, Kelvin, Fahrenheit und Rankine.'
parser_epilog = '* - Pflicht-Argumente im nicht-interaktiven Modus'
arg_mode_interactive = ['interaktiv']
arg_mode_non_interactive = ['nicht-interaktiv']
arg_mode_help = 'Modus: interaktiv oder nicht-interaktiv'
arg_input_unit_help = 'Die umzuwandelnde Einheit *'
arg_output_unit_help = 'Die gewünschte Einheit *'
arg_temp_value_help = 'Der Temperatur-Wert zum Umwandeln *'
# prompt user for tempeature unit
# result id_temp_* for appropriate unit
# usage:
# possible paramter strings: 'input' or 'output'
# 'input' for the unit from which the user wants to convert
# 'output' for the unit to which the user wants to convert
def get_temp_unit(for_temp):
while True:
if for_temp == 'input':
if args.mode in arg_mode_interactive:
temp_unit = input(user_prompt_temp_unit_input)
elif args.mode in arg_mode_non_interactive:
temp_unit = args.input_unit
elif for_temp == 'output':
if args.mode in arg_mode_interactive:
temp_unit = input(user_prompt_temp_unit_output)
elif args.mode in arg_mode_non_interactive:
temp_unit = args.output_unit
else:
raise TypeError('get_temp_unit needs either \'input\' or \'output\' as parameter')
temp_unit = temp_unit.lower()
for notation in celsius_notations:
if(temp_unit == notation):
return id_temp_celsius
for notation in kelvin_notations:
if(temp_unit == notation):
return id_temp_kelvin
for notation in fahrenheit_notations:
if(temp_unit == notation):
return id_temp_fahrenheit
for notation in rankine_notations:
if(temp_unit == notation):
return id_temp_rankine
for notation in newton_notations:
if(temp_unit == notation):
return id_temp_newton
for notation in delisle_notations:
if(temp_unit == notation):
return id_temp_delisle
for notation in reaumur_notations:
if(temp_unit == notation):
return id_temp_reaumur
for notation in romer_notations:
if(temp_unit == notation):
return id_temp_romer
if args.mode in arg_mode_interactive:
print("Fehler: Keine gültige Einheit")
elif args.mode in arg_mode_non_interactive:
raise ValueError('Keine gültige Einheit')
# prompt user for temperature
# result approprate temperature
# usage:
# possible parameter strings: all of id_temp_*
# may be used with get_temp_unit()
def get_temp(temp_unit):
if temp_unit == id_temp_celsius:
temp_output_unit_input = user_output_celsius
elif temp_unit == id_temp_kelvin:
temp_output_unit_input = user_output_kelvin
elif temp_unit == id_temp_fahrenheit:
temp_output_unit_input = user_output_fahrenheit
elif temp_unit == id_temp_rankine:
temp_output_unit_input = user_output_rankine
elif temp_unit == id_temp_newton:
temp_output_unit_input = user_output_newton
elif temp_unit == id_temp_delisle:
temp_output_unit_input = user_output_delisle
elif temp_unit == id_temp_reaumur:
temp_output_unit_input = user_output_reaumur
elif temp_unit == id_temp_romer:
temp_output_unit_input = user_output_romer
while True:
temp = input(user_prompt_temp_input_first + temp_output_unit_input + user_prompt_temp_input_last)
try:
temp = float(temp)
return temp
except ValueError:
print("Fehler: Du musst eine Temperatur angeben!")
def is_valid_temp(temp_value,temp_input_unit):
if temp_input_unit == id_temp_celsius and temp_value >= temp_celsius_absolute_zero:
return True
elif temp_input_unit == id_temp_kelvin and temp_value >= temp_kelvin_absolute_zero:
return True
elif temp_input_unit == id_temp_fahrenheit and temp_value >= temp_fahrenheit_absolute_zero:
return True
elif temp_input_unit == id_temp_rankine and temp_value >= temp_fahrenheit_absolute_zero:
return True
elif temp_input_unit == id_temp_newton and temp_value >= temp_newton_absolute_zero:
return True
elif temp_input_unit == id_temp_delisle and temp_value <= temp_delisle_absolute_zero:
return True
elif temp_input_unit == id_temp_reaumur and temp_value >= temp_reaumur_absolute_zero:
return True
elif temp_input_unit == id_temp_romer and temp_value >= temp_romer_absolute_zero:
return True
return False
# convert temperatures from one unit to another
# check wikipedia for the math
def temp_celsius_to_kelvin(temp_celsius):
temp_kelvin = temp_celsius + 273.15
return temp_kelvin
def temp_celsius_to_fahrenheit(temp_celsius):
temp_fahrenheit = temp_celsius * 9/5 + 32
return temp_fahrenheit
def temp_celsius_to_rankine(temp_celsius):
temp_rankine = temp_celsius * 1.8 + 491.67
return temp_rankine
def temp_celsius_to_newton(temp_celsius):
temp_newton = temp_celsius * 0.33
return temp_newton
def temp_celsius_to_delisle(temp_celsius):
temp_delisle = (100 - temp_celsius) * 1.5
return temp_delisle
def temp_celsius_to_reaumur(temp_celsius):
temp_reaumur = temp_celsius * 0.8
return temp_reaumur
def temp_celsius_to_romer(temp_celsius):
temp_romer = temp_celsius * 21/40 + 7.5
return temp_romer
def temp_kelvin_to_celsius(temp_kelvin):
temp_celsius = temp_kelvin- 273.15
return temp_celsius
def temp_kelvin_to_fahrenheit(temp_kelvin):
temp_fahrenheit = temp_kelvin * 9/5 - 459.67
return temp_fahrenheit
def temp_kelvin_to_rankine(temp_kelvin):
temp_rankine = temp_kelvin * 9/5
return temp_rankine
def temp_kelvin_to_newton(temp_kelvin):
temp_newton = (temp_kelvin - 273.15) * 0.33
return temp_newton
def temp_kelvin_to_delisle(temp_kelvin):
temp_delisle = (373.15 - temp_kelvin) * 1.5
return temp_delisle
def temp_kelvin_to_reaumur(temp_kelvin):
temp_reaumur = (temp_kelvin - 273.15) * 0.8
return temp_reaumur
def temp_kelvin_to_romer(temp_kelvin):
temp_romer = (temp_kelvin - 273.15) * 21/40 + 7.5
return temp_romer
def temp_fahrenheit_to_celsius(temp_fahrenheit):
temp_celsius = (temp_fahrenheit - 32) * 5/9
return temp_celsius
def temp_fahrenheit_to_kelvin(temp_fahrenheit):
temp_kelvin = (temp_fahrenheit + 459.67) * 5/9
return temp_kelvin
def temp_fahrenheit_to_rankine(temp_fahrenheit):
temp_rankine = temp_fahrenheit + 459.67
return temp_rankine
def temp_fahrenheit_to_newton(temp_fahrenheit):
temp_newton = (temp_fahrenheit - 32) * (11/60)
return temp_newton
def temp_fahrenheit_to_delisle(temp_fahrenheit):
temp_delisle = (212 - temp_fahrenheit) * (5/6)
return temp_delisle
def temp_fahrenheit_to_reaumur(temp_fahrenheit):
temp_reaumur = (temp_fahrenheit - 32) * (4/9)
return temp_reaumur
def temp_fahrenheit_to_romer(temp_fahrenheit):
temp_romer = (temp_fahrenheit - 32) * 7/24 + 7.5
return temp_romer
def temp_rankine_to_celsius(temp_rankine):
temp_celsius = temp_rankine * 5/9 - 273.15
return temp_celsius
def temp_rankine_to_kelvin(temp_rankine):
temp_kelvin = temp_rankine * 5/9
return temp_kelvin
def temp_rankine_to_fahrenheit(temp_rankine):
temp_fahrenheit = temp_rankine - 459.67
return temp_fahrenheit
def temp_rankine_to_newton(temp_rankine):
temp_newton = (temp_rankine - 491.67) * (11/60)
return temp_newton
def temp_rankine_to_delisle(temp_rankine):
temp_delisle = (671.67 - temp_rankine) * (5/6)
return temp_delisle
def temp_rankine_to_reaumur(temp_rankine):
temp_reaumur = temp_rankine * (4/9) - 218.52
return temp_reaumur
def temp_rankine_to_romer(temp_rankine):
temp_romer = (temp_rankine - 491.67) * 7/24 + 7.5
return temp_romer
def temp_newton_to_celsius(temp_newton):
temp_celsius = temp_newton * (100/33)
return temp_celsius
def temp_newton_to_kelvin(temp_newton):
temp_kelvin = temp_newton * (100/33) + 273.15
return temp_kelvin
def temp_newton_to_fahrenheit(temp_newton):
temp_fahrenheit = temp_newton * (60/11) + 32
return temp_fahrenheit
def temp_newton_to_rankine(temp_newton):
temp_rankine = temp_newton * (60/11) + 491.67
return temp_rankine
def temp_newton_to_delisle(temp_newton):
temp_delisle = (33 - temp_newton) * (50/11)
return temp_delisle
def temp_newton_to_reaumur(temp_newton):
temp_reaumur = temp_newton * (80/33)
return temp_reaumur
def temp_newton_to_romer(temp_newton):
temp_romer = temp_newton * 35/22 + 7.5
return temp_romer
def temp_delisle_to_celsius(temp_delisle):
temp_celsius = 100 - temp_delisle * (2/3)
return temp_celsius
def temp_delisle_to_kelvin(temp_delisle):
temp_kelvin = 373.15 - temp_delisle * (2/3)
return temp_kelvin
def temp_delisle_to_fahrenheit(temp_delisle):
temp_fahrenheit = 212 - temp_delisle * 1.2
return temp_fahrenheit
def temp_delisle_to_rankine(temp_delisle):
temp_rankine = 671.67 - temp_delisle * 1.2
return temp_rankine
def temp_delisle_to_newton(temp_delisle):
temp_newton = 33 - temp_delisle * 0.22
return temp_newton
def temp_delisle_to_reaumur(temp_delisle):
temp_reaumur = 80 - temp_delisle * (8/15)
return temp_reaumur
def temp_delisle_to_romer(temp_delisle):
temp_romer = 60 - temp_delisle * 7/20
return temp_romer
def temp_reaumur_to_celsius(temp_reaumur):
temp_celsius = temp_reaumur * 1.25
return temp_celsius
def temp_reaumur_to_kelvin(temp_reaumur):
temp_kelvin = temp_reaumur * 1.25 + 273.15
return temp_kelvin
def temp_reaumur_to_fahrenheit(temp_reaumur):
temp_fahrenheit = temp_reaumur * 2.25 + 32
return temp_fahrenheit
def temp_reaumur_to_rankine(temp_reaumur):
temp_rankine = temp_reaumur * 2.25 + 491.67
return temp_rankine
def temp_reaumur_to_newton(temp_reaumur):
temp_newton = temp_reaumur * (33/80)
return temp_newton
def temp_reaumur_to_delisle(temp_reaumur):
temp_delisle = (80 - temp_reaumur) * 1.875
return temp_delisle
def temp_reaumur_to_romer(temp_reaumur):
temp_romer = temp_reaumur * (21/32) + 7.5
return temp_romer
def temp_romer_to_celsius(temp_romer):
temp_celsius = (temp_romer - 7.5) * 40/21
return temp_celsius
def temp_romer_to_kelvin(temp_romer):
temp_kelvin = (temp_romer - 7.5) * 40/21 + 273.15
return temp_kelvin
def temp_romer_to_fahrenheit(temp_romer):
temp_fahrenheit = (temp_romer - 7.5) * 24/7 + 32
return temp_fahrenheit
def temp_romer_to_rankine(temp_romer):
temp_rankine = (temp_romer - 7.5) * 24/7 + 491.67
return temp_rankine
def temp_romer_to_newton(temp_romer):
temp_newton = (temp_romer - 7.5) * 22/35
return temp_newton
def temp_romer_to_delisle(temp_romer):
temp_delisle = (60 - temp_romer) * 20/7
return temp_delisle
def temp_romer_to_reaumur(temp_romer):
temp_reaumur = (temp_romer - 7.5) * 32/21
return temp_reaumur
def convert_temp(temp_input_unit,temp_output_unit,temp_value):
# call appropriate function to convert temperature and print the result
if temp_input_unit == id_temp_celsius:
if temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_celsius_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_celsius_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_celsius_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_celsius_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_delisle = temp_celsius_to_delisle(temp_value)
print(user_output_temp_output + str(temp_delisle) + user_output_delisle)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_celsius_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_celsius_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_kelvin:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_kelvin_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_kelvin_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_kelvin_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_kelvin_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_delisle = temp_kelvin_to_delisle(temp_value)
print(user_output_temp_output + str(temp_delisle) + user_output_delisle)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_kelvin_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_kelvin_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_fahrenheit:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_fahrenheit_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_fahrenheit_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_fahrenheit_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_fahrenheit_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_delisle = temp_fahrenheit_to_delisle(temp_value)
print(user_output_temp_output + str(temp_delisle) + user_output_delisle)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_fahrenheit_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_fahrenheit_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_rankine:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_rankine_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_rankine_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_rankine_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_rankine_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_delisle = temp_rankine_to_delisle(temp_value)
print(user_output_temp_output + str(temp_delisle) + user_output_delisle)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_rankine_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_rankine_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_newton:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_newton_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_newton_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_newton_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_newton_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_delisle:
temp_delisle = temp_newton_to_delisle(temp_value)
print(user_output_temp_output + str(temp_delisle) + user_output_delisle)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_newton_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_newton_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_delisle:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_delisle_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_delisle_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_delisle_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_delisle_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_delisle_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_reaumur:
temp_reaumur = temp_delisle_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_delisle_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_reaumur:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_reaumur_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_reaumur_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_reaumur_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_reaumur_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_reaumur_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_reaumur = temp_reaumur_to_delisle(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_romer:
temp_romer = temp_reaumur_to_romer(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_romer)
else:
print(user_output_dumb_convert)
elif temp_input_unit == id_temp_romer:
if temp_output_unit == id_temp_celsius:
temp_celsius = temp_romer_to_celsius(temp_value)
print(user_output_temp_output + str(temp_celsius) + user_output_celsius)
elif temp_output_unit == id_temp_kelvin:
temp_kelvin = temp_romer_to_kelvin(temp_value)
print(user_output_temp_output + str(temp_kelvin) + user_output_kelvin)
elif temp_output_unit == id_temp_fahrenheit:
temp_fahrenheit = temp_romer_to_fahrenheit(temp_value)
print(user_output_temp_output + str(temp_fahrenheit) + user_output_fahrenheit)
elif temp_output_unit == id_temp_rankine:
temp_rankine = temp_romer_to_rankine(temp_value)
print(user_output_temp_output + str(temp_rankine) + user_output_rankine)
elif temp_output_unit == id_temp_newton:
temp_newton = temp_romer_to_newton(temp_value)
print(user_output_temp_output + str(temp_newton) + user_output_newton)
elif temp_output_unit == id_temp_delisle:
temp_reaumur = temp_romer_to_delisle(temp_value)
print(user_output_temp_output + str(temp_reaumur)+ user_output_reaumur)
elif temp_output_unit == id_temp_reaumur:
temp_romer = temp_romer_to_reaumur(temp_value)
print(user_output_temp_output + str(temp_romer) + user_output_reaumur)
else:
print(user_output_dumb_convert)
# the magic begins
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=parser_description,epilog=parser_epilog)
parser.add_argument('mode',type=str,help=arg_mode_help)
parser.add_argument('-i','--input_unit',type=str,help=arg_input_unit_help)
parser.add_argument('-o','--output_unit',type=str,help=arg_output_unit_help)
parser.add_argument('-t','--temp_value',type=float,help=arg_temp_value_help)
args = parser.parse_args()
if args.mode in arg_mode_interactive:
# introduce user to script usage
print(welcome_message)
# request user to provide input
temp_input_unit = get_temp_unit('input')
temp_output_unit = get_temp_unit('output')
temp_value = get_temp(temp_input_unit)
if is_valid_temp(temp_value,temp_input_unit):
convert_temp(temp_input_unit,temp_output_unit,temp_value)
else:
print(user_output_invalid_temp_value)
elif args.mode in arg_mode_non_interactive:
if args.input_unit != None and args.output_unit != None and args.temp_value != None:
temp_input_unit = get_temp_unit('input')
temp_output_unit = get_temp_unit('output')
temp_value = args.temp_value
if is_valid_temp(temp_value,temp_input_unit):
convert_temp(temp_input_unit,temp_output_unit,temp_value)
else:
print(user_output_invalid_temp_value)
else:
print('Please supply all needed arguments')
else:
print('Invalid value')