Найти тему
programmer's notes (python and more)

Основы программирования на языке Python. Приложение к уроку 19. Решение задач

Оглавление

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Дополнение к уроку

Решения задач на множества из урока 19

Важное замечание. Дзен не только убрало обертку для видео из видеохостингов, но и обертку для программ из github. Теперь, если программа с отступами, то мне придется помещать в статью ее скриншот и ссылку на саму программу в github.

Как обычно разбираем задачки из видеоурока.

Задача 1.
Дан список, состоящий из чисел. Получить множество из списка.
Если число в списке повторяется, то вместо него в множество добавляется строка. Например в списке число 7. В множество добавляется число 7. Если оно встречается дважды, то в множество добавляется '*7'. Если трижды то '*7' и '**7'. И т.д.

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

Решение

Программа primer45.py
Программа primer45.py

Сам код

primer45.py

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

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

Вот второй вариант решения

primer45a.py
primer45a.py

Сам код

primer45a.py

Как вам такое решение. Пришлось однако создавать еще одно множество - копию первого.

Задача 2.
Имеется эталонное множество и набор множеств, нужно найти все множества которые, которые являются подмножествами первого и имеют наименьшую длину

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

Кстати, видеоуроке я допустил ошибку. Если смотрели, то без труда найдете.

primtr46.py
primtr46.py
primer46.py

Задача 3.
Имеется набор строк, требуется найти слово максимальной длины, которое присутствует во всех строках и вывести на консоль. Если таких несколько, то вывести их по слову в строку. Если таких слов нет, то вывести -.

Решение состоит из двух этапов. В начале ищем все общие слова. Он и оказываются в множестве st. Если множество не пусто, то теперь отбираем самые длинные слова. Для это получаем отсортированный список по длинам. А далее дело техники, так в начале идут самые короткие слова.

primer47.py
primer47.py
primer47.py

Второе решение (оно было в видеоуроке) имеет ту же первую часть. Здесь мы определяем сразу наибольшую длину и далее выводим слова с этой длиной.

primer48.py
primer48.py
primer48.py

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Нет плохих языков программирования, есть амбиции программистов
Нет плохих языков программирования, есть амбиции программистов

#программирование #программисты #python #языки программирования