Для решения задач частенько требуются строки и умение их обрабатывать. В этой публикации покажем некоторые примеры работы со строками с использованием срезов.
Строка в Питоне
Последовательность символов, заключенная в апострофы 'HELLO'
s = 'HELLO'
Нумерация символов в строке ведется с 0.
Обращение к символу строки
s = 'HELLO'
s[0] # символ 'H'
s[1] # символ 'E'
s[-1] #последний символ 'O'
s[-2] #предпоследний символ 'L'
Срезы строк (части строки)
строка[нач_поз: кон_поз: шаг] # конечная позиция не включается
s = '0123456789'
a = s[0:9] # a = '012345678'
a = s[1:] # a = '123456789' если конечную позицию опускаем, то берется срез до конца строки
a = s[:7] # a = '0123456' если начальную позицию опускаем, то берется срез от начала строки
a = s[1:8:2] # a = '1357'
a = [::-1] # a = '9876543210' берем всю строку с шагом -1, переворачиваем строку
Задача. Вводится натуральное число. Записать это число в двоичной системе счисления, перевернуть и отбросить ведущие нули.
Пример:
N = 4410 = 1011002
Перевернутая двоичная запись: 001101
Двоичная запись без ведущих нулей: 1101
Как будем решать задачу
- Введем число n
- Переведем число n в двоичную систему функцией bin(), получим строку s
s = bin(n)
для n = 44 получим s = '0b101100' - Возьмем срез s[2:], избавимся от первых двух знаков '0b'
s = s[2:] - Перевернем запись срезом s[::-1]
- Найдем в перевернутой строке позицию первой единицы методом s.find('1')
pos = s.find('1') - Возьмем срез с найденной позиции до конца строки
s = s[pos:]
Программа решения задачи на языке Python
n = int(input('Введи натуральное число: '))
s = bin(n)
s = s[2:]
s = s[::-1]
pos = s.find('1')
s = s[pos:]
print(s)
Результат запуска программы
Введи натуральное число: 100
10011
Покороче
s = bin(n)[2:][::-1]
s = s[s.find('1'):]