Пет функции

Предадени решения

Краен срок:
19.03.2014 17:00
Точки:
10

Срокът за предаване на решения е отминал

Напишете следните пет функции:

is_pangram

Да се напише функция is_pangram(sentence), която връща True или False в зависимост от това дали подаденият като аргумент стринг е панграм на кирилица или не. Панграма е изречение, включващо всички букви от азбуката.

>>> is_pangram('Ах, чудна българска земьо, полюшвай цъфтящи жита!')
True
>>> is_pangram('Малката пухкава панда яде бамбук.')
False

char_histogram

Да се напише функция char_histogram(text), която приема като аргумент стринг и връща речник. Ключовете трябва да са символите в текста, а стойностите - колко пъти се съдържат в стринга.

>>> char_histogram('This is an example!')
{' ': 3, 'i': 2, 'a': 2, 'e': 2, 's': 2, 'h': 1, 'l': 1, 'm': 1, 'n': 1, 'x': 1, '!': 1, 'p': 1, 'T': 1}

sort_by

Да се напише функция sort_by(func, arguments), която приема функция с два аргумента func и списък, който трябва да бъде сортиран като за критерий се използва подадената функция. Функцията func приема два елемента на оригиналния списък и връща положително число, ако първият ѝ аргумент трябва да е след втория в сортирания списък, в противен случай, редът им трябва да се запази.

>>> sort_by(lambda x, y: len(x) - len(y), ['abc', 'a', 'ab'])
['a', 'ab', 'abc']

group_by_type

Да се напише функция group_by_type(dictionary), която приема речник и връща нов речник, в който елементите на стария речник са групирани по типа на ключовете в стария

>>> group_by_type({'a': 12, 'b': 1, 1: "foo"})
{<class 'str'>: {'b': 1, 'a': 12}, <class 'int'>: {1: 'foo'}}
>>> group_by_type({(1, 2): 12, ('a', 1): 1, 1: 'b', 'c': 15})
{<class 'str'>: {'c': 15}, <class 'int'>: {1: 'b'}, <class 'tuple'>: {(1, 2): 12, ('a', 1): 1}}

anagrams

Да се напише функция anagrams(words). Тя трябва да приема един аргумент на име words, който е списък от низовe. Функцията трябва да върне списък от списъци с всички думи, които са анаграми една на друга. Анаграма е дума или фраза образувана от буквите на друга дума или фраза, чрез пермутация.

Редът на списъците и на думите в резулата няма значение.

Пример:

>>> anagrams(['army', 'mary', 'ramy', 'astronomer', 'moonstarer', 'debit card', 'bad credit', 'bau'])
[['army', 'mary', 'ramy'], ['astronomer', 'moonstarer'], ['debit card', 'bad credit'], ['bau']]

Забележка: вашето решение може да връща списъците или думите в различен ред. [['astronomer', 'moonstarer'], ['debit card', 'bad credit'], ['mary', 'army', 'ramy']] също е валиден отговор.