Для решения задач частенько требуются строки и умение их обрабатывать. В этой публикации покажем некоторые примеры работы со строками с использованием срезов.
Что такое строка в Python
Последовательность символов, заключенная в апострофы 'HELLO'
s = 'HELLO'
Нумерация символов в строке ведется с 0.
Обращение к символу строки (индексация)
s = 'HELLO'
s[0] # символ 'H'
s[1] # символ 'E'
s[-1] #последний символ 'O'
s[-2] #предпоследний символ 'L'
Срезы строк (части строки) в Python
строка[нач_поз: кон_поз: шаг]
Важно: символ с индексом кон_поз не включается в результат.
Рассмотрим строку s = '0123456789' и различные варианты срезов:
| Срез | Результат | Пояснение |
|---|---|---|
s[0:9] | 012345678 | Символы с индексами от 0 до 8 (9 не вкл.) |
s[1:] | 123456789 | Если не указать конец, срез идет до конца строки. |
s[:7] | 0123456 | Если не указать начало, срез идет от начала строки. |
s[1:8:2] | 1357 | Берем каждый второй символ (шаг 2) с индекса 1 по 7. |
s[::-1] | 9876543210 | Отрицательный шаг переворачивает строку (реверс). |
Решение практической задачи: двоичная запись числа
Задача. Вводится натуральное число. Записать это число в двоичной системе счисления, перевернуть и отбросить ведущие нули.
Пример:
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'):]
Комментариев нет:
Отправить комментарий