From f7e08ea70c31f22b67bcb76ec790d0ba9b2de189 Mon Sep 17 00:00:00 2001 From: PodolskyNK Date: Fri, 21 Nov 2025 11:03:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87=D0=B5=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA5/report.md | 79 +++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 49 deletions(-) diff --git a/TEMA5/report.md b/TEMA5/report.md index 4a92975..c61e23f 100644 --- a/TEMA5/report.md +++ b/TEMA5/report.md @@ -4,7 +4,7 @@ ### 2. Ветвление по условию – управляющая инструкция if. -- Операции определения значения dohod: +- dohod: ``` python >>>porog = 5 >>>rashod1 = 8 @@ -74,7 +74,7 @@ else: # Игнорируется Общее правило написания: for <Объект-переменная цикла> in <объект>: <отступы><Блок инструкций 1 – тело цикла> -[else: +else: <отступы ><Блок инструкций 2 – если в цикле не сработал break>] @@ -94,18 +94,17 @@ for <Объект-переменная цикла> in <объект>: ``` python >>>sps = [2, 15, 14, 18] >>>for k in sps: - if len(sps) <= 10: sps.append(sps[0]) + if len(sps) <= 10: + sps.append(sps[0]) else: break >>>sps [2, 15, 14, 18, 2, 2, 2, 2, 2, 2, 2] ``` -Как видно, в конец цикла добавляется двойка до тех пор, пока длина не превысит 10. Важно -понимать, что sps - это и объект, по которому проходит k, и объект, изменяющийся -внутри цикла. То есть k будет двигаться по циклу бесконечно, и выполнение останавливается -именно из-за условия if - else. -(При этом else в данном случае относится к if, а не к for (это можно понять не только по -смыслу, но и по табуляции) +Цикл идет по списку `sps`, который **меняется** во время выполнения, потому что мы добавляем туда элементы через `.append(sps[0])`. + +- Это значит, что по мере роста списка цикл будет продолжаться, пока не сработает `break`. Если бы не было ограничения, цикл стал бы бесконечным. +- Итерация происходит по "живому" списку, который удлиняется прямо во время обхода. ``` python >>>sps = [2, 15, 14, 8] @@ -115,44 +114,24 @@ for k in sps[:]: >>>sps [2, 15, 14, 8, 2, 2, 2, 2] ``` -Отличия от предыдущего случая: -- Итерация происходит по фиксированной копии, а не по изменяемому списку. -- Создание копии: При входе в цикл создаётся копия текущего списка sps -- Изменение оригинала: Внутри цикла изменяется оригинальный список sps -- Количество итераций фиксировано: Определяется длиной изначальной копии +- С `[:]` создаётся копия, и цикл не видит добавленные элементы: работает ровно столько раз, сколько длина оригинала #### 3.3. : Cоздание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране. ``` python ->>>import random as rn ->>>sps5 = [] ->>>for i in range(10): - sps5.append(rn.randint(1, 100)) - ss = sum(sps5) - if ss > 500: break -else: - print(ss) -# Программа ничего не вывела ->>>ss -512 ->>>sps5 -[47, 92, 92, 54, 52, 78, 67, 30] -``` -После того, как прошло девять итераций, сумма элементов списка уже была больше 500, поэтому -цикл закончился из-за if, а не из-за окончания диапазона range(10). - -Попробуем обнулить список и выполнить ту же программу еще раз: -``` python ->>>sps5 = [] ->>>for i in range(10): +import random as rn +sps5 = [] +for i in range(10): sps5.append(rn.randint(1, 100)) ss = sum(sps5) if ss > 500: break else: - print(ss) -419 + print(ss) + +435 +>>> sps5 +[10, 98, 65, 13, 56, 26, 1, 88, 55, 23] ``` -В этот раз программа вывела ответ, следовательно сработал else и break не сработал. #### 3.4. Пример с символьной строкой ``` python @@ -163,11 +142,11 @@ else: >>>print(stroka1) Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а ``` -Переменная stroka содержит исходную строку: "Это – автоматизированная система". -Переменная stroka1 инициализируется как пустая строка. -В цикле for происходит перебор каждого символа ss из строки stroka. -На каждой итерации к stroka1 добавляется пробел и текущий символ ss. -После обработки всех символов в stroka1 формируется новая строка, где каждый символ исходной строки разделён пробелом. +Переменная **stroka** содержит исходную фразу: _"Это – автоматизированная система"_. +Переменная **stroka1** изначально пустая. +Далее в цикле **for** мы последовательно перебираем каждый символ строки **stroka**. +На каждом шаге к **stroka1** добавляется пробел и текущий символ. +В итоге получается новая строка, в которой каждый символ исходного текста выведен через пробел — поэтому вывод выглядит «растянутым». #### 3.5. Конструкция list comprehension. @@ -276,12 +255,14 @@ else: print(chislo, ' является простым!') 267 имеет множитель 89 ``` -Программа работает так: переменная kandidat отвечает за потенциальный делитель заданного -числа. Изначально мы задаем половину от заданного числа, потому что у числа не может быть -делителя большего, чем половина от него. Далее мы последовательно уменьшаем потенциальный -множитель, каждый раз проверяя, получилось ли поделить без остатка. Если получилось, то -число непростое, и цикл можно прекращать досрочно. Если цикл отработал до конца, не -прервавшись, то число простое. +Программа работает так: переменная **kandidat** — это возможный делитель числа. +Мы начинаем проверку с половины числа, потому что делитель не может быть больше этого значения. + +Дальше в цикле мы уменьшаем **kandidat** и на каждом шаге проверяем: +делится ли число на kandidat без остатка. +Если делится — значит число **составное**, и мы сразу выходим из цикла. + +Если же цикл дошёл до конца и ни разу не нашёл делитель, значит число **простое**. Дополним программу так, чтобы выявить все простые числа в диапазоне от 250 до 300. ``` python