04.11.2024

Срезы строк в Питоне

Для решения задач частенько требуются строки и умение их обрабатывать. В этой публикации покажем некоторые примеры работы со строками с использованием срезов.

Строка в Питоне

Последовательность символов, заключенная в апострофы '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

Как будем решать задачу

  1. Введем число n
  2. Переведем число n  в двоичную систему функцией bin(), получим строку s
    s = bin(n)
    для n = 44 получим s = '0b101100'
  3. Возьмем срез s[2:], избавимся от первых двух знаков '0b' 
    s = s[2:]
  4. Перевернем запись срезом s[::-1]
  5. Найдем в перевернутой строке позицию первой единицы методом s.find('1')
    pos = s.find('1')
  6. Возьмем срез с найденной позиции до конца строки
    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'):]