NESTED IFs: A question was asked recently on Stack Overflow
The solution shown below is readable, scalable, easily edited — and contains no IF statements.
This is similar to the method proposed by Anitoliy R except I use a single string and the split function to simplify editing and scaling.
To illustrate scalability, I add 3 new data types ‘J’, ‘K’, and ‘M’ with added random return values.
PYTHON CODE numeric_types='Hexadecimal Decimal Binary J K M'.split() # H D B J K M conversion_list_2D = [[ 0, 1, 2, 11, 20, 19], [ 4, 0, 6, 28, 10, 30], [ 5, 3, 0, 15, 29, 14], [ 8, 16, 17, 0, 27, 26], [18, 9, 24, 22, 0, 25], [12, 21, 13, 23, 7, 0]] def convert_what(numeral_sys_1, numeral_sys_2): try: q1 = numeric_types.index(numeral_sys_1) q2 = numeric_types.index(numeral_sys_2) return conversion_list_2D[q1][q2] except ValueError: return False # let's try a few tests print(convert_what('Hexadecimal', 'Decimal')) print(convert_what('Hexadecimal', 'Binary')) print(convert_what('Decimal', 'Hexadecimal')) print(convert_what('Decimal', 'Binary')) print(convert_what('Binary', 'Hexadecimal')) print(convert_what('Binary', 'Decimal')) print(convert_what('Binary', 'Q')) print(convert_what('Binary', 'K')) PYTHON OUTPUT 1 2 4 6 5 3 False 29