Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2018 19:43:40

Aadevaza
Зарегистрирован: 2018-03-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка

Задачка
Дана строка символов. Признак конца строки - символ перехода на новую строку. Строка состоит из слов, которые отделены друг от друга пробелами. Вывести самое длинное слово и его порядковый номер.

Собственно, в чем вопрос. Устраиваюсь на работу, дали домашку из 4 задач и помимо этого нужно еще выучить кучу инфы связанной с бух. учетом и налогообложением. Принцип понимаю, но слишком много пробелов в знании, не успеваю все почерпнуть.

s = input()
l = len(s)
m = 0
ind = 0
count = 0
for i in range(l):
if s != ‘ ’:
count += 1
else:
if count > m:
m = count
ind = i - count
count = 0

if count > m:
m = count
ind = i - count + 1

print(s)
Так я найду самое длинное слово. Как теперь сюда внедрить подсчет символов этого самого длинного слова?

Офлайн

#2 Март 27, 2018 20:09:14

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Задачка

 >>> doc='''Дана строка символов. Признак конца строки - символ перехода на новую строку. Строка состоит из слов, которые отделены друг от друга пробелами. Вывести самое длинное слово и его порядковый номер. 
Собственно, в чем вопрос. Устраиваюсь на работу, дали домашку из 4 задач и помимо этого нужно еще выучить кучу инфы связанной с бух. учетом и налогообложением. Принцип понимаю, но слишком много пробелов в знании, не успеваю все почерпнуть. '''
>>> lst = []
>>> for i in doc.split('\n'):
	for j in i.split():
		lst.append(j)
>>> word = sorted(lst,key=lambda x: len(x))[-1]
>>> print(word, lst.index(word))
налогообложением. 55
>>> 

Офлайн

#3 Март 28, 2018 01:54:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Задачка

vic57
в чем вопрос. Устраиваюсь
  
for i in doc.split('\n'):
	for j in i.split():
		lst.append(j)
word = sorted(lst,key=lambda x: len(x))[-1]
Нормально так точка входит в слово при подсчёте. А при строке “да да да. да” она выдаст слово “да.”, потому что у него длина три.

По условию же нет никаких точек между словами, только слова, пробелы и конец строки.
  
>>> s = 'aa bbb cc dddd ee'
>>> 
>>> max(enumerate(s.split(), 1), key=lambda i: len(i[1]))
(4, 'dddd')
>>>



Офлайн

#4 Март 28, 2018 09:09:17

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Задачка

ну методов много, можно через re почистить

 >>> import re
>>> lst = [i for i in re.split(r'[\n., ]',doc) if i]
>>> sorted(lst,key=lambda x: len(x))
['-', 'и', 'в', '4', 'и', 'с', 'и', 'в', 'на', 'из', 'от', 'на', 'из', 'но', 'не', 'его', 'чем', 'еще', 'бух', 'все', 'Дана', 'слов', 'друг', 'дали', 'кучу', 'инфы', 'конца', 'новую', 'друга', 'самое', 'слово', 'номер', 'задач', 'этого', 'нужно', 'много', 'строка', 'строки', 'символ', 'строку', 'Строка', 'вопрос', 'работу', 'помимо', 'учетом', 'знании', 'Признак', 'состоит', 'которые', 'Вывести', 'длинное', 'домашку', 'выучить', 'Принцип', 'понимаю', 'слишком', 'успеваю', 'символов', 'перехода', 'отделены', 'пробелов', 'пробелами', 'связанной', 'порядковый', 'Собственно', 'почерпнуть', 'Устраиваюсь', 'налогообложением']

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version