Строки и срезы

Содержание

Слайд 2

Символьные строки Начальное значение: Вывод на экран: print ( s )

Символьные строки

Начальное значение:

Вывод на экран:

print ( s )

s = "Привет!"

Длина строки:

n

= len ( s )

print ( s[5] )

print ( s[-2] )

s[len(s)-2]

Слайд 3

Символьные строки Ввод с клавиатуры: s = input ( "Введите имя:

Символьные строки

Ввод с клавиатуры:

s = input ( "Введите имя: " )

Изменение

строки:

s[4] = "a"

... но можно составить новую строку:

s1 = s + "a"

Слайд 4

Символьные строки s = input( "Введите строку:" ) s1 = ""

Символьные строки

s = input( "Введите строку:" )
s1 = "" # строка-результат
for

c in s:
if c == "а":
c = "б"
s1 = s1 + c
print ( s1 )

Задача: заменить в строке все буквы "а" на буквы "б".

перебрать все символы в строке

добавить символ к строке-результату

Слайд 5

Операции со строками Объединение (конкатенация) : s1 = "Привет" s2 =

Операции со строками

Объединение (конкатенация) :

s1 = "Привет"
s2 = "Вася"
s

= s1 + ", " + s2 + "!"

"Привет, Вася!"

Срезы:

s = "0123456789"
s1 = s[3:8] # "34567"

разрезы

 извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности

Слайд 6

Операции со строками Срезы: s = "0123456789" s1 = s[:8] #

Операции со строками

Срезы:

s = "0123456789"
s1 = s[:8] # "01234567"

от начала

строки

s = "0123456789"
s1 = s[3:] # "3456789"

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

s1 = s[::-1] # "9876543210"

реверс строки

Слайд 7

Операции со строками Срезы с отрицательными индексами: s = "0123456789" s1

Операции со строками

Срезы с отрицательными индексами:

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

"01234567"

N-2

s = "0123456789"
s1 = s[-6:-2] # "4567"

N-2

N-6

Слайд 8

Операции со строками Вставка: s = "0123456789" s1 = s[:3] +

Операции со строками

Вставка:

s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]

Удаление:

s

= "0123456789"
s1 = s[:3] + s[9:] # "0129"

"012"

"9"

"012ABC3456789"

Слайд 9

Стандартные функции Верхний/нижний регистр: s = "aAbBcC" s1 = s.upper() #

Стандартные функции

Верхний/нижний регистр:

s = "aAbBcC"
s1 = s.upper() # "AABBCC"
s2 = s.lower()

# "aabbcc"

Проверка на цифры:

s = "abc"
print ( s.isdigit() ) # False
s1 = "123"
print ( s1.isdigit() ) # True

Слайд 10

Основные функции https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html

Основные функции

https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html

Слайд 11

Поиск в строках s = "Здесь был Вася." n = s.find

Поиск в строках

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

) # n = 3
if n >= 0:
print ( "Номер символа", n )
else:
print ( "Символ не найден." )

s = "Здесь был Вася."
n = s.rfind ( "с" ) # n = 12

Поиск с конца строки:

Слайд 12

Пример обработки строк Задача: Ввести имя, отчество и фамилию. Преобразовать их

Пример обработки строк

Задача: Ввести имя, отчество и фамилию. Преобразовать их к

формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:
Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.

Алгоритм:
найти первый пробел и выделить имя
удалить имя с пробелом из основной строки
найти первый пробел и выделить отчество
удалить отчество с пробелом из основной строки
«сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…

Алибабаевич Хрюндиков

Хрюндиков

Хрюндиков В.А.

Слайд 13

Пример обработки строк print ( "Введите имя, отчество и фамилию:" )

Пример обработки строк

print ( "Введите имя, отчество и фамилию:" )
s =

input()
n = s.find ( " " )
name = s[:n] # вырезать имя
s = s[n+1:]
n = s.find ( " " )
name2 = s[:n] # вырезать отчество
s = s[n+1:] # осталась фамилия
s = s + " " + name[0] + "." + name2[0] + "."
print ( s )
Слайд 14

Пример обработки строк print ( "Введите имя, отчество и фамилию:" )

Пример обработки строк

print ( "Введите имя, отчество и фамилию:" )
s =

input()
fio = s.split()
s = fio[2] + " " + fio[0][0] + "." + fio[1][0] + "."
print ( s )

Решение в стиле Python:

Василий Алибабаевич Хрюндиков

fio[2]

fio[1]

fio[0]

Слайд 15

Преобразования «строка» – «число» Из строки в число: s = "123"

Преобразования «строка» – «число»

Из строки в число:

s = "123"
N =

int ( s ) # N = 123
s = "123.456"
X = float ( s ) # X = 123.456

Из числа в строку:

N = 123
s = str ( N ) # s = "123"
s = "{:5d}".format(N) # s = " 123"
X = 123.456
s = str ( X ) # s = "123.456"
s = "{:7.2f}".format(X) # s = " 123.46"
s = "{:10.2e}".format(X) # s = " 1.23e+02"

