Практические занятия
Практика 9
Работа с объектами через интерфейсы
1. Решите одну из задач практического занятия в ОС Linux, оформив Python-скрипт
с помощью строки-заголовка «шебанг» (shebang):
#!/usr/bin/env python3
Установите права пользователя на запуск скрипта и протестируйте его:
chmod +x test.py
-
Перейти. proglib.io - Комментарий особого типа: выполнение скриптов Python с помощью Shebang
-
Перейти. realpython.com - Executing Python Scripts With a Shebang by Bartosz Zaczyński Mar 20, 2023
2.
В заданном тексте определить частоту (в долях от общего количества букв),
с которой встречаются различные буквы.
3.
Дан словарь, состоящий из пар слов. Каждое слово является синонимом к парному ему слову.
Все слова в словаре различны. Для одного из слов словаря определите его синоним.
4.
Города и страны. В словаре countries каждый ключ — это название страны,
а его значения - список из 3 крупнейших городов, которые в этой стране
расположены. Ваша задача написать программу, которая на вход принимает
название города и сохраняет ее в переменную city, а на выходе выдает
информацию о том, в какой стране находится указанный город.
Если страна успешно найдена, выведите сообщение:
"INFO: <указанный_город> is a city in <найденная_страна>".
В противном случае:
"ERROR: Country for <указанный_город> is not found"
countries = {
'Sweden': ['Stockholm', 'Goteborg', 'Malmo'],
'Norway': ['Oslo', 'Bergen', 'Trondheim'],
'England': ['London', 'Birmingham', 'Manchester'],
'Germany': ['Berlin', 'Hamburg', 'Munich'],
'France': ['Paris', 'Marseille', 'Toulouse']
}
city = input()
# Напишите ваш код ниже
5.
Азбука Морзе. Вам дан текст на английском языке. Закодируйте его с помощью азбуки Морзе, где каждой букве
соответствует последовательность точек и тире. В качестве тире используйте обычный
дефис: «-», а в качестве точки — точку «.». Например, буква «g» превратится
в трехсимвольную строку «--.». Ниже в переменной morze для вашего удобства
хранится словарь соответствия латинских букв коду Морзе.
Входные данные
В одной строке вам дан текст, который состоит из латинских букв и пробелов.
Других символов в тексте нет, также не может встретиться двух и более пробелов подряд.
Выходные данные
Выведите каждое слово исходного текста, закодированное азбукой Морзе,
на отдельной строке. Количество строк в ответе должно совпадать с количеством слов
в исходном тексте. Между закодированными буквами ставится ровно один пробел.
Например, слово «Help» превратится в «.... . .-.. .--.».
Обратите внимание, что строчные и заглавные буквы кодируются одинаково.
Исходный текст
Ignition sequence start
Перевод
•• ——• —• •• — •• ——— —•
••• • ——•— ••— • —• —•—• •
••• — •— •—• —
morze = {'a': '•—', 'b': '—•••', 'c': '—•—•', 'd': '—••',
'e': '•', 'f': '••—•', 'g': '——•', 'h': '••••',
'i': '••', 'j': '•———', 'k': '—•—', 'l': '•—••',
'm': '——', 'n': '—•', 'o': '———', 'p': '•——•',
'q': '——•—', 'r': '•—•', 's': '•••', 't': '—',
'u': '••—', 'v': '•••—', 'w': '•——', 'x': '—••—',
'y': '—•——', 'z': '——••'}
# ваш код здесь
Тесты
Входные данные:
Ignition sequence start
Выходные данные:
•• ——• —• •• — •• ——— —•
••• • ——•— ••— • —• —•—• •
••• — •— •—• —
Входные данные:
Hello world
Выходные данные:
•••• • •—•• •—•• ———
•—— ——— •—• •—•• —••
Входные данные:
memento mori
Выходные данные:
—— • —— • —• — ———
—— ——— •—• ••
Входные данные:
Apple
Выходные данные:
•— •——• •——• •—•• •
Входные данные:
Divide et impera
Выходные данные:
—•• •• •••— •• —•• •
• —
•• —— •——• • •—• •—
6.
Служба электронных писем в Посташтате. В некотором городе Посташтат
открывается новая служба по доставке электронных писем.
Нужно запустить проект как можно быстрее, а потому администрация
сайта просит вас помочь им наладить систему регистрации новых пользователей.
Регистрация должна работать следующим образом: если новый пользователь
хочет зарегистрироваться на сайте, то он должен послать системе
запрос name со своим именем. Система должна определить, существует ли уже
такое имя в базе данных. Если такого имени не существует, то оно заносится
в базу данных системы и пользователю возвращается ответ "ОК",
подтверждающий успешную регистрацию в системе почтовых отправлений электронных
писем. А если пользователь с таким именем уже существует, то система должна
сформировать новое имя и выдать его пользователю в качестве подсказки,
при этом сама подсказка также добавляется в базу данных.
Новое имя формируется следующим образом: к name последовательно приписываются
числа, начиная с 1 (name1, name2 и так далее), и среди них находят такое
наименьшее i, что namei еще не содержится в системе.
Входные данные
В первой строке входных данных задано число n (1 ≤ n ≤ 100000).
Следующие n строк содержат запросы к системе. Каждый запрос представляет
собой непустую строку длиной не более 32 символов, состоящую только
из строчных букв латинского алфавита.
Выходные данные
В выходных данных должно содержаться n строк — ответы системы на запросы:
"OK" в случае успешной регистрации, или подсказка с новым именем,
если запрашиваемое уже занято.
Код
logins = {}
n = int(input())
#ваш код ниже
Тесты
Входные данные:
4
abc
abcd
abc
acab
Выходные данные:
OK
OK
abc1
OK
Входные данные:
3
b
b
b
Выходные данные:
OK
b1
b2
Входные данные:
3
vhn
vhn
h
Выходные данные:
OK
vhn1
OK
Входные данные:
4
d
hd
d
h
Выходные данные:
OK
OK
d1
OK
Входные данные:
10
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
bhnqaptmp
Выходные данные:
OK
bhnqaptmp1
bhnqaptmp2
bhnqaptmp3
bhnqaptmp4
bhnqaptmp5
bhnqaptmp6
bhnqaptmp7
bhnqaptmp8
bhnqaptmp9
Входные данные:
10
fpqhfouqdldravpjttarh
fpqhfouqdldravpjttarh
fpqhfouqdldravpjttarh
fpqhfouqdldravpjttarh
fpqhfouqdldravpjttarh
fpqhfouqdldravpjttarh
jmvlplnrmba
fpqhfouqdldravpjttarh
jmvlplnrmba
fpqhfouqdldravpjttarh
Выходные данные:
OK
fpqhfouqdldravpjttarh1
fpqhfouqdldravpjttarh2
fpqhfouqdldravpjttarh3
fpqhfouqdldravpjttarh4
fpqhfouqdldravpjttarh5
OK
fpqhfouqdldravpjttarh6
jmvlplnrmba1
fpqhfouqdldravpjttarh7
7. По примеру 5.1 из лекции создать модуль с классами Сотрудник (Employee)
и Генератор отчетов (ReportGenerator).
Дополните программу модулем main, который использует модуль с классами.
8. По примеру из лекции создать RAD-средствами QtDesigner оконное приложение
с помощью модуля PyQt5.
При нажатии на кнопку Start выводится надпись «Start».
Доработать программу, добавив кнопку Stop выводящую надпись «Stop».
Для установки модуля воспользуйтесь следующими командами:
pip install pyqt5
pip install pyqt5-tools
python -m pip install pyqt5
python -m pip install pyqt5-tools
pip help
pip show package_name
pip uninstall package_name
pip search
Домашнее задание
Работа с объектами через интерфейсы.
Объявление интерфейсов.
Объявление свойств и методов интерфейсов.
Реализация интерфейсов в классе.
-
Перейти Стандартный документ «Описание программы»