Задача 4. Тренируемся со срезами

Дана строка, в которой хранятся первые семь букв английского алфавита.

alphabet = 'abcdefg'

Напишите программу, которая выводит на экран 10 вот таких результатов:

  1. Копия строки
  2. Элементы строки в обратном порядке
  3. Каждый второй элемент строки (включая самый первый)
  4. Каждый второй элемент строки после первого
  5. Все элементы до второго
  6. Все элементы начиная с конца до предпоследнего
  7. Все элементы в диапазоне индексов от 3 до 4 (не включая 4)
  8. Последние три элемента строки
  9. Все элементы в диапазоне индексов от 3 до 4
  10. То же, что и в предыдущем, но выводится в обратном порядке.

Для получения и вывода результатов используйте только команду print и срезы.

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

1: abcdefg
2: gfedcba
3: aceg
4: bdf
5: a
6: g
7: d
8: efg
9: de
10: ed

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

Задача 3. Случайные соревнования

Мы хотим протестировать работу электронной таблицы для участников некоторых соревнований. Есть два списка (то есть две команды), по 20 участников в каждом. В этих списках хранятся очки каждого участника (это вещественные числа с двумя знаками после точки, например 4.03). Участник одной команды соревнуется с участником другой команды под таким же номером. То есть первый соревнуется с первым, второй- со вторым, и так далее.

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

Пример:

Первая команда: [7.86, 6.76, 9.97, 9.08, 5.45, 6.9, 8.65, 5.17, 8.17, 5.06, 7.56, 7.1, 7.18, 8.25, 5.53, 7.95, 8.91, 7.11, 8.29, 9.52]
Вторая команда: [7.13, 5.7, 8.89, 5.36, 5.62, 9.46, 5.82, 8.67, 8.41, 7.0, 5.31, 7.8, 9.93, 7.76, 7.4, 8.26, 7.94, 5.71, 7.89, 7.77]
Победители тура:  [7.86, 6.76, 9.97, 9.08, 5.62, 9.46, 8.65, 8.67, 8.41, 7.0, 7.56, 7.8, 9.93, 8.25, 7.4, 8.26, 8.91, 7.11, 8.29, 9.52]
ЧИТАТЬ ДАЛЕЕ …

Задача 2. Генерация

Пользователь вводит целое число N. Напишите программу, которая генерирует список из N чисел, на четных местах в котором стоят единицы, а на нечетных местах — числа, равные остатку от деления своего номера на 5.

Пример:

Введите длину списка: 10
Результат: [1, 1, 1, 3, 1, 0, 1, 2, 1, 4]

Решение:

number = int(input('Введите длину списка: '))

res_list = [(1 if x % 2 == 0 else x % 5) for x in range(number)]

print(res_list)

Задача 1. Гласные буквы

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

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

Пример:

Введите текст: Нужно отнести кольцо в Мордор!

Список гласных букв: ['у', 'о', 'о', 'е', 'и', 'о', 'о', 'о', 'о']
Длина списка: 9

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

Задача 10. Симметричная последовательность

Последовательность чисел называется симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:

1 2 3 4 5 4 3 2 1

1 2 1 2 2 1 2 1

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

Пример 1:

Кол-во чисел: 5
Число: 1
Число: 2
Число: 1
Число: 2
Число: 2

Последовательность: [1, 2, 1, 2, 2]
Нужно приписать чисел: 3
Сами числа: [1, 2, 1]

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

Задача 9. Друзья

N друзей постоянно берут в долг друг у друга деньги. В какой-то момент им надоело забывать кто, кому и сколько должен и они придумали систему долговых расписок. И чтобы начать новый год «с чистого листа», друзья решили и оплатить все долговые расписки, которые накопились у них друг к другу. Однако выяснилось, что иногда один и тот же человек в разные дни выступал как в роли должника, так и в роли кредитора.

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

Сначала вводится число N – количество друзей, затем вводится число K – количество долговых расписок, после этого следует K троек чисел: номер друга взявшего в долг, номер друга давшего деньги и сумма. Гарантируется, что ни один друг не брал в долг сам у себя.

Программа должна вывести “баланс друзей”, то есть суммы, которые должны получить или отдать друзья. Положительное число означает, что друг должен получить деньги от других, отрицательное — должен отдать деньги.

Пример 1:

Кол-во друзей: 2
Долговых расписок: 3

1 расписка
Кому: 1
От кого: 2
Сколько: 10

2 расписка
Кому: 1
От кого: 2
Сколько: 20

3 расписка
Кому: 1
От кого: 2
Сколько: 20

Баланс друзей:
1 : -50
2 : 50
ЧИТАТЬ ДАЛЕЕ …

Задача 8. Считалка

N человек, пронумерованных числами от 1 до N стоят в кругу. Они начинают играть в считалку на выбывание, где каждый K-й по счету человек выбывает из круга, после чего счет продолжается со следующего за ним человека.

На вход подаётся количество человек N и номер K. Напишите программу, которая выводит число от 1 до N — это номер человека, который останется в кругу последним.

Пример:

Кол-во человек: 5
Какое число в считалке? 7
Значит, выбывает каждый 7 человек

Текущий круг людей: [1, 2, 3, 4, 5]
Начало счёта с номера 1
Выбывает человек под номером 2

Текущий круг людей: [1, 3, 4, 5]
Начало счёта с номера 3
Выбывает человек под номером 5

Текущий круг людей: [1, 3, 4]
Начало счёта с номера 1
Выбывает человек под номером 1

Текущий круг людей: [3, 4]
Начало счёта с номера 3
Выбывает человек под номером 3

Остался человек под номером 4
ЧИТАТЬ ДАЛЕЕ …

Задача 7. Ролики

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

Пример:

Кол-во коньков: 4
Размер 1 пары: 41
Размер 2 пары: 40
Размер 3 пары: 39
Размер 4 пары: 42

Кол-во людей: 3
Размер ноги 1 человека: 42
Размер ноги 2 человека: 41
Размер ноги 3 человека: 42

Наибольшее кол-во людей, которые могут взять ролики: 2
ЧИТАТЬ ДАЛЕЕ …

Задача 6. Уникальные элементы

Даны два списка целых чисел, оба списка заполняются с клавиатуры. В первый список вводятся 3 числа, во второй — 7
чисел. Напишите программу, которая запрашивает у пользователя эти числа, затем расширяет первый список элементами второго и после этого оставляет в первом списке только уникальные элементы, то есть удаляет лишние повторы чисел. Условный оператор использовать нельзя.

Пример:

Введите 1 число для первого списка: 1
Введите 2 число для первого списка: 2
Введите 3 число для первого списка: 3
Введите 1 число для второго списка: 2
Введите 2 число для второго списка: 4
Введите 3 число для второго списка: 6
Введите 4 число для второго списка: 3
Введите 5 число для второго списка: 3
Введите 6 число для второго списка: 2
Введите 7 число для второго списка: 1

Первый список: [1, 2, 3]
Второй список: [2, 4, 6, 3, 3, 2, 1]

Новый первый список с уникальными элементами: [4, 6, 3, 2, 1]
ЧИТАТЬ ДАЛЕЕ …

Задача 5. Песни

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

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]
]

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

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

Пример:

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

Общее время звучания песен: 14.93 минут
ЧИТАТЬ ДАЛЕЕ …

Задача 4. Вечеринка

В честь своего дня рождения Артём решил закатить вечеринку у себя на даче. Он не стал рассылать приглашения, а просто сообщил всем, мол “если хотите — приходите и своих друзей тоже зовите”. В ходе вечеринки люди приходили и уходили, и ночевать остались далеко не все. К тому же и сама дача не резиновая — на ней помещаются всего 6 человек.

Дан изначальный список гостей — имена тех, кто пришёл к началу

guests = ['Петя', 'Ваня', 'Саша', 'Лиза', 'Катя']

Напишите программу, которая спрашивает у пользователя, ушёл кто-то или пришёл новый и исходя из ответа добавляет в список или удаляет из него нужное имя. При этом гостей может быть не больше 6. Имена запрашиваются до тех пор, пока пользователь не введёт сообщение “Пора спать”

Пример:

Сейчас на вечеринке 5 человек: [‘Петя’, ‘Ваня’, ‘Саша’, ‘Лиза’, ‘Катя’]
Гость пришел или ушел? пришел
Имя гостя: Алекс
Привет, Алекс!

Сейчас на вечеринке 6 человек: [‘Петя’, ‘Ваня’, ‘Саша’, ‘Лиза’, ‘Катя’, ‘Алекс’]
Гость пришел или ушел? пришел
Имя гостя: Гоша
Прости, Гоша, но мест нет.

Сейчас на вечеринке 6 человек: [‘Петя’, ‘Ваня’, ‘Саша’, ‘Лиза’, ‘Катя’,  ‘Алекс’]
Гость пришел или ушел? ушел
Имя гостя: Ваня
Пока, Ваня!

Сейчас на вечеринке 5 человек: [‘Петя’, ‘Саша’, ‘Лиза’, ‘Катя’,  ‘Алекс’]
Гость пришел или ушел? Пора спать

Вечеринка закончилась, все легли спать.
ЧИТАТЬ ДАЛЕЕ …

Задача 3. Детали

В базе данных магазина всякой всячины хранится список названий деталей и их стоимостей:

shop = [['каретка', 1200], ['шатун', 1000], ['седло', 300], 
        ['педаль', 100], ['седло', 1500], ['рама', 12000], 
        ['обод', 2000], ['шатун', 200], ['седло', 2700]]

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

Пример:

Название детали: седло

Кол-во деталей - 3  
Общая стоимость - 4500
ЧИТАТЬ ДАЛЕЕ …

Задача 2. Шеренга

Два класса стоят в две отдельные шеренги. В каждом классе ученики выстроены по росту (по возрастанию): в одном классе от 160 до 176 с шагом 2, во втором классе — от 162 до 180 с шагом 3. Спустя какое-то время два класса объединяют в одну шеренгу и тоже выстраивают их по возрастанию.

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

Формат вывода ответа:

Отсортированный список учеников: [160, 162, ...]
ЧИТАТЬ ДАЛЕЕ …

Задача 1. Страшный код

Вашему другу, который тоже начал изучать Python, преподаватель дал такую задачу. Есть три списка: основной и два побочных. В основном лежат элементы [1, 5, 3], а в побочных [1, 5, 1, 5] и [1, 3, 1, 5, 3, 3] соответственно. Первый побочный закидывается в основной, там считается количество цифр 5, кол-во выводится на экран и затем они удаляются из основного списка. После этого в основной закидывается второй побочный список, там считается количество цифр 3 и выводится на экран. В конце также выводится и сам список.
Из интереса вы попросили вашего друга показать код его программы и поняли, что сделали это не зря — то, что вы увидели, повергло вас в шок и ужас. (код лежит в main.py)

Используя знания о методах списков, а также о стиле программирования, помогите другу переписать программу. Не используйте дополнительные списки.

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

Кол-во цифр 5 при первом объединении: 3
Кол-во цифр 3 при втором объединении: 4
Итоговый список: [1, 3, 1, 1, 1, 3, 1, 5, 3, 3]
ЧИТАТЬ ДАЛЕЕ …

Задача 10. Сортировка

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

Пример:

Изначальный список: [1, 4, -3, 0, 10]

Отсортированный список: [-3, 0, 1, 4, 10]
ЧИТАТЬ ДАЛЕЕ …