Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты ВвИТ, СиСС, Экзамен 3 сем, 2021.docx
Скачиваний:
38
Добавлен:
21.01.2022
Размер:
41.28 Кб
Скачать

30. Что такое генератор в python? Какое главное преимущество? Реализуйте простейший генератор.

Генератор в питоне - функция с возможностью приостановить и продолжить работу, она возвращает итератор, по которому проходить пошагово и получить доступ к одному значению с каждой итерацией.

Главное преимущество заключается в инструкции yield, которая используется вместо return и уведомляет интерпретатор о том, что это генератор и возвращает итератор.

Пример генератора:

def fibonacci(xterms):

# первые два условия

x1 = 0

x2 = 1

count = 0

if xterms <= 0:

print("Укажите целое число больше 0")

elif xterms == 1:

print("Последовательность Фибоначчи до", xterms, ":")

print(x1)

else:

while count < xterms:

xth = x1 + x2

x1 = x2

x2 = xth

count += 1

yield xth

fib = fibonacci(5)

print(next(fib))

print(next(fib))

print(next(fib))

print(next(fib))

print(next(fib))

print(next(fib))

Задачи

Задачи идут не по порядку, условие может не совпадать слово в слово, но суть одинаковая.

1. Дан список из n элементов строчного типа. Удалить все элементы, состоящие из пустых строк.

Решение:

lst = list(filter(lambda s: s != "", lst)))

Пояснение

Функцией filter() мы фильтруем список условием, заданным лямбда-функцией, а именно оставляем все значения списка, кроме пустых строк. Функцией list() мы приводим полученный отфильтрованный кортеж к списку и записываем его в изначальную переменную.

2. Дана строка. Если количество символов >10, то вывести первые 10 символов и троеточие. Иначе вывести строку.

Пример:

Добрый вечер! > Добрый веч...

Привет > Привет

Решение:

print(f"{str[:10]}..." if len(str) > 10 else str)

Пояснение

Конструкция f”{переменная}строка” позволяет нам форматировать строку и выводить переменные. Мы срезаем строку до 10 символа при условии, что длина строки больше 10. Иначе пишем строку.

3. Дан массив из н элементов, удалить все элементы значения которых равны 20 или 22.

Решение:

lst = list(filter(lambda x: x != 22 or x != 22, lst))

Пояснение

Функцией filter() мы оставляем значения списка, не равные 20 и 22, после чего полученный кортеж приводим к списку функцией list()

4. Дан словарь, вывести только те пары, в которых ключ и значение одинаковые

Решение:

for i in dct:

if i == dct[i]: print(i, dct[i])

Пояснение

Циклом мы перебираем ключи словаря и если ключ и значение равны, то выводим их.

5. Дан список, обработать его так, чтоб в нём остались только уникальные значения

Решение:

lst = list(set(lst))

Пояснение

Функция set() приводит список к множеству, где могут содержаться только уникальные значения, и, как следствие, все неуникальные значения удаляются. Функцией list() мы приводим полученное множество обратно к списку

6. Дано два словаря. Добавить пары ключ значение первому словарю из второго. Если ключи в словарях совпадают, то взять значения из второго.

Решение:

dct1.update(dct2)

Пояснение

Функция словаря update() объединяет два словаря, при том,если ключи совпадают, то значения берутся из второго словаря

7. Дана строка. Найдите в ней все гласные буквы. Вывести их количество.

Решение:

print(len(list(filter(lambda x: x.lower() in "aeiou", s))))

Пояснение

1. Фильтруем строку функцией filter(), где задано условие лямбда-функцией

2. Приводим кортеж в список функцией list()

3. Находим длину списка функцией len()

Остальных задач пока что нет, но как только они появятся, то сразу же будут добавлены. Если у вас есть эти задачи, то пишите в телеграм @edward_vishnevsky.

8. Нет информации

Решение:

Пояснение

9. Нет информации

Решение:

Пояснение

10. Нет информации

Решение:

Пояснение

11. Нет информации

Решение:

Пояснение

12. Нет информации

Решение:

Пояснение