diff --git a/TEMA5/IKZ.md b/TEMA5/IKZ.md new file mode 100644 index 0000000..7cf2ee6 --- /dev/null +++ b/TEMA5/IKZ.md @@ -0,0 +1,25 @@ +25.     Создайте список с 50 элементами – целыми случайными числами из диапазона значений от -1 до +1. Определите по этому списку, сколько раз последующее число было меньше предыдущего, сколько – больше и сколько – равным. Отобразите результат в виде строки: «Больше=ХХ, меньше=ХХ, равно=ХХ». + +```py +import random + +random.seed(5) + +sps = [] +for i in range(50): + sps.append(random.randint(-1, 1)) +print("Полученный список",sps) + +men = 0 +bol = 0 +rav = 0 + +for i in range(1,50): + if sps[i-1] < sps[i]: + men+=1 + elif sps[i-1] > sps[i]: + bol+=1 + else: + rav+=1 +print(f"Больше = {bol}, меньше = {men}, равно = {rav}") +``` \ No newline at end of file diff --git a/TEMA5/pic0.png b/TEMA5/pic0.png new file mode 100644 index 0000000..9c009f8 Binary files /dev/null and b/TEMA5/pic0.png differ diff --git a/TEMA5/pic1.png b/TEMA5/pic1.png new file mode 100644 index 0000000..a7b3ef0 Binary files /dev/null and b/TEMA5/pic1.png differ diff --git a/TEMA5/report.md b/TEMA5/report.md new file mode 100644 index 0000000..2e575e0 --- /dev/null +++ b/TEMA5/report.md @@ -0,0 +1,331 @@ +# Отчет по теме 5 + +Хатюхин Евгений Сергеевич, А-02-23 + +## 1 Запустил IDLE +## 2 Изучил блок ЕСЛИ +```py +porog = 35 +rashod1 = 21 +rashod2 = 15 +if rashod1>=porog: + dohod=12 +elif rashod2==porog: + dohod=0 +else: + dohod=-8 + + +dohod +-8 +if rashod1>=3 and rashod2==4: + dohod=rashod1 + if rashod2==porog or rashod1>>if porog==3: + dohod=1 +elif porog==4: + dohod=2 +elif porog==5: + dohod=3 +else: + dohod=0 + + +>>>dohod +0 +>>>dohod=2 if porog>=4 else 0 +>>>dohod +2 +>>>if porog>=5 : rashod1=6; rashod2=0 + +>>>rashod1 +6 +>>>rashod2 +0 +``` + +## 3 Изучил блок ДЛЯ + +Был изучен и применен блок for, разобрана простая конструкция и несколько сложных. + +## 3.1 Изучил простой цикл for + +```py +temperatura=5 +for i in range(3,18,3): + temperatura+=i + + +temperatura +50 +``` + +## 3.2 Изучил первый сложный цикл for + +Был применен цикл for, который приписывает к списку первый его элемент каждую итерацию, до тех пор, пока длина списка не будет равна или больше 10. Испробованы два способа передачи списка - как изменяемый список и как неизменяемую копию. + +```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] +sps=[2,15,14,8] +for k in sps[:]: + if len(sps)<=10:sps.append(sps[0]) #В этом варианте список итерируется по копии, то есть исходному списку, чья длина всегда равна 4. Цикл выполняется 4 раза, так как список имеет 4 элемента. + else:break + + +sps +[2, 15, 14, 8, 2, 2, 2, 2] +``` + +## 3.3 Изучил второй сложный цикл for + +Был применен цикл for, в котором при каждой итерации для i от 0 до 9, созданный пустой список пополняется значением от 0 до 97 и подсчитывается сумма чисел в списке. При достижении суммы числа более 500, итерация прерывается. Если же итерации успевают закончиться естественным образом и сумма получается значением менее 500, по сумма печатается на экран. + +```py +import random as rn +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,97)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) + + +374 +ss=0 +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,97)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) + + +426 +ss=0 +sps5=[] +for i in range(10): + sps5.append(rn.randint(1,97)) + ss=sum(sps5) + if ss>500: break +else: + print(ss) + + + +``` + +## 3.4 Изучил цикл с символьной строкой +```py +stroka='Это – автоматизированная система' +stroka1="" +for ss in stroka: + stroka1+=" "+ss + + +stroka1 +' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а' +ss +'а' +``` + +## 3.5 Изучил записи цикла в строке +```py +import math +sps2=[math.sin(i*math.pi/5+2) for i in range(100)] +import pylab +pylab.plot(range(100), sps2) +[] +pylab.title("Сигналы") +Text(0.5, 1.0, 'Сигналы') +pylab.show() +``` + +![[pic0.png]] + +## 4 Изучил цикл ПОКА + +Были изучены и применены различные варианты циклов с использованием блоков while. + +## 4.1 Изучил цикл while со счетчиком + +Был применен цикл while, который уменьшает значение rashod на 50 единиц. Здесь rashod = True до тех пор пока его значение положительное. Когда rashod становится равным 0, цикл прерывается. На каждой итерации печатается значение rashod. + +```py +rashod=300 +while rashod: + print("Расход=",rashod) + rashod-=50 + + +Расход= 300 +Расход= 250 +Расход= 200 +Расход= 150 +Расход= 100 +Расход= 50 +``` + +## 4.2 Изучил цикл while с символьной строкой + +Был применен цикл while, который для каждой i, что изменяется от 0 до длины строки stroka, вычисляет значение r, используя выражение, в которое входит i, и формирует из этих значений список. Далее по значениям из списка был построен график. + +```py +import math +stroka='Расчет процесса в объекте регулирования' +i=0 +sps2=[] +while i 1 +while kandidat > 1: + if chislo%kandidat == 0: # Остаток от деления + print(chislo, ' имеет множитель ', kandidat) + break # else выполняться не будет + kandidat -= 1 +else: # При завершении цикла без break + print(chislo, ' является простым!') + + +267 имеет множитель 89 +``` + +Также предыдущий код был изменен таким образом, что был добавлен цикл for, который еще перебирает числа от 250 до 300 включительно и выполняет вышеописанные операции с каждым числом. + +```py +for chislo in range(250, 301): # Проходим по диапазону чисел + kandidat = chislo // 2 # Для значений chislo > 1 + while kandidat > 1: + if chislo % kandidat == 0: # Остаток от деления + print(chislo, ' имеет множитель ', kandidat) + break # else выполняться не будет + kandidat -= 1 + else: # При завершении цикла while без break + print(chislo, ' является простым!') + + +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 +``` +## 5 Завершил работу в IDLE + + diff --git a/TEMA5/task.md b/TEMA5/task.md new file mode 100644 index 0000000..d500528 --- /dev/null +++ b/TEMA5/task.md @@ -0,0 +1,82 @@ +# Общее контрольное задание по теме 5 + +Хатюхин Евгений Сергеевич, А-02-23 + +## Задание + +Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач: + • Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите. + • Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом). + • Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям. + +## Решение + +```py +>>>import string +>>>text = "hello my friend" +>>>for char in text: + if char in string.ascii_lowercase: + order = string.ascii_lowercase.index(char) + 1 + print(char, "=", order) + else: + print("это не буква") + + +h = 8 +e = 5 +l = 12 +l = 12 +o = 15 +это не буква +m = 13 +y = 25 +это не буква +f = 6 +r = 18 +i = 9 +e = 5 +n = 14 +d = 4 +>>>Str = "Создайте список со словами из задания данного пункта" +>>>L=list(Str.split()) +>>>L +['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта'] +>>>slovo = 'список' +>>>if slovo in L: + print("Это слово есть в тексте") +else: print("Этого слова нет в тексте") + +Это слово есть в тексте +>>>slovo = "Привет" +>>>if slovo in L: + print("Это слово есть в тексте") +else: print("Этого слова нет в тексте") + +Этого слова нет в тексте +>>>students = ["Dobrovolska", "Efremov", "Zelenkina", "Pohil"] +>>>leto = [4, 5, 3, 5] +>>>students2 = ["Efremov", "Pohil", "Zelenkina", "Dobrovolska"] +>>>zima = [5, 3, 3, 5] +>>>name=input("Введите фамилию студента: ") +Введите фамилию студента: Dobrovolska +>>>if name in students and name in students2: + leto_grade = leto[students.index(name)] + zima_grade = zima[students2.index(name)] + print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade) +else: + print("Студент", name, "не найден.") + + +Студент: Dobrovolska . Летняя: 4 , Зимняя: 5 +>>>name=input("Введите фамилию студента: ") +Введите фамилию студента: ghgghg +>>>if name in students and name in students2: + leto_grade = leto[students.index(name)] + zima_grade = zima[students2.index(name)] + print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade) +else: + print("Студент", name, "не найден.") + + +Студент ghgghg не найден. +``` \ No newline at end of file