Начнём с восьмеричной СС.
У нас имеется число 3712 в 8-чной СС.
Каждая цифра восьмеричной СС имеет свой двоичный код.
Первая цифра нашего числа - 3.
Она имеет двоичный код 011 в таблице триад.
Далее идёт цифра 7.
Она имеет двоичный код 111.
Затем идёт цифра 1.
Она имеет двоичный код 001.
Ну и в конце цифра 2.
Они имеет двоичный код 010.
Теперь просто записываем двоичный код по порядку.
011111001010. Вот так и получаем наше двоичное число. Первый ноль является незначащим, поэтому его можно не использовать в конечной записи двоичного кода.
Теперь из двоичной в 16-чную СС.
Нам нужно наше двоичное число разбить по 4-кам справа налево.
Получим:
0111 1100 1010
Также как и в таблице триад каждое число имеет свой двоичный код.
0111 = 7
1100 = C
1010 = A
Просто записываем по порядку:
7CA
Не лишу себя удовольствия показать еще одно очень красивое и очень странное решение через словари.
n = int(input())
print({1<=n<=4: "Начальная школа",
5<=n<=9: "Среднее звено",
10<=n<=11: "Старшее звено"}[True])
Здесь мы создаем неименованный словарь, который в качестве ключа использует условное выражение, а в качестве значения - соответствующую этому выражению строку.
Когда мы тут же передаем ему в качестве ключа True, словарь начнет проверять ключи и вернет именно то значение, у которого выражение-ключ было истинным.