"""
Есть два списка:
tutors = [
    'Иван', 'Анастасия', 'Петр', 'Сергей',
    'Дмитрий', 'Борис', 'Елена'
]
klasses = [
    '9А', '7В', '9Б', '9В', '8Б', '10А', '10Б', '9А'
]


Необходимо реализовать генератор, возвращающий кортежи вида (<tutor>, <klass>), например:
('Иван', '9А')
('Анастасия', '7В')
...

Количество генерируемых кортежей не должно быть больше длины списка tutors.
Если в списке klasses меньше элементов, чем в списке tutors, необходимо вывести последние
кортежи в виде: (<tutor>, None), например:
('Станислав', None)

Доказать, что вы создали именно генератор. Проверить его работу вплоть до истощения.
Подумать, в каких ситуациях генератор даст эффект.

"""

tutors = [
    'Иван',
    'Анастасия',
    'Петр',
    'Сергей',
    'Дмитрий',
    'Борис',
    'Елена'
]

klasses = ['9А', '7В', '9Б', '9В', '8Б', '10А']


def tuple_generator(list_name, list_classes):
    count = 0
    len_klasses = len(klasses)
    for name in list_name:
        count += 1
        final_tuple = (name, (list_classes[count] if count < len_klasses else None))
        yield final_tuple


tuples = tuple_generator(tutors, klasses)
print(type(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))

487a955ed1d3211e29b4439dda3aa586edee05a7
<mask token>

<mask token>


def tuple_generator(list_name, list_classes):
    count = 0
    len_klasses = len(klasses)
    for name in list_name:
        count += 1
        final_tuple = name, list_classes[count
            ] if count < len_klasses else None
        yield final_tuple


<mask token>

<mask token>


def tuple_generator(list_name, list_classes):
    count = 0
    len_klasses = len(klasses)
    for name in list_name:
        count += 1
        final_tuple = name, list_classes[count
            ] if count < len_klasses else None
        yield final_tuple


<mask token>
print(type(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))

<mask token>
tutors = ['Иван', 'Анастасия', 'Петр', 'Сергей', 'Дмитрий', 'Борис', 'Елена']
klasses = ['9А', '7В', '9Б', '9В', '8Б', '10А']


def tuple_generator(list_name, list_classes):
    count = 0
    len_klasses = len(klasses)
    for name in list_name:
        count += 1
        final_tuple = name, list_classes[count
            ] if count < len_klasses else None
        yield final_tuple


tuples = tuple_generator(tutors, klasses)
print(type(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))

"""
Есть два списка:
tutors = [
    'Иван', 'Анастасия', 'Петр', 'Сергей',
    'Дмитрий', 'Борис', 'Елена'
]
klasses = [
    '9А', '7В', '9Б', '9В', '8Б', '10А', '10Б', '9А'
]


Необходимо реализовать генератор, возвращающий кортежи вида (<tutor>, <klass>), например:
('Иван', '9А')
('Анастасия', '7В')
...

Количество генерируемых кортежей не должно быть больше длины списка tutors.
Если в списке klasses меньше элементов, чем в списке tutors, необходимо вывести последние
кортежи в виде: (<tutor>, None), например:
('Станислав', None)

Доказать, что вы создали именно генератор. Проверить его работу вплоть до истощения.
Подумать, в каких ситуациях генератор даст эффект.

"""

tutors = [
    'Иван',
    'Анастасия',
    'Петр',
    'Сергей',
    'Дмитрий',
    'Борис',
    'Елена'
]

klasses = ['9А', '7В', '9Б', '9В', '8Б', '10А']


def tuple_generator(list_name, list_classes):
    count = 0
    len_klasses = len(klasses)
    for name in list_name:
        count += 1
        final_tuple = (name, (list_classes[count] if count < len_klasses else None))
        yield final_tuple


tuples = tuple_generator(tutors, klasses)
print(type(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
print(next(tuples))
