Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Системы счисления в питоне

Писель керсиков Ученик (193), на голосовании 2 года назад
Как перевести число в абсолютно любую систему счисления (например шестеричную) на питоне
Голосование за лучший ответ
Молот Шотландцев Высший разум (301056) 2 года назад
int([object], [основание системы счисления]) - преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
bin(x) - преобразование целого числа в двоичную строку.
hex(х) - преобразование целого числа в шестнадцатеричную строку.
oct(х) - преобразование целого числа в восьмеричную строку.
Никита ШагинУченик (112) 7 месяцев назад
Спасибо тебе прям помог,я в восмеричную систему счисления переводил делил и остаток потом делил ,короче на целую страницу код выходит,спасибо большое!!!
Aleks Nots Просветленный (23728) 2 года назад
"в абсолютно любую систему счисления"

https://ru.wikipedia.org/wiki/Фунес_памятливый
"
Фунес развлекается тем, что ...составляет собственную систему счисления, где каждое число имеет своё название, «вместо семи тысяч тридцати он сказал бы, например, Максимо Перес; вместо семи тысяч сорока — поезд».
"
Никита Паничев Знаток (279) 1 год назад
 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)])
Похожие вопросы