ответвлено от main/python-labs
task done
Этот коммит содержится в:
Двоичные данные
TEMA5/Figure_1.png
Обычный файл
Двоичные данные
TEMA5/Figure_1.png
Обычный файл
Двоичный файл не отображается.
|
После Ширина: | Высота: | Размер: 42 KiB |
Двоичные данные
TEMA5/Figure_2.png
Обычный файл
Двоичные данные
TEMA5/Figure_2.png
Обычный файл
Двоичный файл не отображается.
|
После Ширина: | Высота: | Размер: 18 KiB |
357
TEMA5/report.md
Обычный файл
357
TEMA5/report.md
Обычный файл
@@ -0,0 +1,357 @@
|
||||
# Отчет по теме 5
|
||||
Филиппова Евгения, А-01-23
|
||||
## 1 Запуск интерактивной оболочки IDLE
|
||||
Была запущена интерактивная оболочка IDLE.
|
||||
## 2 Изучение блока ЕСЛИ
|
||||
Были изучены и применены различные конструкции блоков с использованием условия if. Рассмотрены также elif и else. Изучены блоки условий, записываемые в одну строку.
|
||||
|
||||
Общее правило написания:
|
||||
|
||||
if <условие>:
|
||||
<Блок инструкций, выполняемый, если условие истинно>
|
||||
|
||||
elif <условие2>:
|
||||
<Блок инструкций2, выполняемый, если условие2 истинно>
|
||||
|
||||
else:
|
||||
<Блок инструкций3, выполняемый, если условие ложно>
|
||||
|
||||
```py
|
||||
porog=5
|
||||
rashod1=14
|
||||
rashod2=9
|
||||
if rashod1>=porog:
|
||||
dohod=12
|
||||
elif rashod2==porog:
|
||||
dohod=0
|
||||
else:
|
||||
dohod=-8
|
||||
dohod
|
||||
12
|
||||
```
|
||||
```py
|
||||
if rashod1>=3 and rashod2==4:
|
||||
dohod=rashod1
|
||||
if rashod2==porog or rashod1<rashod2:
|
||||
dohod=porog
|
||||
|
||||
dohod
|
||||
12
|
||||
```
|
||||
```py
|
||||
if porog==3:
|
||||
dohod=1
|
||||
elif porog==4:
|
||||
dohod=2
|
||||
elif porog==5:
|
||||
dohod=3
|
||||
else:
|
||||
dohod=0
|
||||
|
||||
dohod
|
||||
3
|
||||
```
|
||||
```py
|
||||
dohod=2 if porog>=4 else 0
|
||||
dohod
|
||||
2
|
||||
if porog>=5 : rashod1=6; rashod2=0
|
||||
|
||||
rashod1
|
||||
6
|
||||
rashod2
|
||||
0
|
||||
```
|
||||
## 3 Изучение блока FOR
|
||||
```py
|
||||
for <Объект-переменная цикла> in <объект>:
|
||||
<Блок инструкций 1 – тело цикла>
|
||||
else:
|
||||
<Блок инструкций 2 – если в цикле не сработал break>
|
||||
```
|
||||
### 3.1. Простой цикл.
|
||||
```py
|
||||
temperatura=5
|
||||
for i in range(3,18,3):
|
||||
temperatura+=i
|
||||
|
||||
temperatura
|
||||
50
|
||||
```
|
||||
### 3.2. Изучение первого более сложного цикл for.
|
||||
Был применен цикл for, который приписывает к списку его первый элемент каждый раз, до тех пор, пока длина списка не будет больше или равна 10. Два способа передачи списка - как изменяемый список и как неизменяемую копию.
|
||||
#### 3.2.1.
|
||||
```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]
|
||||
```
|
||||
#### 3.2.2.
|
||||
```py
|
||||
sps=[2,15,14,8]
|
||||
for k in sps[:]: # #итерируется только по копии исходного списка из 4 элементов.
|
||||
if len(sps)<=10:sps.append(sps[0]) #Цикл выполняется 4 раза, так как список имеет 4 элемента. sps[:] создает срез всего списка, то есть его полную копию. Цикл будет выполняться только для исходных 4 элементов, независимо от изменений в основном списке.
|
||||
else:break
|
||||
|
||||
sps
|
||||
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||
#Отличие: Цикл итерируется по неизменной копии списка. Пройдя все 4 элемента, цикл завершится.
|
||||
```
|
||||
### 3.3. Второй сложный цикл.
|
||||
Цикл 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) #если число больше 500 блок else не выполняется и ничего не выводится
|
||||
|
||||
259
|
||||
sps5=[]
|
||||
for i in range(10):
|
||||
sps5.append(rn.randint(1,100))
|
||||
ss=sum(sps5)
|
||||
if ss>500: break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
438
|
||||
sps5=[]
|
||||
ss=0
|
||||
for i in range(10):
|
||||
sps5.append(rn.randint(1,100))
|
||||
ss=sum(sps5)
|
||||
if ss>500: break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
495
|
||||
```
|
||||
### 3.4. Работа с символьной строкой
|
||||
Был применен цикл, который перебирает каждый символ из stroka и дополняет им ранее созданную пустую строку stroka1.
|
||||
```py
|
||||
stroka='Это – автоматизированная система'
|
||||
stroka1=""
|
||||
for ss in stroka:
|
||||
stroka1+=" "+ss #к текущей строке stroka1 добавляется пробел и текущий символ ss
|
||||
|
||||
stroka1
|
||||
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
|
||||
ss
|
||||
'а'
|
||||
```
|
||||
### 3.5. Вывод на график.
|
||||
Был использован цикл для создания сигналов (цикл создает список из чисел, выжесленных по определенному выражению, в которое входит i, изменяемое в ходе итераций от 0 до 99). Построен график отображения сигналов.
|
||||
```py
|
||||
import math
|
||||
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
|
||||
import pylab
|
||||
pylab.plot(sps2)
|
||||
[<matplotlib.lines.Line2D object at 0x000002A57ED02490>]
|
||||
pylab.title('Синусоидальный сигнал')
|
||||
Text(0.5, 1.0, 'Синусоидальный сигнал')
|
||||
pylab.xlabel('Отсчеты')
|
||||
Text(0.5, 0, 'Отсчеты')
|
||||
pylab.ylabel('Амплитуда')
|
||||
Text(0, 0.5, 'Амплитуда')
|
||||
pylab.show()
|
||||
```
|
||||

|
||||
## 4. Цикл «пока истинно условие» – управляющая инструкция while.
|
||||
Общее правило написания:
|
||||
```py
|
||||
while <Условие>:
|
||||
<Блок инструкций 1 – тело цикла>
|
||||
else:
|
||||
<Блок инструкций 2 – если в цикле не сработал break>
|
||||
```
|
||||
### 4.1. Цикл со счетчиком.
|
||||
```py
|
||||
rashod=300
|
||||
while rashod:
|
||||
print("Расход=",rashod)
|
||||
rashod-=50
|
||||
|
||||
Расход= 300
|
||||
Расход= 250
|
||||
Расход= 200
|
||||
Расход= 150
|
||||
Расход= 100
|
||||
Расход= 50
|
||||
# Цикл завершился, потому что условие while rashod: стало ложным (False), когда значение переменной rashod достигло 0.
|
||||
```
|
||||
### 4.2. Пример с символьной строкой
|
||||
Был применен цикл while, который для каждой i, что изменяется от 0 до длины строки stroka, вычисляет значение r, используя выражение, в которое входит i, и формирует из этих значений список. Далее по значениям из списка был построен график.
|
||||
```py
|
||||
import math
|
||||
stroka = 'Расчет процесса в объекте регулирования'
|
||||
i = 0
|
||||
sps2 = []
|
||||
while i < len(stroka):
|
||||
r = 1 - 2 / (1 + math.exp(0.1 * i))
|
||||
sps2.append(r)
|
||||
print('Значение в момент', i, "=", r)
|
||||
i += 1
|
||||
|
||||
|
||||
Значение в момент 0 = 0.0
|
||||
Значение в момент 1 = 0.049958374957880025
|
||||
Значение в момент 2 = 0.09966799462495568
|
||||
Значение в момент 3 = 0.14888503362331795
|
||||
Значение в момент 4 = 0.197375320224904
|
||||
Значение в момент 5 = 0.2449186624037092
|
||||
Значение в момент 6 = 0.2913126124515909
|
||||
Значение в момент 7 = 0.3363755443363322
|
||||
Значение в момент 8 = 0.3799489622552249
|
||||
Значение в момент 9 = 0.421899005250008
|
||||
Значение в момент 10 = 0.4621171572600098
|
||||
Значение в момент 11 = 0.5005202111902354
|
||||
Значение в момент 12 = 0.5370495669980353
|
||||
Значение в момент 13 = 0.5716699660851172
|
||||
Значение в момент 14 = 0.6043677771171636
|
||||
Значение в момент 15 = 0.6351489523872873
|
||||
Значение в момент 16 = 0.6640367702678489
|
||||
Значение в момент 17 = 0.6910694698329307
|
||||
Значение в момент 18 = 0.7162978701990245
|
||||
Значение в момент 19 = 0.7397830512740043
|
||||
Значение в момент 20 = 0.7615941559557649
|
||||
Значение в момент 21 = 0.7818063576087741
|
||||
Значение в момент 22 = 0.8004990217606297
|
||||
Значение в момент 23 = 0.8177540779702878
|
||||
Значение в момент 24 = 0.8336546070121553
|
||||
Значение в момент 25 = 0.8482836399575129
|
||||
Значение в момент 26 = 0.8617231593133063
|
||||
Значение в момент 27 = 0.874053287886007
|
||||
Значение в момент 28 = 0.8853516482022625
|
||||
Значение в момент 29 = 0.8956928738431645
|
||||
Значение в момент 30 = 0.9051482536448664
|
||||
Значение в момент 31 = 0.9137854901178277
|
||||
Значение в момент 32 = 0.9216685544064713
|
||||
Значение в момент 33 = 0.9288576214547277
|
||||
Значение в момент 34 = 0.935409070603099
|
||||
Значение в момент 35 = 0.9413755384972874
|
||||
Значение в момент 36 = 0.9468060128462683
|
||||
Значение в момент 37 = 0.9517459571646616
|
||||
Значение в момент 38 = 0.9562374581277391
|
||||
|
||||
pylab.plot(range(len(stroka)), sps2)
|
||||
|
||||
[<matplotlib.lines.Line2D object at 0x00000203D8019F90>]
|
||||
|
||||
pylab.title("процесс регулирования")
|
||||
Text(0.5, 1.0, 'процесс регулирования')
|
||||
|
||||
pylab.show()
|
||||
|
||||
```
|
||||

|
||||
|
||||
### 4.3. Изучения блока while для проверки числа на свойство простого числа
|
||||
Был применен цикл while, который проверяет остаток от деления заданного числа, на все числа начиная от половины собственного значения до 2, при этом если хоть раз этот остаток равен 0, то выводится надпись о том, что число имеет множитель и цикл прерывается. Если же остаток никогда не равен 0, то цикл выполняется до тех пор, пока делитель не будет равен единице и после этого будет выведена надпись, что число является простым.
|
||||
```py
|
||||
chislo=267 #Проверяемое число
|
||||
kandidat =chislo // 2 # Для значений chislo > 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
|
||||
#### Проверка простоты чисел в диапазоне от 250 до 300
|
||||
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: # При завершении цикла без 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
|
||||
```
|
||||
### 4.5 Инструкция continue.
|
||||
```py
|
||||
sps=[1,2,3,4,6,4,8,9]
|
||||
for k in sps:
|
||||
if k!=4:
|
||||
print(k)
|
||||
else:
|
||||
continue #пропускает итерацию, когда break полностью прерывает цикл
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
6
|
||||
8
|
||||
9
|
||||
```
|
||||
## 5. Завершение работы в IDLE
|
||||
Был завершен сеанс в среде IDLE
|
||||
81
TEMA5/task.md
Обычный файл
81
TEMA5/task.md
Обычный файл
@@ -0,0 +1,81 @@
|
||||
# Общее контрольное задание по теме 5
|
||||
Филиппова Евгения, А-01-23
|
||||
|
||||
## Задание
|
||||
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
|
||||
|
||||
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в
|
||||
английском алфавите.
|
||||
|
||||
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
|
||||
|
||||
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
|
||||
|
||||
## Решение:
|
||||
```py
|
||||
import string
|
||||
text = "Why are you running?"
|
||||
for char in text:
|
||||
if char in string.ascii_lowercase:
|
||||
order = string.ascii_lowercase.index(char) + 1
|
||||
print(char, "=", order)
|
||||
else:
|
||||
print("это не буква")
|
||||
|
||||
это не буква
|
||||
w = 23
|
||||
h = 8
|
||||
y = 25
|
||||
это не буква
|
||||
a = 1
|
||||
r = 18
|
||||
e = 5
|
||||
это не буква
|
||||
y = 25
|
||||
o = 15
|
||||
u = 21
|
||||
это не буква
|
||||
r = 18
|
||||
u = 21
|
||||
n = 14
|
||||
n = 14
|
||||
i = 9
|
||||
n = 14
|
||||
g = 7
|
||||
это не буква
|
||||
|
||||
Str = "Создайте список со словами из задания данного пункта"
|
||||
L=list(Str.split())
|
||||
print(L)
|
||||
|
||||
['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта']
|
||||
|
||||
slovo = 'список'
|
||||
if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
Это слово есть в тексте
|
||||
|
||||
slovo = "Привет"
|
||||
if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
Этого слова нет в тексте
|
||||
|
||||
students = ["Filippova", "Anisenkov", "Lazarev", "Podoskyi"]
|
||||
leto = [4, 5, 3, 4]
|
||||
students2 = ["Anisenkov", "Podoskyi", "Filippova", "Lazarev"]
|
||||
zima = [5, 3, 4, 3]
|
||||
name=input("Введите фамилию студента: ")
|
||||
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, "не найден.")
|
||||
|
||||
Введите фамилию студента: Filippova
|
||||
Студент: Filippova . Летняя: 4 , Зимняя: 4
|
||||
```
|
||||
33
TEMA5/task.py
Обычный файл
33
TEMA5/task.py
Обычный файл
@@ -0,0 +1,33 @@
|
||||
import string
|
||||
text = "why are you running?"
|
||||
for char in text:
|
||||
if char in string.ascii_lowercase:
|
||||
order = string.ascii_lowercase.index(char) + 1
|
||||
print(char, "=", order)
|
||||
else:
|
||||
print("это не буква")
|
||||
Str = "Создайте список со словами из задания данного пункта"
|
||||
L=list(Str.split())
|
||||
print(L)
|
||||
slovo = 'список'
|
||||
if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
slovo = "Привет"
|
||||
if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
students = ["Filippova", "Anisenkov", "Lazarev", "Podoskyi"]
|
||||
leto = [4, 5, 3, 4]
|
||||
students2 = ["Anisenkov", "Podoskyi", "Filippova", "Lazarev"]
|
||||
zima = [5, 3, 4, 3]
|
||||
name=input("Введите фамилию студента: ")
|
||||
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, "не найден.")
|
||||
|
||||
Ссылка в новой задаче
Block a user