Задач снова будет много! И Снова много логики! Почему так?
Потому что наша задача - это максимально научиться использовать несложные "математические лайфхаки", в виде математических алгоритмов и вычислений, в реальной жизни. Но тут есть и такие, которые с математикой не слишком связаны :)
В задачах допустимо использование библиотек.
Здесь в задачах будет описание того, как должна работать программа. В каждой из программ предполагается, что пользователь вводит числа через пробел в одну строку. Также держите в голове, что вы можете использовать дополнительные списки при необходимости.
Пользователь вводит неизвестное количество чисел. Нужно вывести количество элементов списка, которые больше предыдущего элемента.
Ввод:
1 5 1 5 1
Вывод:
Количество: 2
Пользователь вводит неизвестное количество чисел. Если в этом списке есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.
Ввод:
1 -2 3 -4 5 6
Вывод:
5 6
Пользователь вводит неизвестное количество чисел. Выведите значение наибольшего элемента в списке, а затем индекс этого элемента в списке. Если наибольших элементов несколько, выведите индекс первого из них. Не используйте функции max и поиск по индексу.
Ввод:
5 4 3 2 1
Вывод:
Максимальное: 5
Индекс: 0
Магический орден готовится к параду, и каждому магу необходимо найти своё место в строю в соответствии с уровнем его силы. Аргус недавно присоединился к ордену и хочет узнать, на какое место в строю он должен встать.
Программа получает на вход убывающую последовательность натуральных чисел, представляющих уровень силы каждого мага в строю. После этого вводится число X — уровень силы Аргуса. Все числа во входных данных натуральные и не превышают 200.
Выведите номер, под которым Аргус должен встать в строй. Если в строю уже есть маги с таким же уровнем силы, как у Аргуса, он должен встать сразу после них.
Ввод:
165 163 160 160 157 157 155 154
Сила Аргуса: 160
Вывод:
Место Аргуса: 4
На складе товаров все упаковки расположены по порядку в зависимости от их штрихкодов. Иногда на полке могут встречаться упаковки с одинаковыми штрихкодами, указывающими на одну и ту же партию товара. Помогите кладовщику определить, сколько уникальных штрихкодов находится на складе.
Программа получает на вход список штрихкодов, упорядоченный по неубыванию. Все штрихкоды — натуральные числа и не превышают 200.
Выведите количество различных штрихкодов на складе.
Внимание: не используйте в этой задаче словари, даже если вы их знаете.
Ввод:
101 101 150 150 150 200
Вывод:
Количество разных товаров: 3
В отделе доставки хранятся коробки с товарами разного веса. Нужно поменять местами самую легкую и самую тяжелую коробки, чтобы облегчить доступ к ним. Помогите сотрудникам склада правильно переставить коробки.
Программа получает на вход список весов коробок. Все элементы списка различны. Поменяйте местами коробку с минимальным и максимальным весом.
Ввод:
10 5 15 7 20
Вывод:
10 20 15 7 5
Создайте программу, которая считывает целые числа, введенные пользователем, в одну строку. После того как все числа будут считаны, ваша программа должна вывести все отрицательные числа, затем все нули и затем все положительные числа. В каждой группе числа должны выводиться в том порядке, в каком они были введены пользователем.
Ввод:
3 -4 1 0 -1 0 -2
Вывод:
Отрицательные: -4 -1 -2
Нули: 0 0
Положительные: 3 1
В отделе бухгалтерии проверяют документы на одинаковые суммы платежей. Нужно определить, сколько пар платежей с одинаковыми суммами есть в отчете. Помогите бухгалтеру найти все пары одинаковых сумм.
Программа получает на вход список чисел, представляющих суммы платежей. Посчитайте, сколько в этом списке пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу, образуют одну пару, которую необходимо посчитать.
Ввод:
100 200 100 300 200 100
Вывод:
4
Создайте программу, которая считывает числа, введённые пользователем.
Ваша программа должна вычислить и вывести среднее значение всех введённых чисел. Затем программа должна вывести все значения, которые меньше среднего, затем — равные среднему (если такие есть), и затем — все значения, которые больше среднего. Перед каждым списком значений должна выводиться соответствующая метка.
Здесь в задачах будет описание того, как должна работать программа.
Напишите программу, которая выводит случайные слова из списка, введённого пользователем. Каждое слово должно появляться только один раз, и после вывода слово удаляется из списка с помощью оператора del.
Сотрудник колл-центра записывает все звонки, которые он обрабатывает за день. Но иногда случается, что некоторые номера звонят несколько раз. Ваша задача — создать программу, которая поможет составить отчет и включить в него каждый уникальный номер телефона, с которым сотрудник общался в течение дня, в порядке их первого поступления.
Программа считывает номера телефонов, введённые пользователем, до тех пор, пока пользователь не введёт пустую строку. После этого программа должна вывести каждый уникальный номер ровно один раз, в порядке его первого появления.
Ввод:
+1234567890
+0987654321
+1234567890
+1112223333
+0987654321
Вывод:
+1234567890
+0987654321
+1112223333
Напишите программу, которая будет форматировать список слов в виде строки по правилам русского языка. Программа должна:
Считывать список слов, введенных пользователем, до тех пор, пока не будет введена пустая строка.
Объединить эти слова в одну строку так, чтобы:
Слова разделялись запятыми.
Перед последним словом добавлялось слово “и”.
Если введено только одно слово, оно должно выводиться без изменений.
Выведите получившуюся строку.
Ввод:
Введите слова (пустая строка для завершения):
яблоки
апельсины
бананы
лимоны
Вывод:
Форматированный список:
яблоки, апельсины, бананы и лимоны
Чтобы выиграть главный приз в определенной лотерее, нужно, чтобы все 6 номеров на вашем билете совпали с 6 номерами, которые случайным образом выбирает организатор лотереи из диапазона от 1 до 49. Напишите программу, которая генерирует случайный набор из 6 номеров для лотерейного билета. Убедитесь, что среди выбранных номеров нет повторяющихся. Выведите номера в порядке возрастания.
Вывод:
Лотерейные номера: 5, 12, 23, 34, 41, 47
Ваш билет: 8, 19, 22, 33, 39, 48
Увы, вы не выиграли в этот раз.
Создайте программу «Генератор персонажей», которая поможет пользователю распределить очки между характеристиками персонажа для ролевой игры.
У пользователя есть 30 очков, которые он может распределить между четырьмя характеристиками: Сила, Здоровье, Мудрость и Ловкость.
Каждая характеристика изначально равна нулю. Пользователь может добавлять очки к характеристикам или возвращать их обратно в общий запас.
Пользователь не может использовать больше 30 очков и не может уменьшить значение характеристики ниже нуля.
Программа должна следить за тем, чтобы пользователь не перераспределил больше очков, чем доступно, и корректно обновлять количество оставшихся очков после каждой операции.
Пользователь должен видеть текущие значения всех характеристик и количество оставшихся очков.
Программа завершится, когда пользователь распределит очки по своему усмотрению и укажет, что больше не хочет вносить изменения.
Пример диалога с программой
У вас есть 30 очков.
Сила: 0, Здоровье: 0, Мудрость: 0, Ловкость: 0
Оставшиеся очки: 30
Выберите характеристику (1-Сила, 2-Здоровье, 3-Мудрость, 4-Ловкость) и количество очков, которые хотите добавить или убрать:
1 10
Сила: 10, Здоровье: 0, Мудрость: 0, Ловкость: 0
Оставшиеся очки: 20
Выберите характеристику и количество очков:
3 5
Сила: 10, Здоровье: 0, Мудрость: 5, Ловкость: 0
Оставшиеся очки: 15
Выберите характеристику и количество очков:
1 -5
Сила: 5, Здоровье: 0, Мудрость: 5, Ловкость: 0
Оставшиеся очки: 20