Как найти длиннейшее слово в строке python

How can I use python to find the longest word from a set of words?
I can find the first word like this:

'a aa aaa aa'[:'a aa aaa aa'.find(' ',1,10)]

'a'

rfind is another subset

'a aa aaa aa'[:'a aa aaa aa'.rfind(' ',1,10)]

'a aa aaa'

asked Jul 28, 2009 at 9:10

Niklas Rosencrantz's user avatar

2

If I understand your question correctly:

>>> s = "a aa aaa aa"
>>> max(s.split(), key=len)
'aaa'

split() splits the string into words (seperated by whitespace); max() finds the largest element using the builtin len() function, i.e. the string length, as the key to find out what “largest” means.

answered Jul 28, 2009 at 9:15

balpha's user avatar

balphabalpha

49.8k18 gold badges109 silver badges131 bronze badges

0

Here is one from the category “How difficult can you make it”, also violating the requirement that there should be no own class involved:

class C(object): pass
o = C()
o.i = 0
ss = 'a aa aaa aa'.split()
([setattr(o,'i',x) for x in range(len(ss)) if len(ss[x]) > len(ss[o.i])], ss[o.i])[1]

The interesting bit is that you use an object member to maintain state while the list is being computed in the comprehension, eventually discarding the list and only using the side-effect.

But please do use one of the max() solutions above 🙂 .

answered Jul 28, 2009 at 9:53

ThomasH's user avatar

ThomasHThomasH

22.1k13 gold badges60 silver badges61 bronze badges

1

I thought it meant more like (code below) which outputs the longest word in the string. In this case it is “sentence” however, simply change return(len(s)) which would output howmany characters are in the longest word which would be 8.

def longest_word(text):
    s = max(text.split(), key = len)
    return(s)

if __name__ == "__main__":
    print(longest_word("This is a sentence with words and such."))

Flair's user avatar

Flair

2,5191 gold badge27 silver badges40 bronze badges

answered Sep 5, 2021 at 0:22

APPrentice's user avatar

Another way to find longest word in string:

a="a aa aaa aa"
b=a.split()
c=sorting(b,key=len)
print(c[-1])    

answered Jan 21, 2017 at 10:44

Rohit's user avatar

RohitRohit

194 bronze badges

def largest_word(sentence):
    split_sentence = sentence.split(' ')
    largest_word = ''
    for i in range(len(split_sentence)):
        if len(split_sentence[i]) > len(largest_word):
           largest_word = split_sentence[i]
    print(largest_word)


sentence = "Improve your coding skills with python"

largest_word(sentence)

answered Aug 14, 2018 at 18:39

Md Shafiqul Islam's user avatar

Вот код, который находит в строке все слова и заносит их в список, а потом печатает эти слова в столбец, как найти самое длинное из этих слов?

list = str(input()).split()

for i in list:
 print(i)

print("") 
print(list)

задан 2 июн 2017 в 7:19

Михаил's user avatar

2

Можно использовать функцию max, и всё получается просто в 1 строку:

list = str(input()).split()
print(max(list, key=len))

Документация

Рабочий пример

ответ дан 2 июн 2017 в 7:25

TheMY3's user avatar

TheMY3TheMY3

9,0632 золотых знака16 серебряных знаков34 бронзовых знака

4

Или так:

sentense = "какое-либо предложение"
words = dict()
for word in sentense.split(" "):
  words[len(word)] = word

biggest_word = words[max(words)]
print(biggest_word) 

MarianD's user avatar

MarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

ответ дан 17 сен 2020 в 13:07

Alex Arzamascev's user avatar

1

Если использовать lambda-функцию, то примет следующий вид:

print (lambda list: (max(list, key=len)))(str(input()).split())

Еще вариант на коленке через сортировку:

print sorted(str(input()).split())[-1]

ответ дан 2 июн 2017 в 9:36

Eugene Dennis's user avatar

Eugene DennisEugene Dennis

2,4721 золотой знак8 серебряных знаков14 бронзовых знаков

txt = input()
txt_list=txt.split()

len_list=[]
dict={}
for i in txt_list :
    len_list.append(len(i))
for l, t in zip (len_list ,txt_list ):
    dict[l]=t


print(dict[max(len_list) ])

aleksandr barakin's user avatar

ответ дан 21 дек 2022 в 15:03

Valery's user avatar

ValeryValery

111 бронзовый знак

2

0 / 0 / 0

Регистрация: 18.12.2015

Сообщений: 6

1

Найти в тексте самое длинное слово

13.05.2016, 00:18. Показов 24499. Ответов 12


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
Ребят, помогите, пожалуйста.

Необходимо определить самое длинное слово в тексте и вывести его на печать. Если таких слов несколько, то вывести их все.

Заранее огромное спасибо!



0



2740 / 2343 / 620

Регистрация: 19.03.2012

Сообщений: 8,832

13.05.2016, 00:27

2

Цикл for и функция len тебе в помощь. Попытайся сделать хоть, что-то сам сначала.



0



0 / 0 / 0

Регистрация: 18.12.2015

Сообщений: 6

13.05.2016, 01:33

 [ТС]

3

Пробовал. Получалось вывести только одно самое длинное слово, несколько – пока что-то никак.



0



vdm_mar

39 / 39 / 25

Регистрация: 25.10.2015

Сообщений: 102

13.05.2016, 01:57

4

