Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2011 22:36:35

bronko
От:
Зарегистрирован: 2011-07-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь по задачке

Здравствуйте. Только начал учиться программировать, возможно буду спрашивать глупости, не кидайте камнями сильно :)

Задача: Написать программу поиска самого длинного слова в строке, разделенной пробелами.

Мой код:

stroka = str(raw_input("Enter your stroke: "))
print "Maximum word's length in your stroke: ", len(max(stroka.split(" ")))
print "Minimum word's length in your stroke: ", len(min(stroka.split(" ")))
print " "
print "The longest word in your stroke: ", max(stroka.split(" "))
print "The shortest word in your stroke: ", min(stroka.split(" "))
Ввожу строку:
What do you think about my programming?
Получаю результат:
Maximum word's length in your stroke: 3
Minimum word's length in your stroke: 4

The longest word in your stroke: you
The shortest word in your stroke: What
Т.е. результат выдает неправильный :(
При этом, если я вместо строки выше ввожу строку:
kkkk kk kkk kkkkk kkkkk kk kkkkkkkkkkkk
то результат верный:
Maximum word's length in your stroke: 12
Minimum word's length in your stroke: 2

The longest word in your stroke: kkkkkkkkkkkk
The shortest word in your stroke: kk
ПРОСЬБА:
Объяснить, почему с осмысленным предложением результат неверный, но с набором одинаковых букв все сходится? Может дело в кодировке? Если да, то как именно и почему это от нее зависит?

просьба 2: есть ли решение данной задачи без использования функции max()?

Спасибо



Отредактировано (Июль 14, 2011 23:14:58)

Офлайн

#2 Июль 14, 2011 23:49:04

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

нужна помощь по задачке

max для списка строк это не max длины строк, а max их значений(кодов)

проще всего реализовать через сортировку списков:

stroki = raw_input("Enter your stroke: ").split()
stroki.sort(key = len)

print "Maximum word's length in your stroke: ", len(stroki[-1])
print "Minimum word's length in your stroke: ", len(stroki[0])
print " "
print "The longest word in your stroke: ", stroki[-1]
print "The shortest word in your stroke: ", stroki[0]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version