Модуль 20. Задача 4. Игроки

Модуль 20. Задача 4. Игроки

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

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

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

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

Результат работы программы:

[('Ivan', 'Volkin', 10, 5, 13), ('Bob', 'Robbin', 7, 5, 14), ('Rob', 'Bobbin', 12, 8, 2)]
ЧИТАТЬ ДАЛЕЕ …
Модуль 20. Задача 3. Функция

Модуль 20. Задача 3. Функция

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

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

Основной код оставьте пустым (используйте его только для тестирования).

Пример вызова функции:

print(slicer((1, 2, 3, 4, 5, 6, 7, 8, 2, 2, 9, 10), 2))
Ответ в консоли: (2, 3, 4, 5, 6, 7, 8, 2)
ЧИТАТЬ ДАЛЕЕ …
Модуль 20. Задача 2. Универсальная программа 2

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

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

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

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

Пример вызова функции:

print(crypto([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
Ответ в консоли: [2, 3, 5, 7]

Пример вызова функции:

print(crypto('О Дивный Новый мир!'))
Ответ в консоли: ['Д', 'и', 'н', 'й', 'в', 'й', 'р']
ЧИТАТЬ ДАЛЕЕ …
Модуль 20. Задача 1. Ревью кода

Модуль 20. Задача 1. Ревью кода

Ваня работает middle — разработчиком на Python в IT-компании и один кандидат на junior-разработчика прислал ему код тестового задания. Задание состояло в следующем: есть словарь из трёх студентов. Необходимо:
Вывести на экран список пар “айди студента — возраст”
Написать функцию, которая принимает в качестве аргумента словарь и возвращает два значения: полный список интересов всех студентов, а также общую длину всех фамилий студентов
Далее в основном коде эта функция вызывается, и все возвращаемые значения «распаковываются» в отдельные переменные, которые затем выводятся на экран.

Ваня — очень придирчивый программист и после просмотра кода он понял, что этого кандидата он на работу не возьмёт, даже несмотря на то, что она выдаёт верный результат. Сам код кандидата: (см. main.py)

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

Что прислал кандидат:

def f(dict):
    lst = []
    string = ''
    for i in dict:
        lst += (dict[i]['interests'])
        string += dict[i]['surname']
    cnt = 0
    for s in string:
        cnt += 1
    return lst, cnt

pairs = []
for i in students:
    pairs += (i, students[i]['age'])

my_lst = f(students)[0]
l = f(students)[1]
print(my_lst, l)

Результат работы программы:

Список пар "ID студента - Возраст": [(1, 23), (2, 24), (3, 22)]
Полный список интересов всех студентов: {'running', 'computer games', 'math', 'languages', 'biology, swimming', 'health food'}
Общая длина всех фамилий студентов: 20
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 10. Снова палиндром

Модуль 19. Задача 10. Снова палиндром

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

Пример 1:

Введите строку: aab
Можно сделать палиндромом

Пример 2:

Введите строку: aabc
Нельзя сделать палиндромом
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 9. Родословная

Модуль 19. Задача 9. Родословная

В генеалогическом древе у каждого человека, кроме родоначальника, есть ровно один родитель. Каждому элементу дерева сопоставляется целое неотрицательное число, называемое высотой. У родоначальника высота равна 0, у любого другого элемента высота на 1 больше, чем у его родителя. Вам нужно написать программу, которая по заданному генеалогическому древу определяет высоту всех его элементов

Программа получает на вход количество человек в генеалогическом древе N. Далее следует N−1 строка, задающие родителя для каждого элемента дерева, кроме родоначальника. Каждая строка имеет вид имя_потомка имя_родителя.

Программа должна вывести список всех элементов древа в лексикографическом порядке (по алфавиту). После вывода имени каждого элемента необходимо вывести его высоту.

Пример 1:

Введите количество человек: 9
1 пара: Alexei Peter_I
2 пара: Anna Peter_I
3 пара: Elizabeth Peter_I
4 пара: Peter_II Alexei
5 пара: Peter_III Anna
6 пара: Paul_I Peter_III
7 пара: Alexander_I Paul_I
8 пара: Nicholaus_I Paul_I

“Высота” каждого члена семьи:
Alexander_I 4
Alexei 1
Anna 1
Elizabeth 1
Nicholaus_I 4
Paul_I 3
Peter_I 0
Peter_II 2
Peter_III 2
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 8. Угадай число

Модуль 19. Задача 8. Угадай число

Артём и Борис играют в игру. Артём загадал натуральное число от 1 до N. Борис пытается угадать это число, для этого он называет несколько чисел подряд. Артём отвечает Борису “Да”, если среди названных Борисом чисел есть задуманное. В противном случае Артём отвечает “Нет”. После нескольких заданных вопросов Борис сдался и попросил вас помочь ему определить, какие числа мог задумать Артём

Напишите программу, которая имитирует диалог Артёма и Бориса. В начале на вход подаётся число N — это максимальное число, которое мог загадать Артём. Затем Борис предполагает, что среди некоторых чисел есть то, которое загадал Артём (несколько чисел через пробел), а Артём отвечает. Так продолжается до тех пор, пока Борис не попросит помощи (пока не введётся строка “Помогите!”) или Борис не угадает число. В конце программы необходимо вывести, какие числа мог загадать Артём.

Пример реализации:

Введите максимальное число: 10

Нужное число есть среди вот этих чисел: 1 2 3 4 5
Ответ Артёма: Да

Нужное число есть среди вот этих чисел: 2 4 6 8 10
Ответ Артёма: Нет

Нужное число есть среди вот этих чисел: Помогите!
Артём мог загадать следующие числа: 1 3 5
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 7. Пицца

Модуль 19. Задача 7. Пицца

В базе данных интернет-магазина “PizzaTime” хранятся данные о том, кто, что и сколько заказывал у них в определённый период. Вам необходимо структурировать эту информацию, а также понять сколько всего пицц купил каждый заказчик.

На вход в программу подаётся N заказов. Каждый заказ представляет собой строку вида Покупатель — название пиццы — количество заказанных пицц. Реализуйте код, который выводит список покупателей и их заказов по алфавиту. Учитывайте, что один человек может заказать одно и то же несколько раз

Пример 1:

Введите кол-во заказов: 6
1 заказ: Иванов Пепперони 1
2 заказ: Петров Де-Люкс 2
3 заказ: Иванов Мясная 3
4 заказ: Иванов Мексиканская 2
5 заказ: Иванов Пепперони 2
6 заказ: Петров Интересная 5

Иванов: 
    Мексиканская: 2
    Мясная: 3
    Пепперони: 3
Петров:
    Де-Люкс: 2
    Интересная: 5
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 6. Словарь синонимов

Модуль 19. Задача 6. Словарь синонимов

Одна библиотека поручила вам написать программу для оцифровки словарей слов-синонимов. На вход в программу подаётся N пар слов. Каждое слово является синонимом к парному ему слову.

Реализуйте код, который составляет словарь слов-синонимов (все слова в словаре различны.), затем запрашивает у пользователя слово и выходит на экран его синоним. Обеспечьте контроль ввода: если такого слова нет, но вывести ошибку и запросить слово ещё раз. При этом проверка не должна зависеть от регистра символов.

Пример:

Введите количество пар слов: 3
1 пара: Привет - Здравствуйте
2 пара: Печально - Грустно
3 пара: Весело - Радостно

Введите слово: интересно
Такого слова в словаре нет.
Введите слово: здравствуйте
Синоним: Привет
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 5. Гистограмма частоты 2

Модуль 19. Задача 5. Гистограмма частоты 2

Мы уже писали программу для лингвистов, которая получала на вход текст и считала, сколько раз в строке встречается каждый символ. Теперь задача немного поменялась: максимальную частоту выводить не нужно, однако теперь необходимо написать функцию, которая будет инвертировать полученный словарь. То есть в качестве ключа будет частота, а в качестве значения — список символов с этой частотой. Реализуйте такую программу.

Пример:

Введите текст: Здесь что-то написано
Оригинальный словарь частот:
  : 2
- : 1
З : 1
а : 2
д : 1
е : 1
и : 1
н : 2
о : 3
п : 1
с : 2
т : 2
ч : 1
ь : 1

Инвертированный словарь частот:
1 : ['З', 'д', 'е', 'ь', 'ч', '-', 'п', 'и']
2 : ['с', ' ', 'т', 'н', 'а']
3 : ['о']
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 4. Товары

Модуль 19. Задача 4. Товары

В базе данных магазина вся необходимая информация по товарам делится на два словаря: первый отвечает за коды товаров, второй — за списки количества разнообразных товаров на складе (см. main.py)

Каждая запись второго словаря отображает сколько и по какой цене закупалось товаров (цена указана за 1 шт.)

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

Результат работы программы:

Лампа - 27 шт, стоимость 1134 руб
Стол - 54 шт, стоимость 27860 руб
Диван - 3 шт, стоимость 3550 руб
Стул - 105 шт, стоимость 10311 руб
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 3. Криптовалюта

Модуль 19. Задача 3. Криптовалюта

При работе с API (application programming interface) сайта биржи по криптовалюте вы получили вот такие данные в виде словаря (см. main.py)

И теперь вам этим данные предстоит немного обработать.
Напишите программу, которая выполняет следующий алгоритм действий:

  1. Вывести списки ключей и значений словаря
  2. В “ETH” добавить ключ “total_diff” со значением 100
  3. Внутри “fst_token_info” значение ключа “name” поменять с “fdf” на “doge”
  4. Удалить “total_out” из tokens и присвоить его значение в “total_out” внутри “ETH”
  5. Внутри «sec_token_info» изменить название ключа “price” на “total_price”.

После выполнения алгоритма выводить результат (словарь) не нужно.

ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 2. География

Модуль 19. Задача 2. География

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

Пользователь вводит количество стран N, а затем N раз вводит страну и города, которые в этой стране находятся, в одну строку. Затем пользователь вводит 3 названия городов. Реализуйте такую программу и для каждого из трёх городов укажите, в какой стране он находится. Если такого города нет, то вывести соответствующее сообщение.

Пример:

Кол-во стран: 2
1 страна: Россия Москва Петербург Новгород
2 страна: Германия Берлин Лейпциг Мюнхен

1 город: Москва
Город Москва расположен в стране Россия.

2 город: Мюнхен
Город Мюнхен расположен в стране Германия.

3 город: Рим
По городу Рим данных нет.
ЧИТАТЬ ДАЛЕЕ …
Модуль 19. Задача 1. Песни 2

Модуль 19. Задача 1. Песни 2

Мы продолжаем писать приложение для удобного прослушивания музыки, но теперь наши песни хранятся в виде словаря, а не вложенных списков. Каждая песня состоит из названия и продолжительности с точностью до долей минут

violator_songs = {
    'World in My Eyes': 4.86,
    'Sweetest Perfection': 4.43,
    'Personal Jesus': 4.56,
    'Halo': 4.9,
    'Waiting for the Night': 6.07,
    'Enjoy the Silence': 4.20,
    'Policy of Truth': 4.76,
    'Blue Dress': 4.29,
    'Clean': 5.83
}

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

Пример:

Сколько песен выбрать? 3
Название 1 песни: Halo
Название 2 песни: Enjoy the Silence
Название 3 песни: Clean

Общее время звучания песен: 14.93 минут
ЧИТАТЬ ДАЛЕЕ …
Модуль 18. Задача 10. Истина

Модуль 18. Задача 10. Истина

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

vujgvmCfb tj ufscfu ouib z/vhm jdjuFyqm jt fscfuu uibo jdju/jnqm fTjnqm tj scfuuf ibou fy/dpnqm yDpnqmf jt cfuufs boui dbufe/dpnqmj uGmb tj fuufsc ouib oftufe/ bstfTq jt uufscf uibo otf/ef uzSfbebcjmj vout/dp djbmTqf dbtft (ubsfo djbmtqf hifopv up csfbl ifu t/svmf ipvhiBmu zqsbdujdbmju fbutc uz/qvsj Fsspst tipvme wfsof qbtt foumz/tjm omfttV mjdjumzfyq odfe/tjmf Jo fui dfgb pg hvjuz-bncj gvtfsf fui ubujpoufnq up ftt/hv Uifsf vmetip fc pof.. boe sbcmzqsfgf zpom pof pvt..pcwj xbz pu pe ju/ Bmuipvhi uibu bzx bzn puo cf wjpvtpc bu jstug ttvomf sfzpv( i/Evud xOp tj scfuuf ibou /ofwfs uipvhiBm fsofw jt fopgu cfuufs boui iu++sjh x/op gJ ifu nfoubujpojnqmf tj eibs pu mbjo-fyq tju( b bec /jefb Jg fui foubujpojnqmfn jt fbtz up bjo-fyqm ju znb cf b hppe jefb/ bnftqbdftO bsf pof ipoljoh sfbuh efbj .. fu(tm pe psfn gp tf"uip

Подсказка: в задаче говорится об истине питона import this, а текст зашифрован шифром Цезаря.

ЧИТАТЬ ДАЛЕЕ …