С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24

Перевод чисел в разные сс без перевода в 10

25.09.2021, 19:07. Показов 5049. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такая:
Нужно написать функцию перевода числа из системы счисления 9 в систему счисления 3
3 и 9 это родственные системы счисления
на бумаге я знаю что каждая цифра в 9 это 2 цифры(так как 3**2=9) в 3
но вот как перевести программой
НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ:
перевод в 10
int()
bin()
hex()
oct()
да)) вот так вот много ограничений
надеюсь найдется человек который поможет
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2021, 19:07
Ответы с готовыми решениями:

Перевод из 16-й в 2-ю без перевода в 10-ю
Помогите пожалуйста написать процедуру в паскале перевода из 16-й системы в 2-ю без перевода в 10-ю

Написать программу перевода чисел в разные с.с
Написать программу, которая переводит вещественное число в какой либо с.с. (от 2 с.с. до 16 с.с.), в любую другую с.с. (от 2 с.с. до 16...

Перевод числа из 8-й системы счисления в 2-ю без перевода в 10-ю
нужно написать две программы в с++ 1) Написать программу, которая переводит число из 8-й сис*те*мы счисления в 2-ю, не переводя все...

11
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 19:41
По запросу в гугл "перевод из одной системы счисления в другую python", по первой же ссылке было найдено готовое решение.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def convert_base(num, to_base=10, from_base=10):
    # first convert to decimal number
    if isinstance(num, str):
        n = int(num, from_base)
    else:
        n = int(num)
    # now convert decimal to 'to_base' base
    alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    if n < to_base:
        return alphabet[n]
    else:
        return convert_base(n // to_base, to_base) + alphabet[n % to_base]
Добавлено через 1 минуту
Да и тут на форуме не одна тема с данным вопросом. Меняются только основания систем счисления.

Добавлено через 9 минут
Python
1
2
3
4
5
6
7
8
def converter93(n: int) -> str: 
    s = ''
    h = '012'
    while n > 0:
        s = h[n % 3] + s
        n = n // 3
    
    return s if s else '0'
Вот решение под конкретную задачу. Из системы с основанием 9 в систему с основанием 3.
0
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24
25.09.2021, 19:42  [ТС]
спасибо конечно, что постарался и открыл первую ссылку, но мог не напрягаться, ведь я четко написала БЕЗ ПЕРЕВОДА В ДЕСЯТИЧНУЮ БЕЗ int()
но ты молодец конечно что ткнул меня носом в первую ссылку
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
25.09.2021, 20:20
vakkrehevn, вроде так
Python
1
2
3
4
5
6
7
8
9
10
11
12
def num9_to_num3(dig):
    base9 = list('012345678')
    b3 = '000102101112202122'
    base3 = [b3[i:i+2] for i in range(0,18,2)]
    
    res = ''
    for s in dig[::-1]:
        res += base3[base9.index(s)][::-1]
        
    return res[::-1]
 
print(num9_to_num3('54321234'))
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 20:29
Лучший ответ Сообщение было отмечено vakkrehevn как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
def convert93(n) -> str:
    x = 0
    res = ''
    digits = '012'
    for i in range(len(str(n))):
        x = n % 10
        n = n // 10
        for i in range(2):
            res = digits[x % 3] + res
            x = x // 3
    return res
0
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 24
25.09.2021, 20:33  [ТС]
да вот теперь
спасибо рациональный способ
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 20:35
vakkrehevn, Если что, у меня на входе число а не строка.
Число в котором запрещено использовать "9", т.к. система девятеричная.
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
25.09.2021, 20:46
vakkrehevn, а как (в каком типе данных) подается переменная "n" в функцию? (Чтобы потом её можно //10 и %10)

Добавлено через 8 минут
Кликните здесь для просмотра всего текста
так короче
Python
1
2
3
4
5
6
7
8
9
10
11
12
def num9_to_num3(dig):
    base9 = list('012345678')
    b3 = '00 01 02 10 11 12 20 21 22'.split()
    
    res = ''
    for s in dig:
        res += base3[base9.index(s)]
        
    return res.strip('0')
    
 
print(num9_to_num3(input()))
1
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 21:13
Цитата Сообщение от Gdez Посмотреть сообщение
а как (в каком типе данных) подается переменная "n" в функцию?
Передается число, переменная типа int. На него наложено ограничение, оно не должно содержать цифру "9", чтобы внешне походить на число из девятеричной системы счисления.

Добавлено через 2 минуты
Цитата Сообщение от Gdez Посмотреть сообщение
Чтобы потом её можно //10 и %10
Тут эти операции используются для того, чтобы "попилить" число на цифры. Т.к. объяснить питону, что число девятеричное не получится. Соответственно вместо логически правильных для девятеричного числа //9 и %9 используем "10".

Добавлено через 20 минут
Вот еще вариант. На входе число (с вышеописанными ограничениями, без девяток). На выходе тоже число.

Python
1
2
3
4
5
6
7
8
9
def convert93int(n: int) -> int:
    res = 0
    for i in range(len(str(n))):
        x = n % 10
        n = n // 10
        for j in range(2):
            res = res + (x % 3) * 10 ** (i * 2 + j ) 
            x = x // 3
    return res
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
25.09.2021, 21:42
anton78spb, если я правильно понял условие - int нельзя использовать, а на вход в функцию подается строка - число в девятеричной СС (оно int по определению не может быть)
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
25.09.2021, 22:50
Gdez, Я понял это по другому. Нельзя использовать int() как функцию, для преобразования в десятичную систему счисления. Так же как и функции hex(), bin(), oct(), преобразующие в другие систему счисления.
А вообще int-ом пользоваться можно.
Но ваш вариант str -> str офигенно элегантный
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
26.09.2021, 08:28
Гибридный вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def conv93(n):
    r=0
    p=1
    digs=[0,1,2,10,11,12,20,21,22]
    while(n>0):
       k=n%10
       print(k,r)
       r=r+digs[k]*p
       p=p*100
       n=n//10
    return r
    
print(conv93(17))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2021, 08:28
Помогаю со студенческими работами здесь

Калькулятор с функцией перевода чисел в разные системы счисления
Помогите составить правильно программу. Мне нужно сделать калькулятор который будет переводить числа из одной сис. счисл. в другую. Сам...

Перевод чисел в разные СС
Здраствуйте! Я студент Алматинского Авто-Дорожного Колледжа! У мена начались сессии по всем предметам! Но на все время не хвотает! ...

Перевод чисел в разные сс C++ Bulder
Здравствуйте прошу помощи в дополнении программы: В программе работает все кроме перевода чисел с 2 сс. Помогите пожалуйста дописать...

Перевод чисел в разные системы счисления
Как заменить цифры от 10 буквами ABCDEFGHIJKLMNOP......... #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;list&gt; ...

Перевод чисел в разные системы исчисления
Доброе утро форомчане, можете пожалуйста написать программу в windows form,программа должна содержать 3 текст бокса,каждый это своя система...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru