>>>> for thing in ('Got %s' % number for number in range(10)):
>…·····print(thing)
>…
>Got 0
>Got 1
>Got 2
>Got 3
>Got 4
>Got 5
>Got 6
>Got 7
>Got 8
>Got 9
8. Определите функцию good, которая возвращает список ['Harry', 'Ron', 'Hermione']:
>>>> def good():
>…·····return ['Harry', 'Ron', 'Hermione']
>…
>>>> good()
>['Harry', 'Ron', 'Hermione']
9. Определите функцию генератора get_odds, которая возвращает нечетные числа из диапазона range(10). Используйте цикл for, чтобы найти и вывести третье возвращенное значение:
>>>> def get_odds():
>…·····for number in range(1, 10, 2):
>…·········yield number
>…
>>>> for count, number in enumerate(get_odds(), 1):
>…·····if count == 3:
>…·········print("The third odd number is", number)
>…·········break
>…
Третье нечетное число равно 5.
10. Определите декоратор test, который выводит строку 'start', когда вызывается функция, и строку 'end', когда функция завершает свою работу:
>>>> def test(func):
>…·····def new_func(*args, **kwargs):
>…·········print('start')
>…·········result = func(*args, **kwargs)
>…·········print('end')
>…·········return result
>…·····return new_func
>…
>>>>
>>>> @test
>… def greeting():
>…·····print("Greetings, Earthling")
>…
>>>> greeting()
>start
>Greetings, Earthling
>end
11. Определите исключение, которое называется OopsException. Сгенерируйте его, чтобы увидеть, что произойдет. Затем напишите код, позволяющий поймать это исключение и вывести строку 'Caught an oops':
>>>> class OopsException(Exception):
>…·····pass
>…
>>>> raise OopsException()
>Traceback (most recent call last):
>··File "", line 1, in
>__main__.OopsException
>>>>
>>>> try:
>…·····raise OopsException
>… except OopsException:
>…·····print('Caught an oops')
>…
>Caught an oops
12. Используйте функцию zip(), чтобы создать словарь movies, который объединяет в пары эти списки: titles = ['Creature of Habit', 'Crewel Fate'] и plots = ['A nun turns into a monster', 'A haunted yarn shop']:
>>>> titles = ['Creature of Habit', 'Crewel Fate']
>>>> plots = ['A nun turns into a monster', 'A haunted yarn shop']
>>>> movies = dict(zip(titles, plots))
>>>> movies
>{'Crewel Fate': 'A haunted yarn shop', 'Creature of Habit': 'A nun turns into a monster'}
Глава 5. Py Boxes: модули, пакеты и программы
1. Создайте файл, который называется zoo.py. В этом файле объявите функцию hours(), которая выводит на экран строку 'Open 9–5 daily'. Далее используйте интерактивный интерпретатор, чтобы импортировать модуль zoo и вызвать его функцию hours().
Так выглядит файл zoo.py:
>def hours():
>····print('Open 9–5 daily')
А теперь импортируем его интерактивно:
>>>> import zoo
>>>> zoo.hours()