Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Современные средства разработки программного обеспечения. Учебное пособие
.pdf
121
'Algiers': 12.8
}
warm_cities = {city: temp for city, temp in avg_temps.items() if
temp > 25}
print(warm_cities)
Вывод:
{'Havana': 25.2, 'Dubai': 26.9}
8.3 Лабораторная работа
Цель и задания
Цель. Изучить, как в языке Python представлены словари; действия со слова-
рями: создание словарей в Python, удаление и добавление элементов, методы словарей, операции соединения и повторения.
Задания
Разработать программное средство для реализации задачи:
1 Создайте словарь согласно индивидуальному варианту набора данных в
виде пар «ключ:значения» с количеством элементов не менее 5-ти. Поменяйте местами первый и последний элемент словаря. Удалите третий элемент. Добавьте в словарь ключ «new_key» со значением «new_value». Выведите на печать итоговый словарь. Важно, чтобы словарь остался тем же (т.е. имел тот же адрес в памяти).
8.3.1 Порядок выполнения лабораторной работы
1 Ознакомиться с целью, задачами, содержанием лабораторной работы, об-
щими методическими указаниями к выполнению.
2 Изучить средства работы со словарями.
3 Подготовить исходные данные к работе.
4 В системе Visual Studio Code или PyСharm выполнить практические задания
согласно варианту, вариант выбирается по номеру списка студентов в группе.
5 Оформить отчет.

122
8.3.2 Индивидуальные варианты заданий к лабораторной работе
1 Варианты индивидуальных наборов данных для работы со словарями
1 Об игроках:
Имя игрока (д.б. уникальное) и параметры игрока (2-3 параметра в виде: наименование и значение)
2 Об экзаменах:
№; Фамилия студента и его оценки по предметам (2-3 предмета: наименование
предмета и оценка)
3 Об изучаемых предметах в семестре:
№; наименование семестра; информация по предметам (2-3 предмета: наимено-
вание предмета ; количество зачетных единиц)
4 Информация о назначении лекарств:
№; наименование диагноза; перечень назначенных лекарств (2-3 лекарства:
наименование лекарства : количество таблеток в день)
5 Телефонный справочник
№; Фамилия абонента; перечень его номеров телефонов (2-3 номера телефона:
наименование номера телефона и значение номера телефона)
6 Афиша киносеансов
Дата; Кинозал; информация о сеансах фильмов (2-3 фильма: наименование
фильма и время начала)
7 Русско-английский словарь
Слово на английском, вид, слова на русском (написание и форма речи)
8 Данные о мероприятиях на каникулы:
Дата; информация о мероприятиях на эту дату (2 -3 мероприятия: наименование
мероприятия и время начала)
9 Данные о маршрутах в городском парке автобусов
Номер маршрута, сведения о автобусах на маршруте (2-3 автобуса: госномер
автобуса, водитель)

123
10 План работ участка производства на неделю
Дата, информация о работах на эту дату (2-3 работы: наименование работ,
объем в часах)
11 Расписание уроков учителей на неделю
№ ФИО учителя, уроки на неделю (день, время урока, урок, кабинет).
12 Отчет об опубликованных научных работах сотрудников
Фамилия, информация о работах (2-3 работы: вид работы, наименование, дата
публикации работы)
13 Данные о серверах:
№, название сервера и параметры сервера (2-3 параметра в виде: наименование
и значение). Примеры параметров: "host": "127.0.0.1", "port": "22"
14 Данные о действиях пользователя в компьютерной системе:
Логин пользователя, действия (дата+время действия, действие)
15 Выездные выставки музея:
Дата начала, наименование выставки, места выставки (город, длительность выставки)
16 Данные о сотрудниках:
№, ФИО, характеристики (наименование характеристики, значение характеристики)
17 Данные о предоставленных услугах в салоне:
Дата, фамилия клиента, предоставленные услуги (наименование услуги, стоимость услуги)
18 Данные о ремонте автомобиля в сервисе:
№ заказа, госномер автомобиля, работы по ремонту (наименование работы, стоимость)
19 Данные о затратах на стройматериалы для ремонта квартиры:
№ заказа, адрес квартиры, материалы (наименование материала, стоимость, количество)
20 Данные о лошадях в конюшне:

124
№, кличка и характеристики (2-3 характеристики в виде: наименование и значение). Примеры параметров: "возраст": 12, "порода": "Рысак", "окрас": "черный"
8.4 Контрольные вопросы
1 Что представляют собой словари в Python?
2 Какой тип данных в словаре могут иметь значения?
3 Как можно создать словарь?
4 Допускают ли словари наличие нескольких элементов с одинаковыми клю-
чами?
5 Какими способами можно получить доступ к элементам словаря?
6 Как можно выполнить добавление элемента в словарь?
7 Какими способами можно скопировать словарь?
8 Что означает вложенность словаря?
9 Приведите базовую форму для генерации словаря.

125
9 Строки и регулярные выражения
9.1 Понятие строк в Python
В Python строка представляет собой неизменяемую последовательность символов юникода. Строки заключают либо в одинарные кавычки (‘), либо в двойные кавычки ("). Также используют тройные пары одинарных или двойных кавычек.
Python предоставляет богатый набор встроенных функций и методов для управления строками и их преобразования [36].
Пример. Создание строки на Python:
my_string = "Hello, World!"
Так как строки представляют собой последовательности символов, то это означает, что можно использовать индексную или срезную нотацию, аналогично спискам.
>>> x = "Python"
>>> x[0]
'P'
>>> x[-1]
'n'
>>> x[1:]
'ython '
Можно определить, сколько символов в строке, используя функцию len, точно
так же, как определить количество элементов в списке:
>>> len("Python")
6
9.2 Основные строковые методы и операции
В данном учебном пособии будут рассмотрены некоторые из наиболее часто
используемых строковых методов Python.
1) capitalize()

126
Метод capitalize() возвращает новую строку, первый символ которой написан
заглавной буквой, а остальные – строчными буквами.
text = "python is awesome!"
capitalized_text = text.capitalize()
print(capitalized_text) # Output: "Python is awesome!"
2) lower() и upper()
Метод lower()преобразует все символы в строке в нижний регистр, в то время
как метод upper() преобразует их в верхний регистр.
text = "PyTHoN Is AweSoMe!"
lowercase_text = text.lower()
uppercase_text = text.upper()
print(lowercase_text) # Output: "python is awesome!"
print(uppercase_text) # Output: "PYTHON IS AWESOME!"
3) strip()
Метод strip() удаляет из строки начальные и конечные пробельные символы.
text = " Hello, World! "
stripped_text = text.strip()
print(stripped_text) # Output: "Hello, World!"
4) split()
Метод split() разбивает строку на список подстрок на основе указанного разделителя. Если разделитель не указан, он разбивается на пробелы.
text = "apple,banana,cherry"
fruits = text.split(",")
print(fruits) # Output: [‘apple‘, ‘banana‘, ‘cherry‘]
5) join()
Метод join() противоположна split(). Она объединяет список строк в одну
строку, используя указанный разделитель.
fruits = [‘apple‘, ‘banana‘, ‘cherry‘]
text = ", ".join(fruits)
print(text) # Output: "apple, banana, cherry"
6) replace()
Метод replace() заменяет все вхождения подстроки на другую подстроку.
text = "Hello, World!"

127
new_text = text.replace("World", "Python")
print(new_text) # Output: "Hello, Python!"
7) find()
Метод find() выполняет поиск подстроки в строке и возвращает индекс первого
вхождения. Если подстрока не найдена, возвращается значение -1.
text = "Hello, World!"
index = text.find("World")
print(index) # Output: 7
8) count()
Метод count() возвращает количество вхождений подстроки в строку.
text = "banana"
count = text.count("a")
print(count) # Output: 3
9) startswith() и endswith()
Методы startswith() и endswith() проверяют, начинается ли строка или заканчивается указанной подстрокой соответственно. Они возвращают логическое значение.
text = "Hello, World!"
print(text.startswith("Hello")) # Output: True
print(text.endswith("Python")) # Output: False
10) isalpha(), isdigit() и isalnum()
Метод isalpha() проверяет, все ли символы в строке являются буквенными. Метод isdigit() проверяет, все ли символы являются цифрами. Метод isalnum() проверяет, все ли символы являются буквенно-цифровыми.
text1 = "HelloWorld"
text2 = "123"
text3 = "Hello123"
print(text1.isalpha()) # Output: True
print(text2.isdigit()) # Output: True
print(text3.isalnum()) # Output: True
Расширенное форматирование строк

