🏋️ Раздел тренировки
В этом практикуме вы последовательно дорабатываете одну программу: от простого отчёта до защищённого интерактивного запроса.
📂 Подготовка проекта
- Создайте папку урока:
python-fundamentals-practice/lesson-81/. - Активируйте виртуальное окружение.
- Установите PyMySQL:
pip install pymysql. - Создайте файл
employees_report.py.
Задание 1. Список сотрудников по убыванию зарплаты
Условие: добавьте к программе сортировку сотрудников выбранного отдела по убыванию зарплаты. Выведите имя, фамилию, должность и зарплату каждого сотрудника, начиная с самого высокооплачиваемого. Также добавьте нумерацию (не id).
Что должно получиться:
Enter department: Marketing
1. Michael Hartstein — Marketing Manager — 13000.00
2. Pat Fay — Marketing Representative — 6000.00
Подсказка: используйте ORDER BY salary DESC и enumerate(..., start=1).
Задание 2. Выбор департамента по номеру
Условие: модифицируйте программу так, чтобы пользователь выбирал отдел по номеру из списка, а не вручную вводил его название. После выбора выведите название отдела.
Что должно получиться:
Enter department number: 2
You choose: Marketing
1. Michael Hartstein — Marketing Manager — 13000.00
2. Pat Fay — Marketing Representative — 6000.00
Подсказка: не забудьте, что номер списка для пользователя начинается с 1, а индекс Python — с 0.
Задание 3. Пустой отдел
Условие: добавьте проверку: если в выбранном отделе нет сотрудников, вместо списка выведите сообщение No employees found in this department..
Что должно получиться:
Enter department number: 27
You selected: Payroll
No employees found in Payroll department.
Подсказка: после fetchall() проверьте длину результата.
Задание 4. Фильтрация сотрудников по зарплате
Условие: если в отделе есть сотрудники — дайте возможность отфильтровать их по зарплате. Спросите пользователя Would you like to filter employees by salary? (y/n). Если ответ y, попросите ввести знак сравнения и значение. Выведите только тех, кто соответствует критерию.
Что должно получиться:
Enter department number: 8
You selected: Sales
Would you like to filter employees by salary? (y/n) y
Enter condition (>, <, =, >=, <=): >
Enter salary: 13000
1. John Russell — Sales Manager — 14000.00
2. Karen Partners — Sales Manager — 13500.00
Подсказка: оператор сравнения нельзя передать как %s, поэтому проверьте его по белому списку, а значение зарплаты передайте параметром.
Задание 5. Повторный ввод при ошибке
Условие: модифицируйте программу так, чтобы при вводе некорректного номера отдела пользователю предлагалось ввести его снова. Программа не должна завершаться, пока не будет введён корректный номер.
Что должно получиться:
Enter department number: 999
Invalid department number. Please try again.
Enter department number: num1
Invalid input. Please enter a number.
Enter department number: 2
You selected: Marketing
...
Подсказка: используйте бесконечный цикл while True и выходите из него через break после успешной проверки.