diff --git a/TEMA5/figure0.png b/TEMA5/figure0.png new file mode 100644 index 0000000..1661b2a Binary files /dev/null and b/TEMA5/figure0.png differ diff --git a/TEMA5/figure1.png b/TEMA5/figure1.png new file mode 100644 index 0000000..b5d259f Binary files /dev/null and b/TEMA5/figure1.png differ diff --git a/TEMA5/report.md b/TEMA5/report.md new file mode 100644 index 0000000..f345bf7 --- /dev/null +++ b/TEMA5/report.md @@ -0,0 +1,366 @@ +# Отчет по теме 5 + +Володин Денис, А-02-23 + +## Пункт 1 + +```py +>>> import os +>>> os.chdir(r"C:\Users\denvo\OneDrive\Рабочий стол\python-labs\TEMA5") +``` + +## Пункт 2 + +Ветвление по условию (if) различными способами + +```py +>>> porog = 6 +>>> rashod1 = 8 +>>> rashod2 = 5 +>>> if rashod1 >= porog: + dohod = 12 +elif rashod2 == porog: + dohod = 0 +else: + dohod = -8 +>>> dohod +12 + + +>>> rashod2 = 4 +>>> porog = 4 +>>> if rashod1 >= 3 and rashod2 == 4: #Верно + dohod = rashod1 + if rashod2 == porog or rashod1 < rashod2: #Тоже верно + dohod = porog +>>> dohod +4 + + +>>> if porog == 3: + dohod = 1 +elif porog == 4: + dohod = 2 +elif porog == 5: + dohod = 3 +else: + dohod = 0 +>>> dohod +2 + + +>>> dohod = 2 if porog >= 4 else 0 +>>> dohod +2 + + +>>> porog = 2 +>>> if porog >= 5 : rashod1 = 6; rashod2 = 0 +>>> rashod1 +8 +>>> rashod2 +4 + +>>> porog = 7 +>>> if porog >= 5 : rashod1 = 6; rashod2 = 0 +>>> rashod1 +6 +>>> rashod2 +0 +``` + +## Пункт 3 + +Цикл по перечислению (for) + +## Пункт 3.1 + +Простой цикл + +``py +>>> temperatura = 5 +>>> for i in range(3,18,3): + i + temperatura += i + +3 +6 +9 +12 +15 +>>> temperatura +50 +``` + +## Пункт 3.2 + +Более сложный цикл. + +```py +>>> sps=[2,15,14,8] +>>> for k in sps: + if len(sps) <= 10: sps.append(sps[0]) + else: break + +>>> sps +[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2] +``` + +Рассмотрим другой вариант: + +```py +>>> sps=[2,15,14,8] +>>> for k in sps[:]: + if len(sps)<=10: + sps.append(sps[0]) + else: break + +>>> sps +[2, 15, 14, 8, 2, 2, 2, 2] +``` + +Как видно, итог другой. Операция взятия среза sps[:] создает полную копию +исходного списка. Теперь список, по которому пробегается k, и список, изменяющийся внутри цикла - это разные объекты. К пройдет sps[:] раньше, чем sps достигнет максимального условия. + +## Пункт 3.3 + +```py +>>> 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) +``` + +Программа ничего не вывела и вот почему: + +```py +>>> ss +556 +>>> sps5 +[69, 55, 58, 87, 58, 39, 91, 3, 96] +``` + +После того, как прошло девять итераций, сумма элементов списка уже была больше 500, поэтому +цикл закончился из-за if, а не из-за окончания диапазона range(10). +Попробуем обнулить список и выполнить ту же программу еще раз: + +```py +>>> sps5 = [] +>>> for i in range(10): + sps5.append(rn.randint(1,100)) + ss = sum(sps5) + if ss > 500: break +else: + print(ss) + +481 +``` + +В этот раз программа вывела ответ самостоятельно, потому что сработал else, потому что +за все десять итераций цикла так и не успел выполниться break по условию if. + + +## Пункт 3.4 + +Пример с символьной строкой + +```py +>>> stroka = 'Это – автоматизированная система' +>>> stroka1 = "" +>>> for ss in stroka: + stroka1 += " " + ss +>>> stroka1 +' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а' +``` + +## Пункт 3.5 + +Запись цикла в строке + +```py +>>> import math +>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)] +>>> sps2 +[0.9092974268256817, 0.49103209793281005, -0.11479080280322804, ... ] +>>> import pylab +>>> pylab.plot(sps2, label='Синусоидальный сигнал', color = 'green') +[] +>>> pylab.show() +``` + +![](figure0.png) + + +## Пункт 4 + +Цикл "пока истинно условие" (while) + +## Пункт 4.1 + +Цикл со счетчиком + +```py +>>> rashod = 300 +>>> while rashod: + print("Расход =",rashod) + rashod -= 50 + +Расход = 300 +Расход = 250 +Расход = 200 +Расход = 150 +Расход = 100 +Расход = 50 +``` + +Как именно произошло завершение цикла? Нужно вспомнить, что все числа, кроме нуля, при +конвертации в логический тип данных имеют логическое значение True. И только ноль имеет значение False. Сравниваемая в управляющей инструкции переменная уменьшается в самом цикле, поэтому, когда строка со сравнением обнаружит 0, то воспримет это как False, и действия по выводу и уменьшению числа выполняться больше не будут. + + +## Пункт 4.2 + +Пример с символьной строкой + +```py +>>> import math +>>> stroka='Расчет процесса в объекте регулирования' +>>> i=0 +>>> sps2=[] +>>> while i>> pylab.show() +``` + +![](figure1.png) + + +## Пункт 4.3 + +Определение, является ли число простым (делится только на самого себя или 1). + +```py +>>> chislo = 267 +>>> kandidat = chislo // 2 +>>> while kandidat > 1: + if chislo % kandidat == 0: + print(chislo, ' имеет множитель ', kandidat) + break + kandidat -= 1 +else: + print(chislo, ' является простым!') + +267 имеет множитель 89 +``` + +Дополниим программу так, чтобы она проверяла все числа от 250 до 300 + +```py +>>> chislo = [x for x in range (250, 301)] +>>> for now in chislo: + kandidat = now // 2 + while kandidat > 1: + if now % kandidat == 0: + print(now, ' имеет множитель ', kandidat) + break + kandidat -= 1 + else: + print(now, " является простым!") + +250 имеет множитель 125 +251 является простым! +252 имеет множитель 126 +253 имеет множитель 23 +254 имеет множитель 127 +255 имеет множитель 85 +256 имеет множитель 128 +257 является простым! +258 имеет множитель 129 +259 имеет множитель 37 +260 имеет множитель 130 +261 имеет множитель 87 +262 имеет множитель 131 +263 является простым! +264 имеет множитель 132 +265 имеет множитель 53 +266 имеет множитель 133 +267 имеет множитель 89 +268 имеет множитель 134 +269 является простым! +270 имеет множитель 135 +271 является простым! +272 имеет множитель 136 +273 имеет множитель 91 +274 имеет множитель 137 +275 имеет множитель 55 +276 имеет множитель 138 +277 является простым! +278 имеет множитель 139 +279 имеет множитель 93 +280 имеет множитель 140 +281 является простым! +282 имеет множитель 141 +283 является простым! +284 имеет множитель 142 +285 имеет множитель 95 +286 имеет множитель 143 +287 имеет множитель 41 +288 имеет множитель 144 +289 имеет множитель 17 +290 имеет множитель 145 +291 имеет множитель 97 +292 имеет множитель 146 +293 является простым! +294 имеет множитель 147 +295 имеет множитель 59 +296 имеет множитель 148 +297 имеет множитель 99 +298 имеет множитель 149 +299 имеет множитель 23 +300 имеет множитель 150 +``` + +## Пункт 4.4 + +Инструкция continue. + +Она используется, когда надо при определенном условии не завершить весь цикл, а завершить +только текущую итерацию. + +Пример (вывести только четные числа): + +```py +>>> for n in range (0, 16): + if n%2==1: continue + print(n, " четное") +else: print("все числа обработаны") + +0 четное +2 четное +4 четное +6 четное +8 четное +10 четное +12 четное +14 четное +все числа обработаны +``` \ No newline at end of file diff --git a/TEMA5/task.md b/TEMA5/task.md new file mode 100644 index 0000000..5848365 --- /dev/null +++ b/TEMA5/task.md @@ -0,0 +1,130 @@ +# Общее контрольное задание по теме 5 + +Володин Денис, А-02-23 + +## Задание + + • Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите. + • Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом). + • Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям. + + +## Решение + +```py +>>> alphabet = 'abcdefghijklmnopqrstuvwxyz' +>>> text = "We visited the Louvre Museum in Paris last summer" +>>> for now in range(len(text)): + low = text.lower() + letter = low[now] + if not letter in alphabet: + continue + else: + print("Буква ", letter, " имеет ", alphabet.index(letter) + 1, + "порядковый номер в алфавите") + +Буква w имеет 23 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква v имеет 22 порядковый номер в алфавите +Буква i имеет 9 порядковый номер в алфавите +Буква s имеет 19 порядковый номер в алфавите +Буква i имеет 9 порядковый номер в алфавите +Буква t имеет 20 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква d имеет 4 порядковый номер в алфавите +Буква t имеет 20 порядковый номер в алфавите +Буква h имеет 8 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква l имеет 12 порядковый номер в алфавите +Буква o имеет 15 п рядковый номер в алфавите +Буква u имеет 21 порядковый номер в алфавите +Буква v имеет 22 порядковый номер в алфавите +Буква r имеет 18 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква m имеет 13 порядковый номер в алфавите +Буква u имеет 21 порядковый номер в алфавите +Буква s имеет 19 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква u имеет 21 порядковый номер в алфавите +Буква m имеет 13 порядковый номер в алфавите +Буква i имеет 9 порядковый номер в алфавите +Буква n имеет 14 порядковый номер в алфавите +Буква p имеет 16 порядковый номер в алфавите +Буква a имеет 1 порядковый номер в алфавите +Буква r имеет 18 порядковый номер в алфавите +Буква i имеет 9 порядковый номер в алфавите +Буква s имеет 19 порядковый номер в алфавите +Буква l имеет 12 порядковый номер в алфавите +Буква a имеет 1 порядковый номер в алфавите +Буква s имеет 19 порядковый номер в алфавите +Буква t имеет 20 порядковый номер в алфавите +Буква s имеет 19 порядковый номер в алфавите +Буква u имеет 21 порядковый номер в алфавите +Буква m имеет 13 порядковый номер в алфавите +Буква m имеет 13 порядковый номер в алфавите +Буква e имеет 5 порядковый номер в алфавите +Буква r имеет 18 порядковый номер в алфавите + + +>>> text = """Создайте список со словами из задания данного пункта Для этого +списка определите есть ли в нем некоторое заданное значение и выведите соответствующее +сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с +имеющимся так и с отсутствующим словом""" +>>> lst = text.split(" ") +>>> lst +['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', + 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', + 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', + 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', + 'с', 'отсутствующим', 'словом'] + +>>> target = "список" +>>> for now in lst: + if now == target: + print ("Такое слово есть") + break +else: + print("Такого слова нет") + +Такое слово есть :) + +>>> target = "кот" +>>> for now in lst: + if now == target: + print ("Такое слово есть") + break +else: + print("Такого слова нет") + +Такого слова нет + + +>>> studs = ['Volodin', 'Kireev', 'Begenar'] +>>> summer_marks = [4.25, 4.15, 5.00] +>>> studs2 = ['Kireev', 'Begenar','Volodin'] +>>> winter_marks = [4.35, 4.85, 4.23] +>>> student = input("Введите фамилию: ") +>>> while student != "q": + if (student in studs) and (student in studs2): + sum_ans = summer_marks[studs.index(student)] + win_ans = winter_marks[studs2.index(student)] + print("Балл летом: ", sum_ans, "\nЗимой: ", win_ans, "\nСредний :", + (sum_ans + win_ans)/2) + else: + print("Такого студента нет :(") + student = input("Введите фамилию (q для выхода): ") + +Введите фамилию: Volodin +Балл летом: 4.25 +Зимой: 4.23 +Средний : 4.24 +Введите фамилию (q для выхода): Begenar +Балл летом: 5.0 +Зимой: 4.85 +Средний : 4.925 +Введите фамилию (q для выхода): Kireev +Балл летом: 4.15 +Зимой: 4.35 +Средний : 4.25 +Введите фамилию (q для выхода): q +```