1 of 16

Python для школьников

Занятие 6. «Работа со строками в Python»

Паньгина Н.Н. 2019

2 of 16

Строковые данные в Python

  • Строковые str (‘Строка’, “Текст”)

A + B — конкатенация; 

A * n — повторение n раз, значение n должно быть целого типа. 

Ввод строки

Конкатенация

Умножение строки на число

Вывод строк

3 of 16

Строки в Python

  • Вводится число N. Найти сумму цифр числа.

Строка состоит из последовательности символов (список символов).

Узнать количество символов (длину строки) можно при помощи функции len.

Каждый символ кодируется 8 битами согласно таблице ASCII.

Код символа можно узнать с помощью функции ord, а определить символ по его коду – с помощью функции chr.

  • Вводится строка. Определить количество цифр в строке.
  • Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.

4 of 16

Срезы в Python

Имеется 3 типа срезов:

  1. с одним параметром (S[i] – один символ с номером i, нумерация с 0)
  2. с двумя параметрами (S[n:k] – подстрока с символа n по символ k-1)
  3. с тремя параметрами (S[n:k:h] – подстрока с символа n с шагом h по символ k-1)

Пример 1: S = ‘ИНФОРМАТИКА’

print(S[5]+S[0]+S[9]+S[4]+S[3]+S[1])

Пример 2: print(S[9:11]+S[5]+S[2:5]+S[10])

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Пример 3: S = ‘ПУТЕШЕСТВЕННИК’

print(S[0:10:3]+S[10:14])

5 of 16

Срезы в Python

  • С одним параметром (S[i] – один символ с номером i)

Строка

П

Р

И

В

Е

Т

Индекс

0

1

2

3

4

5

Индекс

-6

-5

-4

-3

-2

-1

Пример 1: S = ‘ИНФОРМАТИКА’

print(S[5]+S[0]+S[9]+S[4]+S[3]+S[1])

print(S[-6]+S[-11]+S[-2]+S[-7]+S[-8]+S[-10])

  • С двумя параметрами (S[n:k] – символы от n до k-1)

Пример 2: s = ‘0123456789’

s1 = s[4:8]

s2 = s[-6:-2] # "4567"

len(s)-2

len(s)-6

s = "0123456789"

s1 = s[:8] # "01234567"

от начала строки

s = "0123456789"

s1 = s[3:] # "3456789"

до конца строки

Срез S[1:] опускает первый символ

Срез S[:-1] удаляет последний символ

Срез S[:] совпадает с самой строкой S

6 of 16

Срезы в Python

  • С тремя параметрами (S[n:k:h] – символы от n до k-1 с шагом h)

Пример 1:

s = "0123456789"

s1 = s[-8:-2:2] # "246"

len(s)-2

len(s)-8

Срез S[::] та же строка S

Срез S[::1]  та же строка  S

Срез S[::-1] переворачивает строку S

Срез S[::-2] переворачивает строку S с шагом -2

Пример 2:

s = "0123456789"

s1 = s[-8:-2:] # "234567"

len(s)-2

len(s)-8

Пример 3:

s = "0123456789"

s1 = s[-8::2] # "2468"

len(s)-2

len(s)-8

Пример 4:

s = "0123456789"

s1 = s[:-2:2] # "0246"

len(s)-2

len(s)-8

7 of 16

Методы для строк в Python

Метод — это функция, применяемая к объекту, в данном случае - к строке. Метод вызывается в виде Имя_объекта.Имя_метода(параметры)

Методы .find и .rfind для поиска подстроки в строке, возвращают номер позиции первого символа подстроки или -1.

s = "Здесь был Вася."

n = s.find ("с") # n = 3

if n >= 0:

print ("Номер символа", n)

else:

print ("Символ не найден")

s = "Здесь был Вася."

n = s.rfind ("с") # n = 12

Ищет от начала строки

Ищет с конца строки

8 of 16

Методы для строк в Python

Для поиска подстроки в строке используются методы .index (ищет первое вхождение) и .rindex (ищет последнее вхождение), возвращают номер позиции первого символа подстроки или генерируют ошибку ValueError.

9 of 16

Методы для строк в Python

Метод .split  разбивает строку на части по разделителю.

Например, если S = “192.168.240.60”, то S.split(‘.’) даст в результате четыре подстроки 192 168 240 60

Метод разделитель .join  собирает строку из списка с разделителем 

  • Определить, какое наибольшее десятичное число входит в IP-адрес.

10 of 16

Задачи на строки

  • Напишите программу, которая выполняет инверсию битов в символьной строке: заменяет в ней все нули на единицы и наоборот.

Входные данные: 10011010

