Подскажите что не так
class MinMaxWordFinder:
def __init__(self):
self.min_word = 0
self.max_word = 0
self.list_word = []
def add_sentence(self, text):
self.list_word += text.split()
self.min_word = len(min(self.list_word, key=len))
self.max_word = len(max(self.list_word, key=len))
def shortest_words(self):
return sorted(list(filter(lambda x: len(x) == self.min_word, self.list_word)))
def longest_words(self):
return sorted(set(filter(lambda x: len(x) == self.max_word, self.list_word)))
Условие:
Напишите класс MinMaxWordFinder. Класс должен уметь анализировать текст и находить в нём слова наименьшей и наибольшей длины. Текст состоит из предложений, которые добавляются в обработку методом add_sentence. Метод shortest_words возвращает список самых коротких на данный момент слов, метод longest_words — самых длинных. Слова, возвращаемые методами shortest_words и longest_words, должны быть отсортированы по алфавиту.
Если одно из самых коротких слов встретилось в исходных предложениях несколько раз, оно должно столько же раз повториться в списке самых коротких слов. Самые длинные слова наоборот должны входить в список без повторов.
Формат ввода
Каждый тест представляет собой код, в котором будет использоваться ваш класс. Файл c решением не обязательно называть solution.py, он будет переименован автоматически. Тест запускается с вашим классом, а его вывод сравнивается с правильным решением.
var a:array[1..n] of integer;
i,s:integer; sr:real;
begin
Randomize;
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=random(21);
write(a[i]:3);
end;
writeln;
s:=0;
for i:=1 to n do s:=s+a[i];
sr:=s/n;
writeln('Среднее арифметическое = ',sr:6:2);
writeln('Номера элементов, больших среднего арифметического:');
for i:=1 to n do
if a[i]>sr then write(i:3);
writeln;
end.
Пример:
Массив:
9 19 14 8 7 10 5 10 6 14 15 2 11 17 13
Среднее арифметическое = 10.67
Номера элементов, больших среднего арифметического:
2 3 10 11 13 14 15
begin
var a:=ArrRandom(ReadInteger('n='),1,99);
a.Println;
var k:=ReadInteger('k=');
Writeln('Сумма чисел, кратных ',k,': ',
a.Where(x->x mod k=0).Sum)
end.
Тестовое решение:
n= 18
45 17 36 15 65 17 97 44 49 43 60 51 66 72 18 55 71 85
k= 12
Сумма чисел, кратных 12: 168
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
var a:=ArrRandom(ReadInteger('n='),1,20);
a.Println;
a.Where((x,i)->x=i+1).Println
end.
Тестовое решение:
n= 16
17 2 1 14 20 19 10 3 9 15 14 4 2 7 2 16
2 9 16