🖥 Почему Python не работает с системами счисления, основания которых превышают 36?



Потому что Python не "знает" цифр больше 35. Первые десять берутся из обычной десятичной: 0...9, следующие 26 — буквы латиницы a...z. Так исторически сложилось ещё полвека назад. А какой символ по вашему он должен использовать для цифры 36?



Кcтати, а разве бывает позиционная система счисления с основанием 0? Почему её Python разрешает?



0 используется как специальное значение, означающее автоматическое определение основания системы счисления по формату строки. int("10", 0) == 10, int("0x10", 0) == 16, int("0b10", 0) == 2.



Если же основание системы счисления не указано, то считается равным 10.



Чтобы работать с числами в системе счисления больше 36, можно воспользоваться библиотекой intlib.



from intlib import Int



n = 12345

base = 37

n_base_37 = Int(n).to_base(base)




Также в intlib есть метод from_base(), который можно использовать для перевода числа из другой системы счисления в 10-ую:



from intlib import Int



n_base_37 = "a1b2c3d4e5"

base = 37

n = Int(n_base_37, base=base)




@python_job_interview