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

Перевести все числа в строке в двоичную систему счисления

13.11.2017, 21:31. Показов 15039. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На планете Роботов очень не любят десятичную систему счисления, поэтому они попросили Вас написать программу, которая заменяет все встречающиеся в тексте числа на эти же числа, но в двоичной системе счисления.

Входные данные
Единственная строка, состоящая из любых символов. Длина строки не превышает 255 символов. Гарантируется, что во всех числах нет ведущих нулей.

Выходные данные
Выведите преобразованную строку.

Примеры:

входные данные
6^&678JKjdkdl;?.,lk879Pk1kdfl4839
выходные данные
110^&1010100110JKjdkdl;?.,lk1101101111Pk 1kdfl1001011100111

Мой плод трехдневных размышлений над этой простой олимпиадной задачкой:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def binary_number(digit): # функция переводит из десятичной в двоичную систему
    binary = ''
    while digit > 0:
        if digit % 2 == 0:
            binary += '0'
            digit /= 2
        else:
            binary += '1'
            digit = (digit - 1) / 2
    binary = list(binary)
    binary.reverse()
    binary = ''.join(binary)
    return int(binary)
 
string = input()
new_string = ''
number = ''
index = 0 
 
for symbol in string:   # перебираем все символы в строке
    if symbol.isdigit():  # если символ - цифра, то добавляем его в число, которое отправим на перевод в двоичное
        number += symbol
        index += 1 # шагаем по индексам с целью обнаружить, если дошли до конца строки
        if index == len(string): # если вся строка кончается цифрой, то блок elif не выполняется, поэтому нужна эта проверка.
            new_string += str(binary_number(int(number)))
            number = ''
    elif number != '': # как только встретился символ не цифра, а число закончилось, то отправляем его в функцию
        new_string += str(binary_number(int(number)))
        number = ''
        new_string += symbol
        index += 1
    else: # если символ - не цифра и предыдущий символ тоже не цифра
        new_string += symbol
        index += 1
print(new_string)
Всё равно проходит лишь 15 тестов из 20, даже представить не могу, где ошибся. Помогите пожалуйста!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2017, 21:31
Ответы с готовыми решениями:

Перевести данное число в двоичную систему счисления и вывести числа, в которых чередуются 1 и 0
Вводится число в десятичной СС (от 1 до n), необходимо перевести данное число в двоичную СС и вывести числа, в которых чередуются 1 и...

Перевести числа в двоичную систему счисления и представить их в прямом обратном и дополнительном кодах
Перевести числа X и Y в двоичную систему счисления, представь их в прямом, обратном и дополнительном кодах. Сложить в дополнительном коде....

Перевести десятичные числа в двоичную систему счисления и записать их в форме с фиксированной запятой
Перевести десятичные числа в двоичную систему счисления и записать их в форме с фиксированной запятой в прямом, обратном и дополнительном...

4
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
13.11.2017, 22:30
вы переводите числа в диапазоне 0-9, а скажем в диапазоне 0 - 1000?
и зачем так корячиться?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> for i in range(0,10001,1000): print (i,bin(i))
 
0 0b0
1000 0b1111101000
2000 0b11111010000
3000 0b101110111000
4000 0b111110100000
5000 0b1001110001000
6000 0b1011101110000
7000 0b1101101011000
8000 0b1111101000000
9000 0b10001100101000
10000 0b10011100010000
>>>
Добавлено через 24 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def f(s):
    out = ''
    tmp = ''
    flag = False
    for i in s:
        if i.isdigit(): flag = True
        else:
            flag = False
            if tmp:
                out += bin(int(tmp))[2:]
                tmp = ''
        if not flag: out += i
        else: tmp += i
    return out
>>> f('qwerty')
'qwerty'
>>> f('qw1234 678 a890erty')
'qw10011010010 1010100110 a1101111010erty'
>>>
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
14.11.2017, 00:02
Лучший ответ Сообщение было отмечено Николай Аспаров как решение

Решение

И это - олимпиадная задача?
Пара минут на обдумывание и вот:
Python
1
2
3
4
5
6
7
8
import re
 
def tobinary(m):
    return '{0:b}'.format(int(m.group(0)))
 
s ="6^&678JKjdkdl;?.,lk879Pk1kdfl4839"    
result = re.sub(r"\d+", tobinary, s)
print(result)  #110^&1010100110JKjdkdl;?.,lk1101101111Pk1kdfl1001011100111
P.S. Куда можно подать заявку? Я тоже хочу на такую параолимпиаду.
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 2
14.11.2017, 18:17  [ТС]
vic5710
Спасибо за попытку помочь, но Ваше решение прошло лишь 7 тестов(

Garry Galler
Я совсем зелёный, решаю примитивные задачки на informatics.mccme.ru

Ваше решение прошло все тесты, но я ещё не умею толком работать с модулями и о некоторых методах из Вашего решения тоже ещё знаю. Но спасибо! Попробую разобраться в Вашем решении.
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
14.11.2017, 18:21
Цитата Сообщение от Николай Аспаров Посмотреть сообщение
Спасибо за попытку помочь, но Ваше решение прошло лишь 7 тестов(
там ошибка
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def f(s):
    out = ''
    tmp = ''
    flag = False
    for i in s:
        if i.isdigit(): flag = True
        else:
            flag = False
            if tmp:
                out += bin(int(tmp))[2:]
                tmp = ''
        if not flag: out += i
        else: tmp += i
    if tmp: out += bin(int(tmp))[2:]
    return out
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2017, 18:21
Помогаю со студенческими работами здесь

Перевести число в двоичную систему счисления. Посчитать количество единиц в двоичной записи числа i
Перевести число в двоичную систему счисления. Посчитать количество единиц в двоичной записи числа i. Написать программу на паскаль...

Как перевести из шестнадцатиричной системы счисления в двоичную систему счисления
не могу понять как правильно надо это сделать ?? простым подбором не интересно

Перевести целое число из десятичной системы счисления в двоичную систему счисления, используя алгоритм деления
Помогите пожалуйста сделать задание: Перевести целое число из десятичной системы счисления в двоичную систему счисления, используя алгоритм...

Перевести целое число из десятичной системы счисления в двоичную систему счисления, используя алгоритм деления на 2
"Перевести целое число из десятичной системы счисления в двоичную систему счисления, используя алгоритм деления на 2". Помогите,...

Перевести маткад в двоичную систему счисления
какой функцией можно это сделать-вычисляю матрицы в двоичной системе


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru