Определить длину самого короткого слова в строке

В заданной строке найти самое короткое слово.

В Python у строкового типа данных есть метод split(), который разделяет слова по пробелу (или другому символу, если он передан в качестве аргумента). Получается список слов.

Далее из этого списка можно извлекать отдельные слова, обращаясь к ним по индексам.

В программе ниже сначала предполагается, что первое слово в списке и есть самое короткое. Остальные слова перебираются в цикле, где их длина сравнивается со словом в переменной shortest. Если длина текущего слова меньше, то значение shortest заменяется.

string = input()
 
words = string.split()
 
shortest = words[0]
 
for i in words[1:]:
    if len(i) < len(shortest):
        shortest = i
 
print(shortest)
print(len(shortest))

Пример выполнения:

ones two three four five six
two
3

Комментарии

Если же вам нужно будет вывести последнее самое короткое слово из встретившихся, строку 

if len(i) < len(shortest):

можно заменить на 

if len(i) <= len(shortest):

Здравствуйте! Я так понимаю ваша программа не совсем корректна. Так например есть предположим имеется такая строка one two?! tree! four five!! То подсчет будет не верным, ведь словом является только набор букв а символы не должны считаться...

Полное решение как я думаю этой задачи
s = str(input("Введите текст: "))
 
a = ''
 
for i in range(len(s)):
 
    if 'a' <= s[i] <= 'z':
 
        a += s[i]
 
    else:
 
        a += ','
 
    rez = a.split(',')
 
 
rezult = list(filter(None, rez))
 
print(rezult)
 
 
for i in range(len(rezult)):
 
    for j in range(len(rezult)):
 
        if len(rezult[i]) < len(rezult[j]):
 
            min_el = len(rezult[i])
            el = rezult[i]
 
print(el)
print(min_el)

s = str(input("Введите текст: "))
 
a = ''
 
for i in range(len(s)):
 
    if 'a' <= s[i] <= 'z':
        a += s[i]
 
    elif 'а' <= s[i] <= 'я':
        a += s[i]
 
    else:
 
        a += ','
 
    rez = a.split(',')
 
 
rezult = list(filter(None, rez))
 
print(rezult)
 
 
for i in range(len(rezult)):
 
    for j in range(len(rezult)):
 
        if len(rezult[i]) < len(rezult[j]):
 
            min_el = len(rezult[i])
            el = rezult[i]
 
print("Самое короткое слово - ", el)
print("Количество символов - ", min_el)

s = str(input("Введите текст: "))
 
a = ''
el = ''
b = list()
 
for i in range(len(s)):
 
    if 'a' <= s[i] <= 'z':
        a += s[i]
    elif  'a'.upper() <= s[i] <= 'z'.upper():
        a += s[i]
 
    elif  'а'.upper() <= s[i] <= 'я'.upper():
        a += s[i]
 
    elif 'а' <= s[i] <= 'я': 
        a += s[i]
 
    else:
 
        a += ','
 
    rez = a.split(',')
 
 
rezult = list(filter(None, rez))
 
 
 
 
for i in range(len(rezult)):
 
    b.append(len(rezult[i]))
 
for i in range(len(rezult)):
 
    if len(rezult[i]) == min(b):
        el += rezult[i] + ' '
 
print('\n',"Текст без лишних знаков - ", ' '.join(rezult))
print("Самые короткие слова по длине - ", str(el))
print("Количество символов самых коротких слов - ", min(b))