ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.12.2023
Просмотров: 405
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
§ 63. Алгоритмы обработки массивов
§ 63. Алгоритмы обработки массивов
Срезы в Python – отрицательные индексы
Особенности работы со списками
Метод пузырька (сортировка обменами)
Быстрая сортировка (QuickSort)
Сортировка в Python – на месте
Преобразования «строка» – «число»
§ 66. Символьные строки
Символьные строки
Начальное значение:
Вывод на экран:
print ( s )
s = "Привет!"
Длина строки:
n = len ( s )
print ( s[5] )
0 | 1 | 2 | 3 | 4 | 5 | 6 |
П | р | и | в | е | т | ! |
s[0] | s[1] | s[2] | s[3] | s[4] | s[5] | s[6] |
Строка – это
последовательность
символов!
!
print ( s[-2] )
s[len(s)-2]
Символьные строки
Ввод с клавиатуры:
s = input ( "Введите имя: " )
Изменение строки:
s[4] = "a"
Строка – это неизменяемый объект!
!
... но можно составить новую строку:
s1 = s + "a"
Символьные строки
s = input( "Введите строку:" )
s1 = "" # строка-результат
for c in s:
if c == "а":
c = "б"
s1 = s1 + c
print ( s1 )
Задача: заменить в строке все буквы "а" на буквы "б".
перебрать все символы в строке
добавить символ к строке-результату
Задачи
«A»: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все буквы «б» на «а» (заглавные на заглавные, строчные на строчные).
Пример:_Введите_строку'>Пример:_Введите_строку:_ааббААББссСС_Результат:_ббааББААссСС__Задачи'>Пример:
Введите строку:
ааббААББссСС
Результат:
ббааББААссСС
Задачи
«B»: Ввести с клавиатуры символьную строку и определить, сколько в ней слов. Словом считается последовательности непробельных символов, отделенная с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Найдено слов: 3
Задачи
«C»: Ввести с клавиатуры символьную строку и найдите самое длинное слово и его длину. Словом считается последовательности непробельных символов, отделенная с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Самое длинное слово: гулять, длина 6
Операции со строками
Объединение (конкатенация) :
s1 = "Привет"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
"Привет, Вася!"
Срезы:
s = "0123456789"
s1 = s[3:8] # "34567"
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
разрезы
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Операции со строками
Срезы:
s = "0123456789"
s1 = s[:8] # "01234567"
от начала строки
s = "0123456789"
s1 = s[3:] # "3456789"
до конца строки
s1 = s[::-1] # "9876543210"
реверс строки
Операции со строками
Срезы с отрицательными индексами:
s = "0123456789"
s1 = s[:-2] # "01234567"
N-2
s = "0123456789"
s1 = s[-6:-2] # "4567"
N-2
N-6
Операции со строками
Вставка:
s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
Удаление:
s = "0123456789"
s1 = s[:3] + s[9:] # "0129"
"012"
"9"
"012ABC3456789"
Стандартные функции
Верхний/нижний регистр:
s = "aAbBcC"
s1 = s.upper() # "AABBCC"
s2 = s.lower() # "aabbcc"
Проверка на цифры:
s = "abc"
print ( s.isdigit() ) # False
s1 = "123"
print ( s1.isdigit() ) # True
… и много других.
Поиск в строках
s = "Здесь был Вася."
n = s.find ( "с" ) # n = 3
if n >= 0:
print ( "Номер символа", n )
else:
print ( "Символ не найден." )
Находит первое слева вхождение подстроки!
!
s = "Здесь был Вася."
n = s.rfind ( "с" ) # n = 12
Поиск с конца строки:
Пример обработки строк
Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:
Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.
Алгоритм:
- найти первый пробел и выделить имя
- удалить имя с пробелом из основной строки
- найти первый пробел и выделить отчество
- удалить отчество с пробелом из основной строки
- «сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…
Алибабаевич Хрюндиков
Хрюндиков
Хрюндиков В.А.
Пример обработки строк
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 )
Пример обработки строк
print ( "Введите имя, отчество и фамилию:" )
s = input()
fio = s.split()
s = fio[2] + " " + fio[0][0] + "." + fio[1][0] + "."
print ( s )
Решение в стиле Python:
Василий Алибабаевич Хрюндиков
fio[2]
fio[1]
fio[0]
Задачи
«A»: Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы.
Пример:
Введите фамилию, имя и отчество:
Иванов Петр Семёнович
П.С. Иванов
Задачи
«B»: Ввести адрес файла и «разобрать» его на части, разделенные знаком "/". Каждую часть вывести в отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2013/Поход/vasya.jpg
C:
Фото
2013
Поход
vasya.jpg
Задачи
«C»: Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.
Пример:
Введите строку:
(X > 0) and (Y < X) and (Z > Y) and (Z <> 5)
Что меняем: and
Чем заменить: &
Результат
(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)
Преобразования «строка» – «число»
Из строки в число:
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"
Задачи
«A»: Напишите программу, которая вычисляет сумму трех чисел, введенную в форме символьной строки. Все числа целые.
Пример:_Введите_выражение:_12+3+45_Ответ:_60_«B»'>Пример:
Введите выражение:
12+3+45
Ответ: 60
«B»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются только знаки «+» или «–»). Выражение вводится как символьная строка, все числа целые.
Пример:
Введите выражение:
12-3+45
Ответ: 54
Задачи
«C»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»). Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление.
Пример:
Введите выражение:
12*3+45
Ответ: 81
Задачи
«D»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/») и круглых скобок. Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление (div).
Пример:
Введите выражение:
2*(3+45)+4
Ответ: 100
Строки в процедурах и функциях
Задача: построить процедуру, которая заменяет в строке