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