Слайд 16

Строки в процедурах и функциях Задача: построить процедуру, которая заменяет в

Строки в процедурах и функциях

Задача: построить процедуру, которая заменяет в строке

s все вхождения слова-образца wOld на слово-замену wNew.

пока слово wOld есть в строке s
удалить слово wOld из строки
вставить на это место слово wNew

wOld: "12"
wNew: "A12B"

зацикливание

Слайд 17

Замена всех экземпляров подстроки

Замена всех экземпляров подстроки

Слайд 18

Замена всех экземпляров подстроки s = "12.12.12" s = replaceAll (

Замена всех экземпляров подстроки

s = "12.12.12"
s = replaceAll ( s, "12",

"A12B" )
print( s )
Слайд 19

Замена всех экземпляров подстроки def replaceAll ( s, wOld, wNew ):

Замена всех экземпляров подстроки

def replaceAll ( s, wOld, wNew ):
lenOld

= len(wOld)
res = ""
while len(s) > 0:
p = s.find ( wOld )
if p < 0:
res = res + s
return
if p > 0: res = res + s[:p]
res = res + wNew
if p+lenOld >= len(s):
s = ""
else:
s = s[p+lenOld:]
return res

добавить слово-замену

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

взять «хвост»

взять начало перед образцом

искать образец

если не нашли

Слайд 20

Замена всех экземпляров подстроки s = "12.12.12" s = s.replace( "12",

Замена всех экземпляров подстроки

s = "12.12.12"
s = s.replace( "12", "A12B" )
print

( s )

Встроенная функция:

Слайд 21

Рекурсивный перебор Задача. В алфавите языка племени «тумба-юмба» четыре буквы: «Ы»,

Рекурсивный перебор

Задача. В алфавите языка племени «тумба-юмба» четыре буквы: «Ы», «Ш»,

«Ч» и «О». Нужно вывести на экран все слова, состоящие из L букв, которые можно построить из букв этого алфавита.

перебор L-1 символов

задача для слов длины К сведена к задаче для слов длины L-1!

Слайд 22

Рекурсивный перебор перебор L символов w[0]="Ы" # перебор последних L-1 символов

Рекурсивный перебор

перебор L символов
w[0]="Ы"
# перебор последних L-1 символов
w[0]="Ш"

# перебор последних L-1 символов
w[0]="Ч"
# перебор последних L-1 символов
w[0]="О"
# перебор последних L-1 символов
Слайд 23

Рекурсивный перебор # основная программа TumbaWords ( "ЫШЧО", "", 3 );

Рекурсивный перебор

# основная программа
TumbaWords ( "ЫШЧО", "", 3 );

def TumbaWords (

A, w, L ):
if len(w) == L:
print ( w )
return
for c in A:
TumbaWords ( A, w + c, L )

нужная длина слова

слово полной длины

по всем символам алфавита

алфавит

слово

Слайд 24

Задачи «A»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш»,

Задачи

«A»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч»

и «О». Нужно вывести на экран все возможные слова, состоящие из K букв, в которых вторая буква «Ы». Подсчитайте количество таких слов.

«B»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран все возможные слова, состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, стоящие рядом. Подсчитайте количество таких слов. Программа не должна строить другие слова, не соответствующие условию.

Слайд 25

Задачи «C»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш»,

Задачи

«C»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч»

и «О». Нужно вывести на экран все возможные слова, состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, не обязательно стоящие рядом. Программа не должна строить другие слова, не соответствующие условию.
Слайд 26

Сравнение строк Сравнение по кодам символов:

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

Сравнение по кодам символов:

Слайд 27

Сравнение строк 5STEAM steam

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

5STEAM < STEAM < Steam < steam 

steam < ПАР < Пар < пАр < пар < парк

Слайд 28

Сортировка строк aS = [] # пустой список строк print (

Сортировка строк

aS = [] # пустой список строк
print ( "Введите

строки для сортировки:" )
while True:
s1 = input()
if s1 == "": break
aS.append ( s1 ) # добавить строку в список
aS.sort() # сортировка
print ( aS )
Слайд 29

Задачи «A»: Вводится 5 строк, в которых сначала записан порядковый номер

Задачи

«A»: Вводится 5 строк, в которых сначала записан порядковый номер строки

с точкой, а затем – слово. Вывести слова в алфавитном порядке.
Пример:
Введите 5 строк:
1. тепловоз
2. арбуз
3. бурундук
4. кефир
5. урядник
Список слов в алфавитном порядке:
арбуз, бурундук, кефир, тепловоз, урядник
Слайд 30

Задачи «B»: Вводится несколько строк (не более 20), в которых сначала

Задачи

«B»: Вводится несколько строк (не более 20), в которых сначала записан

порядковый номер строки с точкой, а затем – слово. Ввод заканчивается пустой строкой. Вывести введённые слова в алфавитном порядке.
Пример:
Введите слова:
1. тепловоз
2. арбуз
Список слов в алфавитном порядке:
арбуз, тепловоз