СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Практические занятие №44

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Практические занятие №44»

Практическое занятие №44 (1И)

Тема: Реализация циклических алгоритмов в Python.

Цель работы: формирование теоретических и практических навыков работы на языке программирования Python

Оборудование: компьютер с установленной операционной системой Windows, подключение к сети Интернет

Время работы 2 часа

Теоретические сведения

В языке программирования Python циклы существенно проще и яснее для понимания, нежели в ряде других. Некоторые языки предоставляют 3-5 конструкций циклов, иные – и вовсе не имеют таких структур (ряд чисто функциональных языков программирования). В Питоне имеется только два типа циклов: while и for.

1. Конструкция цикла while

while :

else:

break»

2. Конструкция цикла for

for :

else:

break»

Цикл for позволяет перебирать элементы по индексу или напрямую.

Оба вида циклических структур могут включать условные выражения и специальные «прерыватели»continuebreak.

Для успешного решения заданий необходимо понимать устройство циклов в Python, уметь использовать вложенные циклы, стремиться минимизировать количество итераций (при такой возможности).

Ход работы

Задача 1

На вход функция more_than_five(lst) получает список из целых чисел. Результатом работы функции должен стать новый список, в котором содержатся только те числа, которые больше 5 по модулю.


def more_than_five(lst):

new_lst = []

for number in lst:

if abs(number) 5:

new_lst.append(number)

return new_lst



# Тесты

print(more_than_five([-11, 4, -2, 90, 400, 0, -5]))

print(more_than_five([-2, 2, 3, 4, 0, -1]))

print(more_than_five([70, -900, 41, 0]))


Задача 2. Базовый уровень

Условие

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

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

Ниже представлен пример работы «чистильщика строк», которому срочно требуется ваша помощь.


letters = 'ЫгВЫоЯСремДШНККАыкЩЙФа'

clean_string = ''

for letter in letters:

if not letter.isupper():

clean_string += letter

letters = clean_string

print(letters)

Задача 3. Базовый уровень

Анна решила представить некую таблицу с заглавными и строчными буквами русского алфавита в красивом формате.

Об этом ее попросили англоязычные друзья из социальных сетей.


Недолго думая девушка создала скрипт, который выполнял подобную операцию.

Результат работы программы продемонстрирован ниже.

Сможете повторить (в строках с галочками - их 27 штук, чтобы вам не пришлось долго считать)? Для идентичности результатов примените любой моноширинный шрифт (в котором все символы имеют одинаковую ширину).

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| А а || К к || Х х |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Б б || Л л || Ц ц |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| В в || М м || Ч ч |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Г г || Н н || Ш ш |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Д д || О о || Щ щ |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Е е || П п || Ъ ъ |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Ё ё || Р р || Ы ы |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Ж ж || С с || Ь ь |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| З з || Т т || Э э |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| И и || У у || Ю ю |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Й й || Ф ф || Я я |

^^^^^^^^^^^^^^^^^^^^^^^^^^^

rus_lower = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'

for position in range(11):

print('^' * 27)

for letter in rus_lower:

if rus_lower.index(letter) % 11 == position:

print('| ', letter.upper(), letter, ' |', end='')

print()

print('^' * 27)

Задача 4. Базовый уровень

Условие

Для идентификации своего круга проверенных лиц будущий тайный агент (ведь все о чем-то мечтают) Максим решил пускать на свою страничку в Интернете только тех, чьи никнеймы есть в его секретном списке.

Он уверен в своих людях (особенно в том, что они по глупости не расскажут никому своё секретное прозвище), как и в том, что имена товарищей невозможно подобрать случайно. К слову, вот этот список: Мавпродош, Лорнектиф, Древерол, Фиригарпиг, Клодобродыч.

По мере увеличения круга знакомых Максим, естественно, дополнит данный список.

Ваша задача такова: повторите код, который будет спрашивать у пользователя его ник и

либо пускать на сайт (выведется сообщение «Ты – свой. Приветствую, любезный {НИК_ПОСЕТИТЕЛЯ}!»),

либо нет (в этом случае будет такой текст: «Тут ничего нет. Еще есть вопросы?».

Фактически, будущий супергерой решил поиздеваться над теми, кого нет в его удивительном перечне, так как им будет показываться это сообщение постоянно.

Очень коварный замысел!).


Для проверки прозвищ посетителей используйте встроенную функцию input().


nick = input()

secret_list = ['Мавпродош', 'Лорнектиф', 'Древерол', 'Фиригарпиг', 'Клодобродыч']

while nick not in secret_list:

print('Тут ничего нет. Еще есть вопросы?')

nick = input()

else:

print(f'Ты – свой. Приветствую, любезный {nick}!')

Задача 5. *Продвинутый уровень

Условие

Валентина прогуляла лекцию по математике.

Преподаватель решил подшутить над нерадивой студенткой и

попросил ее на практическом занятии перечислить все положительные делители некоторых целых чисел.

Для несложных примеров студентка быстро нашла решения (для числа 6 это: 1, 2, 3, 6; а для числа 16 это: 1, 2, 4, 8, 16), но этим все не закончилось.

На домашнее задание ей дали варианты посложнее: 23436, 190187200, 380457890232.

Решить такое вручную, как вы понимаете, практически нереально.

Вот Валентина и обратилась к вам за помощью.

Помогите ей (при помощи функции all_divisors(number)).

Постарайтесь найти самое оптимальное решение.

Результат представьте в виде списка (не забудьте отсортировать по возрастанию).


def all_divisors(number):

lst = [1, number]

for i in range(2, 1 + int(number ** 0.5)):

if number % i == 0:

lst.extend({number // i, i})

return sorted(lst)


# Тесты

print(all_divisors(23_436))

print(all_divisors(190_187_200))

print(all_divisors(380_457_890_232))



Контрольные вопросы:

  1. В чем отличие циклов for и while?

  2. Какова вычислительная сложность цикла for, перебирающего элементы множества (сколько нужно совершить операций)?


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!