Практическое занятие №44 (1И)
Тема: Реализация циклических алгоритмов в Python.
Цель работы: формирование теоретических и практических навыков работы на языке программирования Python
Оборудование: компьютер с установленной операционной системой Windows, подключение к сети Интернет
Время работы 2 часа
Теоретические сведения
В языке программирования Python циклы существенно проще и яснее для понимания, нежели в ряде других. Некоторые языки предоставляют 3-5 конструкций циклов, иные – и вовсе не имеют таких структур (ряд чисто функциональных языков программирования). В Питоне имеется только два типа циклов: while и for.
1. Конструкция цикла while
while :
else:
break»
2. Конструкция цикла for
for :
else:
break»
Цикл for позволяет перебирать элементы по индексу или напрямую.
Оба вида циклических структур могут включать условные выражения и специальные «прерыватели»: continue, break.
Для успешного решения заданий необходимо понимать устройство циклов в Python, уметь использовать вложенные циклы, стремиться минимизировать количество итераций (при такой возможности).
Ход работы
Задача 1
На вход функция more_than_five(lst) получает список из целых чисел. Результатом работы функции должен стать новый список, в котором содержатся только те числа, которые больше 5 по модулю.
Задача 2. Базовый уровень
Условие
Евгению предоставили строку, состоящую из русских букв разных регистров, и попросили очистить ее от заглавных литер.
Как ему показалось, он написал верный код, но результат совсем не порадовал.
Ниже представлен пример работы «чистильщика строк», которому срочно требуется ваша помощь.
Задача 3. Базовый уровень
Анна решила представить некую таблицу с заглавными и строчными буквами русского алфавита в красивом формате.
Об этом ее попросили англоязычные друзья из социальных сетей.
Недолго думая девушка создала скрипт, который выполнял подобную операцию.
Результат работы программы продемонстрирован ниже.
Сможете повторить (в строках с галочками - их 27 штук, чтобы вам не пришлось долго считать)? Для идентичности результатов примените любой моноширинный шрифт (в котором все символы имеют одинаковую ширину).
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| А а || К к || Х х |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Б б || Л л || Ц ц |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| В в || М м || Ч ч |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Г г || Н н || Ш ш |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Д д || О о || Щ щ |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Е е || П п || Ъ ъ |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Ё ё || Р р || Ы ы |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Ж ж || С с || Ь ь |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| З з || Т т || Э э |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| И и || У у || Ю ю |
^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Й й || Ф ф || Я я |
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Задача 4. *Продвинутый уровень
Условие
Валентина прогуляла лекцию по математике.
Преподаватель решил подшутить над нерадивой студенткой и
попросил ее на практическом занятии перечислить все положительные делители некоторых целых чисел.
Для несложных примеров студентка быстро нашла решения (для числа 6 это: 1, 2, 3, 6; а для числа 16 это: 1, 2, 4, 8, 16), но этим все не закончилось.
На домашнее задание ей дали варианты посложнее: 23436, 190187200, 380457890232.
Решить такое вручную, как вы понимаете, практически нереально.
Вот Валентина и обратилась к вам за помощью.
Помогите ей (при помощи функции all_divisors(number)).
Постарайтесь найти самое оптимальное решение.
Результат представьте в виде списка (не забудьте отсортировать по возрастанию).
Контрольные вопросы:
В чем отличие циклов for и while?
Какова вычислительная сложность цикла for, перебирающего элементы множества (сколько нужно совершить операций)?