Повторение (первое полугодие)

Задачи

  1. Цветовой микшер

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

  • если смешать красный и синий, то получится фиолетовый;

  • если смешать красный и желтый, то получится оранжевый;

  • если смешать синий и желтый, то получится зеленый.

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

Пример 1:

Ввод:
  Введите первый цвет: желтый
  Введите второй цвет: красный

Вывод:
  Вы получите: оранжевый

Пример 2:

Ввод:
  Введите первый цвет: желтый
  Введите второй цвет: черный

Вывод:
  Один из основных цветов введён неверно!
  1. Расписание

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

Ввод:
  Начало первого урока (час:мин): 8:00
  Длительность урока, мин: 45
  Длительность перемен, мин: 10
  На сколько уроков нужно расписание: 4

Вывод:
  1 урок: 8:00 - 8:45
  2 урок: 8:55 - 9:40
  3 урок: 9:50 - 10:35
  4 урок: 10:45 - 11:30
  1. Зомби-апокалипсис

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

Ввод:
  Сколько зомби было к началу расчёта: 2
  Сколько каждый может заразить: 1
  На который день делаем расчёт: 4

Вывод:
  1 день: 2
  2 день: 4
  3 день: 8
  4 день: 16
  1. Сумма соседей

Нaпишите функцию, которая принимает список чисел одной строкой, а затем возвращает список, в котором вместо каждого элемента введённой строки указана сумма двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Если на вход пришло только однo число, надо вывести его же.:

Ввод:
 1 3 5 6 10

Вывод:
 [13,6,9,15,7]
  1. Количество строк, слов и букв в файле

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

Ввод:
  Введите имя файла: 2.txt

Вывод:
  Файл: 2.txt
  Строк: 10
  Слов: 60
  Символов: 500
  1. Двоичный (бинарный) поиск

Двоичный (бинарный) поиск - это поиск в упорядоченном массиве, главная идея которого - постоянно сужать диапазон поиска в 2 раза, пока мы не найдём нужное значение.

Нaпишите 2 функции:

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

  • Функция для бинарного поиска в списке: список нужно отсортировать, а затем сравниваем число не с каждым элементом списка, а каждый раз только со средним элементом. После чего сужаем диапазон поиска. Продолжаем, пока не найдём нужный элемент.

Посмотреть логику работы алгоритма можно на видео

Сравните количество шагов, которое потребовалось линейному и бинарному поиску на выполнение задачи.

  1. Имена

Есть список списков с именами детей нескольких классов школы, нужно сделать словарь, в котором “ключом” будет имя ребёнка, а значением - количество детей с таким именем во всех классах школы.:

Ввод:
  school_list = [['Таня','Ваня','Аня','Ира','Женя','Артём'],
                 ['Таня','Маша','Аня','Витя','Антон'],
                 ['Галя','Вова','Аня','Ира']]

Вывод:
  {'Таня': 2,
   'Ваня': 1,
   'Аня': 3,
   'Ира': 2,
   'Женя': 1,
   'Артём': 1,
   'Маша': 1,
   'Витя': 1,
   'Антон': 1,
   'Галя': 1,
   'Вова': 1}
  1. Словарь

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

Ввод:
  translation = [{'ru':'яблоко','en':'apple','es': 'manzana'},
                 {'ru':'помидор','en':'tomato','es': 'tomate'}]

Вывод:
  1 файл en.txt:
  яблоко - apple
  помидор - tomato

  2 файл es.txt:
   яблоко - manzana
   помидор - tomate
  1. Казино

Игроки бросают по 2 игральные кости несколько раз. Результы суммируются и побеждает тот, кто набрал наибольшее количество очков. Напишите функцию, которая будет определять победителя. Если результат одинаковый, то побеждает тот, кто выкинул большую сумму в последнем раунде. Функция принимает на вход количество игроков, количество раундов и выводит ход игры (броски в каждом раунде) и победителя. На каждой игральной кости можно выбросить число от 1 до 6:

Ввод:
 Количество игроков: 2
 Количетсво раундов: 2

Вывод:
 Раунд 1 Игрок 1: 2 - 4
 Раунд 1 Игрок 2: 1 - 5
 Раунд 2 Игрок 1: 3 - 2
 Раунд 2 Игрок 2: 2 - 4
 ______________________
 Итоговый счёт:
 Игрок 1 - 11
 Игрок 2 - 12

 Победил Игрок 2

Самостоятельная работа

  1. Условия

Пользователь вводит 3 числа одной строкой через пробел, нужно вывести наибольшее из этих чисел.:

Ввод:
  Введите числа через пробел: 1 2 3

Вывод:
  Наибольшее число: 3

*Усложнение: Запрашиваем у пользователя длину списка. Генерим числа с помощью библиотеки random и складываем их в список заданной длины. Потом ищем в списке максимальное число и выводим его.

  1. Словари

Пользователь вводит фразу, необходимо поместить её в словарь, в котором ключом будет символ, а значением - сколько раз данный символ встречается во фразе.:

Ввод:
  Введите фразу: Hello, Python

Вывод:
  {'H': 1, 'e': 1, 'l': 2, 'o': 2, ',': 1, ' ': 1, 'P': 1, 'y': 1, 't': 1, 'h': 1, 'n': 1}

*Усложнение: Вводим текст (ещё более сложный вариант - читать текст из файла), разбиваем его на слова и показываем, сколько раз каждое слово встречается в тексте.