Лучший ответ Сообщение было отмечено domerons как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
text = """
Доброго времени суток.
Ребят, помогите, пожалуйста.
 
Необходимо определить самое длинное слово в тексте и вывести его на печать. Если таких слов несколько, то вывести их все.
 
Заранее огромное спасибо!
"""
text = text.replace('.', '').replace(',', '').replace(':', '').replace('!', '').replace('?', '').split()
print(', '.join([word for word in text if len(word) == len(sorted(text, key=len)[-1])]).lower())
Python
1
пожалуйста, необходимо, определить



1



Эксперт Python

4607 / 2028 / 359

Регистрация: 17.03.2012

Сообщений: 10,086

Записей в блоге: 6

13.05.2016, 08:01

5

Посмотри внизу этой страницы.



0



Semen-Semenich

4466 / 3146 / 1112

Регистрация: 21.03.2016

Сообщений: 7,832

13.05.2016, 16:27

6

с регуляркой

Python
1
2
3
4
5
6
7
8
9
10
import re        
text = '''
Доброго времени суток.
Ребят, помогите, пожалуйста.
Необходимо определить самое длинное слово в тексте и вывести его на печать. Если таких слов несколько, то вывести их все.
Заранее огромное спасибо! '''
nev_text = sorted(re.findall(r'w+',text), key=lambda x: len(x), reverse = True)
for i in nev_text :
    if len(i) == len(nev_text[0]):
        print(i)



0



Jabbson

Эксперт по компьютерным сетям

5887 / 3345 / 1033

Регистрация: 03.11.2009

Сообщений: 9,973

13.05.2016, 17:04

7

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

for i in nev_text :
* * if len(i) == len(nev_text[0]):
* * * * print(i)

можно еще цикл сделать через условие фильтра

Python
1
print(*(filter(lambda x: len(x) == len(nev_text[0]), nev_text)), sep='n')

Добавлено через 6 минут

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

key=lambda x: len(x)

Python
1
key=len



1



4466 / 3146 / 1112

Регистрация: 21.03.2016

Сообщений: 7,832

13.05.2016, 17:17

8

Цитата
Сообщение от Jabbson
Посмотреть сообщение

key=len

выдает
TypeError: len() takes exactly one argument (0 given)



0



Jabbson

Эксперт по компьютерным сетям

5887 / 3345 / 1033

Регистрация: 03.11.2009

Сообщений: 9,973

13.05.2016, 17:19

9

значит что-то у нас с Вами разное, у меня питон 3.5

код:

Python
1
2
3
import re
nev_text = sorted(re.findall(r'w+', text), key=len, reverse=True)
print(*(filter(lambda x: len(x) == len(nev_text[0]), nev_text)), sep='n')

Код

пожалуйста
Необходимо
определить



0



39 / 39 / 25

Регистрация: 25.10.2015

Сообщений: 102

13.05.2016, 17:21

10

нужно без скобочек
key=len – правильно
key=len() – неправильно

а почему не сработал key=lambda x: len(x) ? у меня (python3.5) и этот вариант работает



0



Эксперт по компьютерным сетям

5887 / 3345 / 1033

Регистрация: 03.11.2009

Сообщений: 9,973

13.05.2016, 17:22

11

Цитата
Сообщение от vdm_mar
Посмотреть сообщение

а почему не сработал key=lambda x: len(x) ?

а кто говорит, что не сработал?



0



39 / 39 / 25

Регистрация: 25.10.2015

Сообщений: 102

13.05.2016, 17:24

12

Цитата
Сообщение от Jabbson
Посмотреть сообщение

а кто говорит, что не сработал?

значит, pep какой-то нарушен?

Не по теме:

сорри, у меня еще каша в голове



0



4466 / 3146 / 1112

Регистрация: 21.03.2016

Сообщений: 7,832

13.05.2016, 17:25

13

Цитата
Сообщение от Jabbson
Посмотреть сообщение

значит что-то у нас с Вами разное, у меня питон 3.5

у меня 3.4 но я уже разобрался ключ длина слова а я пробовал лямбда функцию возвращающую длину вот и требует аргумент с чего возвращать
…..re.findall(r’w+’,text), key=lambda x: len



0



Напишите функцию, которая будет находить самое длинное слово в предложении. Если будет найдено два и больше слов одинаковой длины, нужно вернуть первое из них. Небуквенные символы (апостроф, точка, запятая и т. п.) считаются частью слова, к которому прилегают.

Примеры

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)

Перейти к содержанию

На чтение 1 мин Просмотров 5.5к. Опубликовано 9 декабря, 2021 Обновлено 9 декабря, 2021

Паоло изучает русский язык: занимается по учебникам, читает книги, слушает музыку. Особенно Паоло понравилась книга “Преступление и наказание”. И ему стало интересно, как найти самое длинное слово в этой книге, чтобы потом сравнить его с аналогом на своём языке.

Напишите программу, которая получает на вход текст и находит длину самого длинного слова в нём. Слова в тексте разделяются одним пробелом.

Пример:

Введите текст: Меня зовут Петр

Самое длинное слово, букв: 5

Что оценивается

Задание считается успешно выполненным, если:

  • результат вывода соответствует условию;
  • input содержит корректное приглашение для ввода;
  • вывод содержит описание результата (выведенные числа сопровождаются текстовым описанием);

Решение задачи:

text = input('Введите строку: ')
count = 0
long_word = 0

for symbol in text:
    if symbol != ' ':
        count += 1
    else:
        if (count > long_word):
            long_word = count
        count = 0
print(long_word)

Задача. Великий и могучий (Python)

( 58 оценок, среднее 1.5 из 5 )

Добавить комментарий