Выходные данные: 01100101

  • Введите битовую строку и дополните её последним битом, который должен быть равен 0, если в исходной строке чётное число единиц, и равен 1, если нечётное (в получившейся строке должно всегда быть чётное число единиц).

Входные данные: 10011010

Выходные данные: 100110100

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

Входные данные: Иванов Петр Глебович

Выходные данные: П.Г. Иванов

  • Ввести адрес файла и «разобрать» его на части, разделенные знаком "/". Каждую часть вывести в отдельной строке.

Входные данные: C:/Фото/2015/Байкал/shaman.jpg

Выходные данные:

C:

Фото

2015

Байкал

shaman.jpg

(для самостоятельного решения)

11 of 16

Методы для строк в Python

Метод .replace  заменяет все вхождения одной строки на другую. Формат: S.replace(old, new) — заменить в строке S все вхождения подстроки old на подстроку new

s = "абракадабра"

s = s.replace ("а", "А")

print (s)

  • Заменить в строке «абракадабра» все буквы «а» на заглавные «А».

Если в методе .replace   задать еще один параметр: �S.replace(old, new, count), то заменены будут не все вхождения, �а только не больше, чем первые count из них. 

s = "абракадабра"

s = s.replace ("а", "А", 3)

print (s)

  • Заменить в строке «абракадабра» три первые буквы «а» на заглавные «А».

12 of 16

Методы для строк в Python

Метод .upper  заменяет все строчные буквы строки на заглавные. Метод .lower  заменяет все заглавные буквы строки на строчные.

s = "АБРАКАДАБРА"

s = s.lower ()

print (s) #"абракадабра"

Метод .isdigit  проверяет строку на цифры: �если True, то строка состоит из одних цифр, если  False, то нет. �Можно проверять на цифры отдельные символы в строке. 

s = input()

if s.isdigit():

print('Строка из цифр')

else:

print('Строка не из цифр')

  • Вводится строка. Проверить, состоит ли строка из одних цифр или нет.

s = "абракадабра"

s = s.upper ()

print (s) #"АБРАКАДАБРА"

13 of 16

Методы для строк в Python

Метод .count   подсчитывает количество вхождений одной строки в другую строку.

Простейшая форма вызова S.count(T)  возвращает число вхождений строки T внутри строки S.

При этом подсчитываются только непересекающиеся вхождения,

например: >>> 'Abracadabra'.count('a') Ответ: 4

>>> ('a' * 100).count('aa') Ответ: 50

При указании трех параметров S.count(T, a, b), будет выполнен подсчет числа вхождений строки T в срез S[a:b].

n = input()

print(n.count('0',len(n)//2,len(n)))

  • Вводится число. Проверить, сколько нулей во второй половине числа �(т.е. в младших разрядах).

14 of 16

Другие методы для строк в Python

Функция или метод

Назначение

S.isalpha()

Состоит ли строка из букв

S.isalnum()

Состоит ли строка из цифр или букв

S.islower()

Состоит ли строка из символов в нижнем регистре

S.isupper()

Состоит ли строка из символов в верхнем регистре

S.istitle()

Начинаются ли слова в строке с заглавной буквы

S.capitalize()

Переводит первый символ строки в верхний регистр, а все остальные в нижний

S.center(width, [fill])

Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)

S.lstrip([chars])

Удаление пробельных символов в начале строки

S.rstrip([chars])

Удаление пробельных символов в конце строки

S.strip([chars])

Удаление пробельных символов в начале и в конце строки

S.swapcase()

Переводит символы нижнего регистра в верхний, а верхнего – в нижний

S.title()

Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний

S.zfill(width)

Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями

S.ljust(width, fillchar=" ")

Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar

S.rjust(width, fillchar=" ")

Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar

15 of 16

Задачи на строки

  • Определить, является ли введенная фраза палиндромом .

Входные данные: Искать такси

Выходные данные: Да

  • Дана строка. Найдите в этой строке самое длинное слово и выведите его.

Входные данные: �Он приедет в вам зимой.

Выходные данные: приедет

  • В шифре Цезаря каждый символ заменяется на другой символ, 3-й по счету в алфавите после данного циклично. То есть символ A заменяется на D, символ B - на E, ..., символ Z на C.

Зашифруйте введенную строку при помощи шифра Цезаря.

Входные данные: I LOVE YOU.

Выходные данные: L ORYH BRX.

  • Ввести сложное предложение, «разобрать» его на слова, избавившись от знаков препинания, отсортировать слова по алфавиту и вывести каждое слово в отдельной строке.

Входные данные: �Я, ты, он, она - вместе целая страна.

Выходные данные:

вместе

он

она

страна

ты

целая

я

(для самостоятельного решения)

16 of 16

СПАСИБО ЗА ВНИМАНИЕ!

Паньгина Нина Николаевна

E-mail: nina_pangina@mail.ru