Решение модуля 10.1 Инди-курс программирования на Python

Модуль 10.1 (Выражения-генераторы). В этом занятии поговорим о выражениях-генераторах, которые очень похожие на генераторы списков. Их основное отличие в том, что выражение заключается не в квадратных скобках, а в круглых.

Сколько раз можно итерироваться по значениям генератора?

Один

В переменной d хранится следующее выражение-генератор

from random import randint

d = (randint(1, 20) for i in range(7))

Какие функции можно выполнять над переменной d?


sorted(d)

max(d)

min(d)

sum(d)

В переменной d хранится следующее выражение-генератор

from random import randint

d = (randint(1, 20) for i in range(7))

Какие преобразования допустимо делать с переменной d?

set(d)


list(d)


tuple(d)

Какое значение будет храниться в переменной b после выполнения данного кода?

d = (i**2 for i in range(1, 6))
a = list(d)
b = tuple(d)

()

Какое значение будет храниться в переменной b после выполнения данного кода?

d = (i**2 for i in range(1, 6))
a = max(d)
b = min(d)
произойдет ошибка

Что выведет данная программа?

d = (i ** 2 for i in range(1, 6))
print(9 in d, 4 in d)
True False

Что выведет данная программа?

d = (i ** 2 for i in range(1, 6))
print(4 in d, 9 in d)
True True

Что выведет данная программа?

d = (i ** 2 for i in range(1, 6))
print(7 in d, 4 in d)
False False

Ниже представлен код, который вам нужно будет дописать.

В переменную from_10_to_20 при помощи генератора-выражения сохраните последовательность от 10 до 20 включительно

Затем при помощи функции next выведите первые три элемента

И остается вывести оставшиеся элементы в цикле

# Создайте генератор
from_10_to_20 = (i for i in range(10, 21))

# Распечатайте три первых значения
print(next(from_10_to_20))
print(next(from_10_to_20))
print(next(from_10_to_20))

# выведите все оставшиеся
for value in from_10_to_20:
    print(value)

Перед вами список words

Необходимо сохранить в переменной lens генератор-выражение, который генерирует длины слов списка words по порядку.

Больше от вас в этой задаче ничего не требуется.

words = ['feel', 'graduate', 'movie', 'fashionable', 'bacon', 'drop', 'produce', 'acquisition',
         'cheap', 'strength', 'master', 'perception', 'noise', 'strange', 'am']

lens = (len(i) for i in words) #создаем генератор который создает последовательность из длин слов из списка

for i in lens:
    print(i)

Давайте напишем выражение-генератор, который будет генерировать кортеж состоящий из двух элементов: названия дня недели и номер дня в году.

За начало отсчета возьмем наш «любимый» 2022 год. Он начался в субботу, потом воскресенье, понедельник, вторник, …, пятница, суббота и далее по кругу и далее по кругу

Результат выражения-генератор сохраните в переменную days

Названия дней недели должны совпадать с этими значениями:

['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

Значит при первой итерации генератор должен вернуть кортеж

(1, 'Saturday')

При второй итерации вернется значение

(2, 'Sunday')

Ваша задача распечатать на удачу 77 первых дней 2022 года. Выводить на экран нужно сами кортежи и первые десять значений в выводе должны выглядеть вот так:

 

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
liony
liony
8 месяцев назад

import datetime
import types

start_date = datetime.date(2022, 1, 1)

def generate_days():
   for i in range(1, 78):
       yield (i, (start_date + datetime.timedelta(days=i-1)).strftime(‘%A’))

days = generate_days()

for day in days:
   print(day)
   if day[0] == 77:
       break

assert isinstance(days, types.GeneratorType), ‘Вы не создали генератор в переменной days’

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x