Как найти самое короткое слово в питоне

Yes, the examples given are very different.

The first example effectively says:

Take the string s, split it by spaces, and then take each word, x, found and return the minimum value of just the length of x.

The second example effectively says:

Find the minimum value in the list generated by len(x) for x in s.split().

That first example generates an error because the min function expects to compare at least 2 or more elements, and only 1 is provided.

That second example works because the list that is generated by len(x) for x in s.split() converts a string, like say "Python types with ducks?" to a list of word lengths (in my example, it would convert the string to [6, 5, 4, 6]). That list that is generated (this is also why it’s called a generator), is what the min function then uses to find the minimum value inside said list.

Another way to write that first example so that it works like you would expect is like this

def find_short(s):
    min_length = float("inf")

    for x in s.split():
        if len(x) < min_length:
            min_length = len(x)

    return min_length

However, notice how you have to keep track of a variable that you do not have to define using the list generator method in your second example. Although this is not a big deal when you are learning programming for the first time, it becomes a bigger deal when you start making larger, more complex programs.

Sidenote:

Any value that follows the return keyword is what a function «outputs», and thus no more code gets executed.

For example, in your first example (and assuming that the error was not generated), your loop would only ever execute once regardless of the string you give it because it does not check that you actually have found the value you want. What I mean by that is that any time your code encounters a return statement, it means that your function is done.

That is why in my example find_short function, I have an if statement to check that I have the value that I want before committing to the return statement that exits the function entirely.

Можно сделать так:

import re
s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
words = re.sub("[^w]", " ",  s).split()
#  если просто найти все минимальные слова
t = [v for v in words if len(v) == len(min(words))]

# если все слова надо разделить по длине
from itertools import groupby
t1 = {k:list(v) for k,v in groupby(sorted(words, key=len), len)}

print(t1[min(t1)], t)

2 / 2 / 0

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

Сообщений: 20

1

Самое короткое слово в списке

29.06.2022, 17:43. Показов 1239. Ответов 7


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

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



0



New Life

211 / 108 / 44

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

Сообщений: 387

29.06.2022, 17:47

2

Python
1
print(len(min(list(input("Введите предложение: ").split(" ")))))



0



4611 / 3148 / 1112

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

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

29.06.2022, 17:49

3

New Life, ой ли ???
Введите предложение: бро абракатабра фу
11
а по мне так это 2 символа слова фу



2



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

35559 / 19459 / 4071

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

Сообщений: 32,497

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

29.06.2022, 17:50

4

Python
1
2
3
def foo(txt):
    words=txt.split(' ')
    return min(map(len,words))



0



Semen-Semenich

4611 / 3148 / 1112

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

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

29.06.2022, 17:55

5

Catstail, ну задумка то New Life, ясна но не учтено по какому параметру min отбирает слово ( по первой орфографически меньшей букве) а нам нужна длина минимальная

Python
1
print(len(min(input("Введите предложение: ").split(), key = len)))



1



New Life

211 / 108 / 44

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

Сообщений: 387

29.06.2022, 17:56

6

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

ой ли ???

, ошибся — бывает)

Python
1
2
a = input("Введите предложение: ").split(" ")
print(min([len(i) for i in a]))



0



2 / 2 / 0

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

Сообщений: 20

29.06.2022, 18:00

 [ТС]

7

А нельзя а нельзя как-то ограничить количество слов в предложении ?



0



New Life

211 / 108 / 44

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

Сообщений: 387

29.06.2022, 19:40

8

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

А нельзя а нельзя как-то ограничить количество слов в предложении ?

можно из всего что ввели взять первые 3 слова)

Python
1
print(len(min(input("Введите предложение: ").split()[:3], key = len)))



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

29.06.2022, 19:40

Помогаю со студенческими работами здесь

Как найти самое частое слово в списке?
Как найти самое частое СЛОВО в списке? С числами мне объяснили, а вот теперь как со словами?

Из введённых слов нужно выбрать самое длинное и самое короткое
Напишите программу, которая считывает слова, слово «стоп» — сигнал остановки (оно не должно…

Вывести на экран самое длинное им самое короткое название
Даны название трех городов. вывести на экран самое длинное им самое короткое название.

Найти в списке самое короткое слово и вывести адрес строки, в которой слово находится
Подскажите , как это реализовать без использования глобальной переменной?
procedure SearchIt;
var…

В списке символов S1, S2, ., St найти самое короткое слово
Здравствуйте, помогите пожалуйста.
В списке символов S1, S2, …, Sn*найти самое короткое слово,…

Дан текст. По порядку, самое короткое слово, заменить на самое длинное слово, если их длины не совпадают
Дан текст. Первое по порядку самое короткое слово текста заменить на первое по порядку самое…

Определить самое длинное общее слово двух предложений, самое короткое слово первого предложения
Каждое из двух предложений текста записано в отдельной строке. Определить:
— самое длинное общее…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

задача найти самое короткое и длинное название города(формально). Выводится самое короткое название, а длинное нет. Не могу понять в чём проблема. Заранее спасибо.
Вот код :

x1 = str(input())
x2 = str(input())
x3 = str(input())

x11 = len(x1)
x22 = len(x2)
x33 = len(x3)

xmax = max(x11, x22, x33)
xmin = min(x11, x22, x33)

if xmin == x11 or xmin == x22 or xmin == x33:
    if xmin == x11:
        print(x1)
    elif xmin == x22:
        print(x2)
    else:
        if xmin == x33:
            print(x3)
elif xmax == x11 or xmax == x22 or xmax == x33:
    if xmax == x11:
        print(x1)
    elif xmax == x22:
        print(x2)
    else:
        if xmax == x33:
            print(x3)

задан 24 июл 2022 в 14:39

Ilya's user avatar

1

short, *_, long = sorted([
    input(),
    input(),
    input(),
], key=len)
print(
    f'{short = }',
    f'{long = }',
    sep='n'
)

ответ дан 24 июл 2022 в 14:57

Namerek's user avatar

NamerekNamerek

6,1262 золотых знака7 серебряных знаков23 бронзовых знака

1

Не совсем ясно, почему в строке elif xmax == x11 or xmax == x22 or xmax == x33: используется elif. Замените на обычное if

ответ дан 24 июл 2022 в 14:44

Prog's user avatar

ProgProg

4193 серебряных знака15 бронзовых знаков

d = {len(x): x for x in (input() for _ in range(3))}
print('short = ', d[max(d)], 'long = ', d[min(d)])

ответ дан 25 июл 2022 в 6:07

vadim vaduxa's user avatar

vadim vaduxavadim vaduxa

8,89714 серебряных знаков24 бронзовых знака

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

def longWord(string):
    alist = []
    length = 0
    for letter in string:
        if letter != " ":
            length +=1
        else:
            alist.append(length)
            length = 0
        return alist

Поэтому, если ввод «счастливый день», моя функция печати сообщает мне, что самое длинное слово состоит из 5 символов.

Тем не менее, я не могу понять, как написать что-то, что выберет длину самого короткого слова во входной строке. Как бы я это сделал?

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти утечку в телефоне
  • Как найти древний египет на карте
  • Как исправить ошибку в реестре прямых выплат
  • Как найти файл service
  • Как найти халтуру на авито

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии