Системы счисления в питоне
Как перевести число в абсолютно любую систему счисления (например шестеричную) на питоне
По дате
По рейтингу
123456789101112131415161718192021
def from_base(number: tuple, base: int) -> int:
'''Перевод числа из системы исчисления с основанием base'''
return sum([n*base**e for e, n in enumerate(number[::-1]) ])
def to_base(number: int, base: int) -> tuple:
'''Перевод числа в систему исчисления с основанием base'''
result = list()
while number != 0:
number, n = divmod(number, base)
result.append(n)
result.reverse()
return tuple(result)
print(to_base(123, 3)) # перевод числа 123 в троичную систему, результат будет (1, 1, 1, 2, 0), результатом является кортеж, в котором числа обозначают "численное значение цифр", это необходимо т.к. нет например цифры 10, есть число 10 состоящие из цифры 1 в разряде десятков и 0
#если нужна запись числа, то максимум могу дать вот эту функцию, но она будет печатать числа только в системах исчисления, не превышающих 36
def write_num_on_base(number, base):
alphabet = {i:e for i,e in enumerate('0123456789abcdefghijklmnopqrstuvwxyz')}
return ''.join([alphabet[n] for n in to_base(number, base)])
"в абсолютно любую систему счисления"
https://ru.wikipedia.org/wiki/Фунес_памятливый
"
Фунес развлекается тем, что ...составляет собственную систему счисления, где каждое число имеет своё название, «вместо семи тысяч тридцати он сказал бы, например, Максимо Перес; вместо семи тысяч сорока — поезд».
"
Больше по теме