Ребят, можете объяснить что от меня хотят?
Делаю такой лабораторные, 4 за вечер так сказать и тут такое задание :"Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв, между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать все слова последовательности, которые отличаются от последнего слова, предварительно превратив каждое из них по следующему правилу: удалить из слова все предыдущие вхождения последней буквы." Можете объяснить что нужно в этом задании сделать?
Ответы (2 шт):
В таких случаях лучше просить пояснить преподавателя, описание ниже только моё мнение на основе прочитанного. Преподаватель вполне мог иметь ввиду что-то другое.
На вход подается последовательность из слов, от 2 до 30, разделенных пробелами (не обязательно одним) и заканчивается точкой:
"мама мыла раму когда рама мыла здесь было слово еще слова рама."
Нужно взять все слова, которые отличаются от последнего слова, в данном случае "рама": мама мыла раму когда мыла здесь было слово еще слова. А дальше в каждом слове удалить буквы, которые равны последней, кроме самой последней.
Если это слово "мама" и последняя буква "а", то удаляем так "мма". Если это молоко, то удаляем все буквы "о", кроме самой последней "млко". По итогу должно получится так: "мма мыла раму когда мыла здесь было слво ще слова".
ну вы не думайте о коде, просто попробуйте решить на бумаге задачу в лоб:
алгоритм же в принципе простой:
разделить строку на слова используя метод
split()пройти последовательно от первого слова до предпоследнего и запоминать последнюю букву слова в некоторый список
если слово отличается от последнего слова в списке, то удалить у него все буквы, которые присутствуют в собираемом списке,
для этого можно пройтись по анализируемому слову как по списку букв и проверять, присутствуют ли буквы в списке и из букв, которые в списке не присутствуют собрать новое слово
для этого нужно только for и not in