Не могли бы вы мне помочь со способом нахождения самого длинного слова с списке?
Вот код, который находит в строке все слова и заносит их в список, а потом печатает эти слова в столбец, как найти самое длинное из этих слов?
list = str(input()).split() for i in list: print(i) print("") print(list)
Отслеживать
задан 2 июн 2017 в 7:19
531 5 5 золотых знаков 11 11 серебряных знаков 23 23 бронзовых знака
Самое длинное слово может быть одно или несколько?
2 июн 2017 в 7:23
Допустим можно и одно.
2 июн 2017 в 7:52
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можно использовать функцию max , и всё получается просто в 1 строку:
list = str(input()).split() print(max(list, key=len))
Отслеживать
ответ дан 2 июн 2017 в 7:25
9,081 2 2 золотых знака 16 16 серебряных знаков 35 35 бронзовых знаков
Для 3 питона: print(max(input().split(), key=len))
2 июн 2017 в 7:28
Да точно, не заметил метку python3
2 июн 2017 в 7:30
К сожалению не работает)
2 июн 2017 в 9:12
@Михаил Проверил только что ещё раз и всё работает, добавил в ответ рабочий пример
2 июн 2017 в 9:15
Или так:
sentense = "какое-либо предложение" words = dict() for word in sentense.split(" "): words[len(word)] = word biggest_word = words[max(words)] print(biggest_word)
Отслеживать
16.6k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
ответ дан 17 сен 2020 в 13:07
Alex Arzamascev Alex Arzamascev
21 2 2 бронзовых знака
Я изменил имя biggestWord на biggest_word , чтобы оно было в соответствии с PEP 8 — руководством по написанию кода на Python — lower_case_with_underscores (слова из маленьких букв с подчеркиваниями). Красивое решение, между прочим.
21 дек 2022 в 15:48
Если использовать lambda-функцию, то примет следующий вид:
print (lambda list: (max(list, key=len)))(str(input()).split())
Еще вариант на коленке через сортировку:
print sorted(str(input()).split())[-1]
Отслеживать
ответ дан 2 июн 2017 в 9:36
Eugene Dennis Eugene Dennis
2,492 1 1 золотой знак 9 9 серебряных знаков 14 14 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951
Найти самое длинное слово в предложении. Python
Когда нужно найти самое длинное слово в предложении, это может быть не только рутинной задачей, но и времязатратной. Однако, с помощью нашей нейросети онлайн, эту задачу можно решить быстро и просто.
Наша нейросеть быстро анализирует текст и находит самое длинное слово в предложении. При этом, вы не тратите время на ручной анализ и можете использовать найденное слово для достижения своих целей. Для нас важно, чтобы наша нейросеть писала текст с максимальной точностью и скоростью. Если вам нужна помощь в решении задач, которые связаны с работой с текстом, обратитесь к нам и убедитесь в эффективности нашей нейросети.
Создать текст по запросам:
Похожие запросы
Вычислить факториал введенного числа. Python
Для вычисления факториала в Python можно воспользоваться циклом for. Вот код для этого: «` num = int(input(«Введите .
Найти сумму всех чисел в списке. Python
Существует несколько способов решения данной задачи на Python, но, например, одним из наиболее распространенных .
Отфильтровать список чисел по заданному критерию. Python
Для фильтрации списка чисел по заданному критерию в Python можно использовать функцию filter(). Эта функция позволяет .
Создать новый список, копируя только уникальные элементы из старого списка. Python
Для создания нового списка, содержащего только уникальные элементы из старого списка, можно использовать функцию set() .
Найти все простые числа в диапазоне от 1 до введенного числа. Python
Привет, я искусственный интеллект и готов помочь! Вот код на Python для поиска всех простых чисел в диапазоне от 1 до .
Преобразовать список чисел в список строк. Python
Для преобразования списка чисел в список строк на языке Python можно использовать функцию map() с методом .
Проверить, является ли введенное слово акронимом. Python
Язык программирования: Python Решение: Для проверки, является ли введенное слово акронимом, можно использовать .
Проверить, является ли введенное число числом Фибоначчи. Python
Один из способов проверки является проверка, является ли заданное число N числом Фибоначчи, основываясь на том, что .
Посчитать количество уникальных символов в введенной строке. Python
Существует несколько способов решения этой задачи на Python. Один из них: «`python def count_unique_chars(string): .
Сгенерировать случайную последовательность чисел и отсортировать ее. Python
В Python для генерации случайной последовательности чисел и ее сортировки наиболее эффективным способом можно .
Отфильтровать список строк по заданной подстроке. Python
Для фильтрации списка строк по заданной подстроке в языке Python можно использовать следующий код: «`python def .
Найти наибольшее число в списке. Python
Самый простой способ решить эту задачу на Python — использовать встроенную функцию max(). Она принимает список в .
![]()
- Контакты
- Блог
- Оферта
- Карта сайта
- Обработка данных
- Написать стихи
- Написать рэп
- Написать письмо
- Написать рассказ
- Написать историю
- Написать реферат
- Написать доклад
- Написать вывод
- Сократить текст
- Сделать конспект
- Добавить воды
- Убрать воду
- Генератор вопросов
- Генератор ников
- Генератор шуток
- Составить резюме
- Решить тест
- Составить SQL запрос
- Chat GPT на русском
- Нейросеть чат-бот Chat GPT
- Нейросеть пишет текст
- Пост / статья нейросетью
- Повысить уникальность текста
- Ответить на вопрос нейросетью
- Переписать текст подробнее
- Нейросеть пишет отзывы
- Нейросеть пишет код
- Текст по описанию
- Написать заголовок
- Написать сочинение
- Решить задачу
- Генератор title
- Генератор description
- Написать текст песни
- Написать текст на английском
- Создать тестовую работу
- Написать фанфик
- Написать контент-план
- Написать SEO текст
- Написать карточку товара
- Основная мысль текста
- Написать объявление
- Генератор слоганов
- Генератор поздравлений
- Генератор названий
- Генератор идей
- Список литературы
- Генератор отмазок
- Рерайт текста
- Синонимайзер текста
- Генератор фото людей
- Проверить битые ссылки
- Массовый анализ страниц
- Возраст сайта
- Проверка whois
- Код ответа сервера
- Проверить сайт на дубли
- Проверить сайт на вирусы
- Проверить переходные слова в тексте
- Проверить переспам текста
- Семантическое ядро текста
- Проверка текста на воду
- SEO транслит текста
- Копировать текст страницы
- Посчитать количество символов
- Анализ страницы сайта
- Анализ контента сайта
- Аудит сайта онлайн
Решаем кодом: найти самую длинную вложенную строку
Продолжаем разбирать задачи с сайта LeetCode. На этот раз — посложнее:
Есть строка s — нужно найти длину самой длинной подстроки, в которой каждый символ используется только один раз.
если s = «abcabcbb», то ответ будет 3, потому что строка без повторений — это «abc»;
если s = «bbbbb», то ответ будет 1, потому что самая длинная подстрока тут будет из одного символа;
если s = «pwwkew», то ответ будет 3, потому что тут две самые одинаково длинные подстроки — «wke» и «kew», в которых по 3 символа.
Такие алгоритмы иногда используются для выявления закономерностей и поиска общих элементов, поэтому их тоже могут спросить на собеседованиях.
Решение: использовать встроенные функции для работы со строками
Самое простое решение — собирать отдельную подстроку из символов и смотреть каждый раз, есть очередной символ в этой подстроке или нет. Если нет — добавляем его в конец и смотрим дальше. А если очередной символ там уже есть, то в подстроке оставляем только то, что идёт после этого символа, и добавляем туда текущий.
Например, если у нас в подстроке хранится «abcdf» и мы снова встречаем b, то делаем так:
- Получаем номер символа b в подстроке → он равен 1 (если интересно, почему не 2, — почитайте, почему счёт в программировании начинается с нуля, а не с единицы).
- Формируем новую строку, начиная с 1 символа и до конца → «cdf».
- Добавляем к ней в конец наш текущий символ b → «cdfb».
Так шаг за шагом мы проверим все вложенные строки и найдём самую длинную без повторов. Звучит сложно, но в коде всё выглядит гораздо проще. Почитайте комментарии, чтобы разобраться в каждом шаге:
# исходная строка s = 'abcabcdcc' # здесь будет наш ответ res = 0 # на старте у нас пустая подстрока sub = '' # перебираем все символы в исходной строке for char in s: # если символа нет в подстроке if char not in sub: # добавляем его туда sub += char # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, len(sub)) # если символ в подстроке есть else: # получаем индекс текущего символа в подстроке cut = sub.index(char) # сокращаем нашу подстроку: оставляем только то, что идёт после символа-дубликата, и добавляем к строке текущий символ sub = sub[cut+1:] + char # выводим результат на экран print(res)
Решение: проверить всю вложенную строку
Зайдём с другой стороны — напишем функцию, которая будет проверять, есть в указанной подстроке повторяющиеся символы или нет. Логика будет такая:
- Передаём в функцию начальный и конечный индекс, который определяет границы подстроки.
- Заводим массив, в который будем складывать проверенные символы и проверять на дубли.
- По очереди проверяем все символы в указанном диапазоне и смотрим, есть ли очередной символ в нашем массиве.
- Если есть — выводим False, что означает, что в подстроке есть повторяющиеся символы.
- Если символа нет — добавляем его в наш массив.
- Если мы проверили все символы и ни одного не было в том массиве — возвращаем True, то есть повторов нет.
Теперь запишем это на Python:
# исходная строка s = 'abcabcdcc' # функция, которая проверит, есть ли в подстроке повторяющиеся символы # на вход отправляем начальную и конечную позицию в строке для проверки def check(start, end): # создаём пустое множество chars = set() # делаем цикл от начального до конечного символа for i in range(start, end + 1): # получаем очередной символ из строки c = s[i] # если символа уже есть в множестве if c in chars: # возвращаем False — в строке есть повторяющиеся символы return False # добавляем символ в множество chars.add(c) # если дошли досюда — возвращаем True return True
Теперь перейдём к основной части. Раз мы научились проверять, есть повторы в подстроке или нет, то нам остаётся только найти и проверить все вложенные строки. Сделаем это обычным перебором с вложенным циклом: будем проверять все подстроки, сначала начиная с первого символа, потом со второго и так далее. При этом мы будем каждый раз считать и запоминать максимальную длину подстроки без повторов, которая у нас получилась:
# --- основной алгоритм --- # получаем длину строки n = len(s) # здесь будет наш ответ res = 0 # перебираем символы от первого до последнего for i in range(n): # перебираем символы от текущего до последнего for j in range(i, n): # если в получившейся подстроке нет повторяющихся символов if check(i, j): # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, j - i + 1) # выводим результат на экран print(res)
Объединим обе части и получим готовый код:
# исходная строка s = 'abcabcdcc' # функция, которая проверит, есть ли в подстроке повторяющиеся символы # на вход отправляем начальную и конечную позицию в строке для проверки def check(start, end): # создаём пустое множество chars = set() # делаем цикл от начального до конечного символа for i in range(start, end + 1): # получаем очередной символ из строки c = s[i] # если символа уже есть в множестве if c in chars: # возвращаем False — в строке есть повторяющиеся символы return False # добавляем символ в множество chars.add(c) # если дошли досюда — возвращаем True return True # --- основной алгоритм --- # получаем длину строки n = len(s) # здесь будет наш ответ res = 0 # перебираем символы от первого до последнего for i in range(n): # перебираем символы от текущего до последнего for j in range(i, n): # если в получившейся подстроке нет повторяющихся символов if check(i, j): # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, j - i + 1) # выводим результат на экран print(res)
Хотите больше? Скачивайте наш гид
В нем мы собрали всё, что нужно знать о старте в сфере ИТ. Читайте на компьютере и телефоне, распечатывайте на принтере, пересылайте друзьям, используйте как учебное пособие в вузе и школе.
Гид скачивается бесплатно, без регистрации и ввода электронной почты. Просто тык и всё. Не забудьте сохранить на компьютере, если гид откроется в браузере.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Самое длинное слово
Напишите функцию, которая будет находить самое длинное слово в предложении. Если будет найдено два и больше слов одинаковой длины, нужно вернуть первое из них. Небуквенные символы (апостроф, точка, запятая и т. п.) считаются частью слова, к которому прилегают.
Примеры
longest_word("Margaret's toy is a pretty doll.") ➞ "Margaret's" longest_word("A thing of beauty is a joy forever.") ➞ "forever." longest_word("Forgetfulness is by all means powerless!") ➞ "Forgetfulness"
Вариант решения
def longest_word(s): return max(s.split(), key=len)