Найти тему
Практика Python

Решение практической задачи № 3 на Python

Условие: «Получить от пользователя две произвольные строки. Создать из них одну строку максимально возможной длины. В состав её могут входить только строчные буквы, причем ни одна из них не может повторяться»

Решение № 1.

Сначала по традиции начнем с самого трудоёмкого способа. Получим от пользователя строки и конкатенируем их…

Конкатенация – это сложение строк. Если

str1 = ’asd’, str2 =’zxc’

то:

str1 + str2 = ‘asdzxc’

Кроме это строки можно умножать. Например в данном примере:

str1 * 3 = ’asdasdasd’

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

Решение с помощью перебора совпадений в цикле
Решение с помощью перебора совпадений в цикле

Решение № 2

Второй способ использует свойства множеств. Множество – это сущность, очень похожая на списки, но она может содержать только не повторяющиеся элементы. Множества невероятно удобны для отсеивания повторяющихся элементов. Создаются множества так:

x = set (str)

В нашем примере мы создаем множество и одновременно конкатенируем пользовательские строки :

my_dist = set(string1+string2)

Таким образом, пользовательские строки сливаются и из них исключаются повторяющиеся элементы. Затем мы сортируем полученное множество с помощью функции sorted().

О функции sorted(), конкатенации строк, а также о методе списков .sort() подробно описано в решении задачи № 2.

Далее, чтобы преобразовать полученное в строку – используем метод .join(). Его синтаксис:

х .join(list)

Здесь он из списка list соберет строку с разделителем х между элементами. В нашем случае х = ‘’, т.е. разделителя нет.

Решение с помощью свойств множества и метода .join()
Решение с помощью свойств множества и метода .join()

Впрочем, все это можно было сделать и не растягивая на 4 строки:

Решение в одну строку
Решение в одну строку

На этом остановимся. Если у Вас, уважаемый читатель, есть более элегантные способы решения этой задачи – прошу поделиться ими !

Конструктивная критика приветствуется.

Эта статья была полезной? Поставьте лайк и поделитесь с друзьями в социальных сетях!

Оставьте отзывы и замечания!

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

Предыдущая задача:

Решение практической задачи № 2

Более полное описание подходов, методов и функций, применяемых в этом решении:

Основы работы со строками

Методы строк. Часть 1

Основы работы со списками

Методы списков. Часть 1

Основы работы с числами

Числовые функции.Часть 1

База знаний

Функции: set()

Методы: .join()

Типы данных: str (строки)