128
Python предлагает несколько способов форматирования строк. Одним из наиболее кратких и удобочитаемых подходов является использование f-строк, введенных в
Python 3.6.
name = "Alice"
age = 25
print(f"My name is {name} and I‘m {age} years old.")
F-строки позволяют встраивать выражения внутри строковых литералов, добавляя к строке префикс ‘f‘ и заключая выражения в фигурные скобки {}.
Нарезка строк и индексация
Python позволяет получать доступ к подстрокам с помощью среза и индексации.
Срез позволяет извлекать часть строки, указывая диапазон индексов.
text = "Hello, World!"
substring = text[7:12]
print(substring) # Output: "World"
Индексирование позволяет получить доступ к отдельным символам строки, используя их положение. В Python индексы начинаются с 0.
text = "Hello, World!"
first_char = text[0]
last_char = text[-1]
print(first_char) # Output: "H"
print(last_char) # Output: "!"
Объединение и повторение строк
Строки могут быть объединены с помощью оператора + и повторены с помощью оператора * .
text1 = "Hello"
text2 = "World"
concatenated = text1 + ", " + text2
repeated = text1 * 3
print(concatenated) # Output: "Hello, World"
print(repeated) # Output: "HelloHelloHello"
Перебор строк
Вы можете перебирать символы строки с помощью цикла for.
text = "Python"

129
for char in text:
print(char)
Результат:
P
y
t
h
o
n
Экранирующие символы
Чтобы включить в строку специальные символы, такие как кавычки или обратная косая черта, вам нужно экранировать их с помощью обратной косой черты .
text = "She said, \"Hello!\""
print(text) # Output: She said, "Hello!"
Кодирование и декодирование строк
Python предоставляет методы для кодирования строк в байты и декодирования
байтов обратно в строки с использованием различных кодировок символов.
text = "Hello, World!"
encoded = text.encode("utf-8")
decoded = encoded.decode("utf-8")
print(encoded) # Output: b‘Hello, World!‘
print(decoded) # Output: "Hello, World!"
Рекомендации по производительности
При работе со строками на Python помните о следующих рекомендациях производительности:
1 По возможности предпочитать строковые методы ручному манипулированию строками.
2 Использовать методы форматирования строк, такие как f-strings, для лучшей
читаемости и производительности.
3 Помнить о неизменяемости строк. Избегать чрезмерного объединения
строк, поскольку это может привести к проблемам с производительностью. Вместо

130
этого лучше рассмотреть возможность использования списка и объединения элементов в конце.
4 При выполнении операций с несколькими строками рассмотреть возможность использования выражения генератора или понимания списка, чтобы избежать
создания промежуточных строк.
9.3 Регулярные выражения
Регулярные выражения (РВ), также называемые шаблонами регулярных выражений по сути представляют собой крошечный узкоспециализированный язык программирования, встроенный в Python и доступный через re модуль.
Концепцию регулярного языка языка описал математик Стивен Коул Клини
ещё в 1951 году. Регулярный язык распознается конечным автоматом и формально
выражается с помощью регулярных выражений [37].
В Python шаблоны регулярных выражений компилируются в серию байт-кодов,
которые затем выполняются соответствующим движком, написанным на C [38].
Сопоставление строк – обычная задача в программировании, и можно многого
добиться с помощью строковых операторов и методов. Однако регулярные выраже-
ния предоставляют более сложные возможности сопоставления строк с образцом.
Кроме того, регулярные выражения играют важную роль в извлечении информации из текста, такого как файлы журналов, электронные таблицы или даже текстовые документы Regular Expression in Python [39].
Например, ниже приведены некоторые случаи, когда регулярные выражения
могут помочь вам сэкономить много времени.
- Поиск и замена текста в файлах
- Проверка правильности ввода текста, такого как пароль и адрес электрон-
ной почты
- Переименовывайте сотню файлов одновременно. Например, вы можете из-
менить расширение всех файлов, используя шаблон регулярных выражений
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
