Найти в Дзене
Заметки по Python

Основы Python. Часть 6

Оглавление

Задача 1. Ревью кода

Ваня работает middle-разработчиком на Python в IT-компании. Один кандидат на позицию junior-разработчика прислал ему код тестового задания.

В задании был словарь из трёх студентов. Необходимо:

  1. Вывести на экран список пар «ID студента — возраст».
  2. Написать функцию, которая принимает в качестве аргумента словарь и возвращает два значения: полный список интересов всех студентов и общую длину всех фамилий студентов.

Далее в основном коде вызывается функция, значения присваиваются отдельным переменным и выводятся на экран.

Ваня — очень придирчивый программист, и после просмотра кода он понял, что этого кандидата на работу не возьмёт, хотя он выдаёт верный результат.

Перепишите этот код так, чтобы он был максимально pythonic и Ваня мало к чему мог придраться (только если очень захочется). Убедитесь, что программа верно работает Проверки на существование записей в словаре не обязательны, но приветствуются.

Задача 2. Универсальная программа 2

Спустя некоторое время заказчик попросил вас немного изменить скрипт для криптографии: теперь индексы элементов должны быть простыми числами.

Напишите функцию, которая возвращает список элементов итерируемого объекта (кортежа, строки, списка, словаря), у которых индекс — это простое число. Для проверки на простое число напишите отдельную функцию is_prime. Основной код оставьте пустым (используйте его только для тестирования).

Дополнительно: сделайте так, чтобы основная функция состояла только из оператора return и так же возвращала список.

-2

Задача 3. Функция

Напишите функцию, которая на вход принимает кортеж и какой-то случайный элемент (его можно вводить с клавиатуры). Функция должна возвращать новый кортеж, начинающийся с первого появления элемента в нём и заканчивающийся вторым его появлением включительно.

Если элемента нет вовсе — вернуть пустой кортеж.

Если элемент встречается только один раз — вернуть кортеж, который начинается с этого элемента и идёт до конца исходного.

-3

Задача 4. Игроки

У вас есть словарь игроков, которые участвовали в трёх видах спорта. В словаре хранятся пары «ФИ — очки»:

players = { ("Ivan", "Volkin"): (10, 5, 13), ("Bob", "Robbin"): (7, 5, 14), ("Rob", "Bobbin"): (12, 8, 2) }

Один программист попросил нас для его базы прислать другой вариант хранения этой информации.

Напишите программу, которая объединяет ключ словаря со значением в один кортеж, и выведите результат на экран. Постарайтесь использовать как можно более эффективное решение.

-4

Задача 5. Одна семья

В одной базе данных хранится информация о членах нескольких разных семей. Хранение реализовано с помощью словаря с парами «ФИ — возраст».

Инициализируйте словарь членов семей (ФИ и возраст используйте любые) и напишите программу, которая запрашивает у пользователя фамилию и выводит на экран возраст всех членов одной семьи. Учтите, что, например, у двух людей разного пола фамилии отличаются окончанием. Поиск не должен быть регистрозависимым.

-5

Задача 6. По парам

Напишите программу, которая инициализирует список из 10 случайных целых чисел, а затем делит эти числа на пары кортежей внутри списка. Выведите результат на экран.

-6

Задача 7. Функция сортировки

Напишите функцию, которая сортирует по возрастанию кортеж, состоящий из целых чисел, и возвращает его отсортированным. Если хотя бы один элемент не является целым числом, то функция возвращает исходный кортеж.

-7

Задача 8. Контакты 3

Мы уже помогали Степану с реализацией телефонной книги на телефоне, однако внезапно оказалось, что книге не хватает ещё одной полезной функции: поиска.

Напишите программу, которая бесконечно запрашивает у пользователя действие, которое он хочет совершить: добавить контакт или найти человека в списке контактов по фамилии.

Действие «добавить контакт»: программа запрашивает имя и фамилию контакта, затем номер телефона, добавляет их в словарь и выводит на экран текущий словарь контактов. Если этот человек уже есть в словаре, то выводится соответствующее сообщение.

Действие «поиск человека по фамилии»: программа запрашивает фамилию и выводит все контакты с такой фамилией и их номера телефонов. Поиск не должен зависеть от регистра символов.

-8

Задача 9. Протокол соревнований

Вы продолжаете развиваться в геймдеве, и в этот раз вам пришло действительно внушительное техническое задание с описанием правил игр, входными и выходными данными. Вот как оно выглядит:

Здравствуйте! Мы собираемся устраивать соревнования по [данные засекречены] и хотим, чтобы вы написали эффективную программу, которая составляла бы нам протокол и определяла победителя и призёров. О логике работы программы ниже.

Правила соревнований

  1. Участники имеют право играть несколько раз. Количество попыток одного участника не ограничивается.
  2. Окончательный результат участника определяется по одной игре, лучшей для этого участника.
  3. Более высокое место в соревнованиях занимает участник, показавший лучший результат.
  4. При равенстве результатов более высокое место занимает участник, раньше показавший лучший результат.

Как проходят соревнования

В ходе соревнований заполняется протокол, каждая строка которого описывает одну игру и содержит результат участника и его игровое имя. Протокол формируется в реальном времени по ходу проведения чемпионата, поэтому строки в нём расположены в порядке проведения игр: чем раньше встречается строка в протоколе, тем раньше закончилась соответствующая этой строке игра.

Напишите программу, которая по данным протокола определяет победителя и призёров. Гарантируется, что в чемпионате участвует не менее трёх игроков.

Описание входных данных

Первая строка содержит число N — это общее количество строк протокола. Каждая из следующих N строк содержит записанные через пробел результаты участника (целое неотрицательное число) и игровое имя (имя не может содержать пробелов). Строки исходных данных соответствуют строкам протокола и расположены в том же порядке, что и в протоколе.

Гарантируется, что в соревнованиях не менее трёх участников.

Описание выходных данных

Программа должна вывести имена и результаты трёх лучших игроков по форме, приведённой ниже в примере.

-9

Задача 10. Своя функция zip

В самом конце собеседования вас неожиданно спросили: «Расскажите, что делает функция zip?». Чтобы произвести впечатление, вы решили не только рассказать про неё, но и написать её аналог.

Даны строка и кортеж из чисел. Напишите программу, которая создаёт генератор из пар кортежей «символ — число». Затем выведите на экран сам генератор и кортежи.

-10

Наука
7 млн интересуются