10,1 тыс подписчиков
🖥 Почему 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)
Около минуты
17 февраля 2023
1416 читали