Форум сайта python.su
0
Здравствуйте. Я новичок, начал изучать питон. Очень понравился. Программы которые дали чтоб написать на с++ пишу напитоне (разрешили) для обучения. Вот программа:
# -*- coding: utf-8 -*- #кодировка
print ‘введите строку’
l=raw_input()
t=len(l)
l=l.center(t+2) #добовляем по пробелу в начало и вконец
a=-1
z=0
while l!=' 'or z==0:
a=a-1
if l!=' ‘:
z=z+1
z=z/2
print ’длина последнего слова', z
l=l.strip() #убираем по пробелу у начала и конца
суть ее в том что она считает количество букв последнего слова. Вопрос - без строки z=z/2 он выдает ответ в 2 раза больше? Вроде как мне кажется алгоритм правильный… Может ли проблема быть в интерпритаторе (использую линукс с Geany) Заранее спасибо
Офлайн
0
после пересоздания .pyc все пошло как надо
Офлайн
857
stanukihЕсли чисто по-питонячьи:
суть ее в том что она считает количество букв последнего слова
>>> s = 'abc def ghij' >>> >>> len(s.rsplit(None, 1)[-1]) 4 >>>
stanukihТут нужен способ, более общий для всех языков.
Программы которые дали чтоб написать на с++
stanukihА где гарантия, что len() дойдёт до конца строки? Вдруг строка “бесконечная” ?t=len(l)
stanukihДалеко не факт, что строка будет вводиться с экрана. Строка может прийти и по сети. Однако алгоритм должен быть применим как в том, так и в другом случае.print 'введите строку' l=raw_input()
stanukihЭто ужасный стиль. Никогда так не делай, если без этого можно обойтись. Всегда думай, что у тебя нет конечной строки, а потому и добавить к ней ничего нельзя.l=l.center(t+2) #добовляем по пробелу в начало и вконецl=l.strip() #убираем по пробелу у начала и конца
Отредактировано py.user.next (Сен. 23, 2014 00:17:21)
Офлайн
2
len(s.split(' ')[-1])
Офлайн
857
bs0dТак как ему нужно последнее слово, применяется str.rsplit(), которая сразу начинает деление справа.
а почему не так?
s.split()
s.split(' ')
>>> 'a b'.split() ['a', 'b'] >>> 'a b'.split(' ') ['a', '', '', 'b'] >>>
Офлайн