Сравнить коммиты

...

87 Коммитов
main ... main

Автор SHA1 Сообщение Дата
Пользователь № 4 аудитории Ж-113 ffc0c9f3d1 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
2 дней назад
Пользователь № 4 аудитории Ж-113 a812d8ec26 xxxxx
2 дней назад
Пользователь № 4 аудитории Ж-113 2cc1b33105 Тестовое задание модуля №3
2 дней назад
OgarkovIA 5852104189 Изменил(а) на 'TEMA9/control.py'
2 дней назад
OgarkovIA 0e3d06f367 Изменил(а) на 'TEMA9/report.md'
2 дней назад
Ogarkov Ilya a9097b9bbb Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
2 дней назад
Ogarkov Ilya 490dfe9500 Готово контрольное задание control.py
2 дней назад
Ogarkov Ilya ebb5e9050f Основная часть лабораторной работы №9 сделана кроме контрольного задания
3 дней назад
OgarkovIA 530698f65d Изменил(а) на 'TEMA8/report.md'
3 дней назад
Ogarkov Ilya 4d1edcf120 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
3 дней назад
Ogarkov Ilya 6dcf8be3d3 Незначительные изменения
3 дней назад
OgarkovIA e094532220 Изменил(а) на 'TEMA7/test.md'
2 недель назад
Пользователь № 4 аудитории Ж-113 dac0f574dd Тестовое задание сделано
2 недель назад
OgarkovIA 2e2a368c69 Изменил(а) на 'TEMA7/report.md'
2 недель назад
OgarkovIA 6cc7c9f89c Изменил(а) на 'TEMA7/report.md'
2 недель назад
OgarkovIA 9510436b82 Изменил(а) на 'TEMA7/report.md'
2 недель назад
Ogarkov Ilya 263c3dcb17 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
2 недель назад
Ogarkov Ilya 4f1dadba34 Отчёт по лабораторной работе №7 ГОТОВ + контрольное задание
2 недель назад
OgarkovIA 14acf8c5c8 Изменил(а) на 'Tests/test2.md'
4 недель назад
OgarkovIA 81d2ad0e06 Изменил(а) на 'Tests/test2.md'
4 недель назад
OgarkovIA 13a0f36105 Изменил(а) на 'Tests/test2.md'
4 недель назад
OgarkovIA 9cc3cf3f8f Изменил(а) на 'Tests/test2.md'
4 недель назад
OgarkovIA 1802bcc694 Изменил(а) на 'Tests/test2.md'
4 недель назад
Пользователь № 5 аудитории Ж-113 a53b044e9f Тест по модулю выполнен
4 недель назад
Пользователь № 5 аудитории Ж-113 6a3418e7f5 Переделанное тестовое задание: добавление условия задания
1 месяц назад
Пользователь № 5 аудитории Ж-113 144cb92809 Защита 5-ой лабораторной работы
1 месяц назад
OgarkovIA f19dbed3ff Добавил тестовое задание по теме 4
2 месяцев назад
Пользователь № 4 аудитории Ж-113 87380b6999 Тестовое задание по теме 4
2 месяцев назад
Пользователь № 4 аудитории Ж-113 6b2cb84080 Тестовое задание по теме 4
2 месяцев назад
OgarkovIA 259aba976e Изменил(а) на 'TEMA6/report.md'
2 месяцев назад
Ogarkov Ilya 2a42be9657 Сделал контрольное задание(control.py). Лабораторная работа полностью сделана
2 месяцев назад
Ogarkov Ilya bebe611a8c Сделал лабораторную намбер 6, осталось контрольное задание
2 месяцев назад
Пользователь № 10 аудитории Ж-202 4f4bd5ee01 Остановился на пункте 4.
2 месяцев назад
Ogarkov Ilya b870c67abc делаю 6 лабу
2 месяцев назад
OgarkovIA c2ee0a0458 Изменил(а) на 'TEMA5/report.md'
2 месяцев назад
Ogarkov Ilya 7224f35d19 control.py сделан
2 месяцев назад
Ogarkov Ilya b3f2969eb2 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
2 месяцев назад
Ogarkov Ilya c2316e0e2a Лабораторная работа готова, без контрольного задания control.py
2 месяцев назад
OgarkovIA 0d5050d798 Изменил(а) на 'TEMA4/report.md'
2 месяцев назад
OgarkovIA cd689860a1 Изменил(а) на 'TEMA4/report.md'
2 месяцев назад
OgarkovIA e783818f23 Изменил(а) на 'TEMA4/report.md'
2 месяцев назад
Ogarkov Ilya ffb3f70758 code: Исправил код в control.py
2 месяцев назад
Ogarkov Ilya ba21b92ec3 doc:
2 месяцев назад
Пользователь № 5 аудитории Ж-113 cbe6799393 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
2 месяцев назад
Пользователь № 5 аудитории Ж-113 c3592429de Control was done
2 месяцев назад
OgarkovIA cbfdb903fa Изменил(а) на 'TEMA4/report.md'
2 месяцев назад
Пользователь № 5 аудитории Ж-113 b2321e5dfb That all. Lab4 was done
2 месяцев назад
OgarkovIA 31e4e86e6a Изменил(а) на 'Tests/test1.py'
2 месяцев назад
Пользователь № 5 аудитории Ж-113 0bad0e334e doc:Add files for tests
2 месяцев назад
Пользователь № 5 аудитории Ж-113 94d217bb39 Add dir for tests
2 месяцев назад
OgarkovIA 1c8311a03a Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
OgarkovIA 79bb61ef37 Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
OgarkovIA 3e0d53cf1f Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
OgarkovIA e0b0fc701f Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
OgarkovIA 67b4674dba Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
OgarkovIA 6305187125 Изменил(а) на 'TEMA3/report.md'
2 месяцев назад
Ogarkov Ilya 1f54b95608 end
2 месяцев назад
Ogarkov Ilya 87a8410e8c That all report.md
2 месяцев назад
Ogarkov Ilya 5dfe49b2b1 BEGGINNING
2 месяцев назад
OgarkovIA 7d850b0937 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA a47c996fee Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 95defa2ae1 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA bf89e9e4ff Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA fdadb0a022 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 3b6a8d1333 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA d2e8d36bd7 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 01776079c5 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 002c25ce29 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA b26245adfe Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA a95f86a0e3 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 61fdabbe1e Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 07e7c318e3 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA dad824563e Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA fdee7ea3fa Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA d8ad2ee63d Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 0dd95c510c Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA 39df1c0c05 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA be6fafa3c6 Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
OgarkovIA afd259242a Изменил(а) на 'TEMA1/report.md'
3 месяцев назад
Ogarkov Ilya f2b7f04301 Merge branch 'main' of http://uit.mpei.ru/git/OgarkovIA/python-labs
3 месяцев назад
Ogarkov Ilya a7e43cac6b Add task and test .md files
3 месяцев назад
OgarkovIA 9c7d796f23 Изменил(а) на 'TEMA2/report.md'
3 месяцев назад
OgarkovIA 63d57fa30a Изменил(а) на 'TEMA2/report.md'
3 месяцев назад
Ogarkov Ilya 03be55f96c Laboratory work No. 2 has been completed. Total DOMINATION
3 месяцев назад
Ogarkov Ilya c26f4219f8 Begginning
3 месяцев назад
Пользователь № 5 аудитории Ж-111 ce3be3507b that all commit
3 месяцев назад
Пользователь № 5 аудитории Ж-111 502c4c5a49 first commit
3 месяцев назад

Двоичные данные
Labs.docx

Двоичный файл не отображается.

@ -0,0 +1,4 @@
# Протокол по Теме 1 Огарков Илья Александрович
import os
os.chdir('\\Users\\u111-05\\Desktop\\python-labs\\TEMA1')
import prb1

Двоичные данные
TEMA1/15.PNG

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 49 KiB

Двоичные данные
TEMA1/15clock.PNG

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 10 KiB

Двоичные данные
TEMA1/9.PNG

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 32 KiB

@ -1,2 +1,5 @@
name = input("Как Вас зовут? ")
print("Привет,", name)
#Программа по Теме 1 Огарков Илья Александрович
print('Hello')
h=input('Your name=')
import os
os.chdir('\\Users\\u111-05\\Desktop\\python-labs\\TEMA1')

@ -0,0 +1,384 @@
<h1 align="center">Отчёт по теме 1</h1>
**Выполнил Огарков Илья, А-03-23**
## 1 Изучение среды IDLE
## 1.1 Настройка текущего каталога
```
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ git remote add upstream http://uit.mpei.ru/git/main/python-labs.git
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ git fetch upstream
From http://uit.mpei.ru/git/main/python-labs
* [new branch] main -> upstream/main
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ git stash push
No local changes to save
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ git rebase upstream/main
Current branch main is up to date.
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ git stash pop
No stash entries found.
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ cd
.git/ TEMA0/ TEMA3/ TEMA6/ TEMA9/
.gitignore TEMA1/ TEMA4/ TEMA7/
README.md TEMA2/ TEMA5/ TEMA8/
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs (main)
$ cd TEMA1
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ touch report.md
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
report.md
nothing added to commit but untracked files present (use "git add" to track)
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ git add report.md
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: report.md
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ git commit -m "first commit"
[main 502c4c5] first commit
Committer: Пользователь № 5 аудитории Ж-111 <u111-05@public.mpei.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 TEMA1/report.md
u111-05@w10prog-04 MINGW64 ~/Desktop/python-labs/TEMA1 (main)
$ git push
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 429 bytes | 429.00 KiB/s, done.
Total 4 (delta 1), reused 1 (delta 0), pack-reused 0
remote:
remote: Create a new pull request for 'OgarkovIA:main':
remote: http://uit.mpei.ru/git/main/python-labs/compare/main...OgarkovIA:main
remote:
remote: . Processing 1 references
remote: Processed 1 references in total
To http://uit.mpei.ru/git/OgarkovIA/python-labs.git
437460a..502c4c5 main -> main
```
## 1.3-8
```python
>>> print('Hello')
Hello
>>> h=input('Your name=')
Your name=Ilya
>>>exit()
```
## 1.9 Изучите предложения главного меню
<img src="./9.PNG" alt="Описание" width="500" height="300" align="center">
## 1.10
```python
#Программа по Теме 1 Огарков Илья Александрович
print('Hello')
h=input('Your name=')
import os
os.chdir('\\Users\\u111-05\\Desktop\\python-labs\\TEMA1')
```
## 1.11
```python
import prb1
Hello
Your name=
```
## 1.13
```python
# Протокол по Теме 1 Огарков Илья Александрович
import os
os.chdir('\\Users\\u111-05\\Desktop\\python-labs\\TEMA1')
import prb1
```
# 1.14
```python
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(input)
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
```
## 1.15
```python
# File: tdemo_chaos.py
# Author: Gregor Lingl
# Date: 2009-06-24
# A demonstration of chaos
from turtle import *
N = 80
def f(x):
return 3.9*x*(1-x)
def g(x):
return 3.9*(x-x**2)
def h(x):
return 3.9*x-3.9*x*x
def jumpto(x, y):
penup(); goto(x,y)
def line(x1, y1, x2, y2):
jumpto(x1, y1)
pendown()
goto(x2, y2)
def coosys():
line(-1, 0, N+1, 0)
line(0, -0.1, 0, 1.1)
def plot(fun, start, color):
pencolor(color)
x = start
jumpto(0, x)
pendown()
dot(5)
for i in range(N):
x=fun(x)
goto(i+1,x)
dot(5)
def main():
reset()
setworldcoordinates(-1.0,-0.1, N+1, 1.1)
speed(0)
hideturtle()
coosys()
plot(f, 0.35, "blue")
plot(g, 0.35, "green")
plot(h, 0.35, "red")
# Now zoom in:
for s in range(100):
setworldcoordinates(0.5*s,-0.1, N+1, 1.1)
return "Done!"
if __name__ == "__main__":
main()
mainloop()
```
<img src="./15.PNG" alt="Описание" width="500" height="300" align="center">
```python
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
""" turtle-example-suite:
tdemo_clock.py
Enhanced clock-program, showing date
and time
------------------------------------
Press STOP to exit the program!
------------------------------------
"""
from turtle import *
from datetime import datetime
def jump(distanz, winkel=0):
penup()
right(winkel)
forward(distanz)
left(winkel)
pendown()
def hand(laenge, spitze):
fd(laenge*1.15)
rt(90)
fd(spitze/2.0)
lt(120)
fd(spitze)
lt(120)
fd(spitze)
lt(120)
fd(spitze/2.0)
def make_hand_shape(name, laenge, spitze):
reset()
jump(-laenge*0.15)
begin_poly()
hand(laenge, spitze)
end_poly()
hand_form = get_poly()
register_shape(name, hand_form)
def clockface(radius):
reset()
pensize(7)
for i in range(60):
jump(radius)
if i % 5 == 0:
fd(25)
jump(-radius-25)
else:
dot(3)
jump(-radius)
rt(6)
def setup():
global second_hand, minute_hand, hour_hand, writer
mode("logo")
make_hand_shape("second_hand", 125, 25)
make_hand_shape("minute_hand", 130, 25)
make_hand_shape("hour_hand", 90, 25)
clockface(160)
second_hand = Turtle()
second_hand.shape("second_hand")
second_hand.color("gray20", "gray80")
minute_hand = Turtle()
minute_hand.shape("minute_hand")
minute_hand.color("blue1", "red1")
hour_hand = Turtle()
hour_hand.shape("hour_hand")
hour_hand.color("blue3", "red3")
for hand in second_hand, minute_hand, hour_hand:
hand.resizemode("user")
hand.shapesize(1, 1, 3)
hand.speed(0)
ht()
writer = Turtle()
#writer.mode("logo")
writer.ht()
writer.pu()
writer.bk(85)
def wochentag(t):
wochentag = ["Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"]
return wochentag[t.weekday()]
def datum(z):
monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June",
"July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]
j = z.year
m = monat[z.month - 1]
t = z.day
return "%s %d %d" % (m, t, j)
def tick():
t = datetime.today()
sekunde = t.second + t.microsecond*0.000001
minute = t.minute + sekunde/60.0
stunde = t.hour + minute/60.0
try:
tracer(False) # Terminator can occur here
writer.clear()
writer.home()
writer.forward(65)
writer.write(wochentag(t),
align="center", font=("Courier", 14, "bold"))
writer.back(150)
writer.write(datum(t),
align="center", font=("Courier", 14, "bold"))
writer.forward(85)
second_hand.setheading(6*sekunde) # or here
minute_hand.setheading(6*minute)
hour_hand.setheading(30*stunde)
tracer(True)
ontimer(tick, 100)
except Terminator:
pass # turtledemo user pressed STOP
def main():
tracer(False)
setup()
tracer(True)
tick()
return "EVENTLOOP"
if __name__ == "__main__":
mode("logo")
msg = main()
print(msg)
mainloop()
```
## Фото часов
<img src="./15clock.PNG" alt="Описание" width="500" height="300" align="center">

@ -0,0 +1,3 @@
strk=' А роза упала на лапу азора '
print(type(strk))
print(strk[::-1])

@ -0,0 +1,24 @@
import keyword
familia = "Ogarkov"
print(familia)
first = "O"
print(first)
sp_kw = keyword.kwlist
print(sp_kw)
sp_kw.remove("nonlocal")
print(sp_kw)
kort_nam = ("Ilya","Egor","Dima","Sasha")
print(kort_nam)
print(type(kort_nam))
kort_nam1 = ("Ivan","Zahar")
kort_nam = kort_nam +kort_nam1
print(kort_nam)
print(kort_nam.count("Dima"))
dict_bas = {"Список":[1,2,4], "Множество":{1,2,3,4},"Словарь":{"key":"value"}}
print(dict_bas)

@ -0,0 +1,232 @@
# Отчет по теме 2
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла report.md
## 2. Изучение простых объектов
```python
f1=16;f2=3
f1;f2
16
3
del fl
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
type(f2)
<class 'int'>
del f1,f2
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
```
## 3. Изучение правил именований объектов Python
```python
ggl =1.6
hh1='Строка'
73sr=3
SyntaxError: invalid decimal literal
and=7
SyntaxError: invalid syntax
```
## 4.
```python
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
list_keyword=keyword.kwlist
list_keyword
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
## 5.
```python
round(2.124516361,2)
2.12
list_1 = [1,2,4]
list_2=["one","two","four"]
print(dict(zip(list_1,list_2)))
{1: 'one', 2: 'two', 4: 'four'}
```
## 6.
```python
Ggl=45
ggl;Ggl
1.6
45
```
## 7. Изучение базовых типов объектов(bool,int,float,complex,str)
## 7.1
```python
bb1=True; bb2=False
bb1;bb2
True
False
type(bb1)
<class 'bool'>
```
## 7.2
```python
ii1=-1234567890
ff1=-8.9876e-12
dv1=0b1101010
vsm1=0o52765
shest1=0x7109af6
cc1=2-3j
a=3.67; b=-0.45
cc2=complex(a,b)
cc2
(3.67-0.45j)
```
## 7.3
```python
sslb = "Меня зовут:\nОгарков И.А."
print(sslb)
Меня зовут:
Огарков И.А.
print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
```
## 7.4
```python
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[6:9]
'стр'
ss1[13:]
'символов'
ss1[:13]
'Это - строка '
ss1[5:-8]
' строка '
ss1[:2]
'Эт'
ss1[3:17:2]
' тоасм'
ss1[17:3:-2]
'омсаот '
ss1=ss1[:4]+"="+ss1[5:]
```
## 8. Изучение более сложных объектов
## 8.1
```python
spis1=[111,'Spisok',5-9j]
stup=[0,0,1,1,1,1,1,1,1]
spis1[-1]
(5-9j)
stup[-8::2]
[0, 1, 1, 1]
spis1[1]='Список'
len(spis1)
3
help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
spis1.append('New item')
spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item']
spis1.pop(1)
'Список'
spis2=[spis1,[4,5,6,7]
]
spis2[0][1]
(5-9j)
spis2[0][1]=78
spis1
[111, 78, 'New item']
list_object = [[1,2,3],["ssadd","dada","fff"],True,0.456]
list_object
[[1, 2, 3], ['ssadd', 'dada', 'fff'], True, 0.456]
```
## 8.2
```python
kort1= kort1+(sslb,)
kort2=kort1[:2]+kort1[3:]
kort1;kort2
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут:\n Огарков И.А.')
(222, 'Kortezh', 1, 2, 'Меня зовут:\n Огарков И.А.')
kort1.index(2)
4
kort1.count(222)
1
kort1[2]=90
Traceback (most recent call last):
File "<pyshell#117>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
tuple_object = ((1,2,3),("ssadd","dada","fff"),True,0.456)
tuple_object
((1, 2, 3), ('ssadd', 'dada', 'fff'), True, 0.456)
```
## 8.3
```python
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2={1:'mean',2:'standart deviation',3:'correlation'}
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic3['statistics'][2]
'standart deviation'
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',sslb)])
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,sslb]))
kort_object = (1,2,3,4,5,6,7)
list_object = ["one","two","three","four","five"]
print(dict(zip(kort_object,list_object)))
{1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'}
print(len(dict(zip(kort_object,list_object))))
5
AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
AVTI['Курс III'][5]
15
```
## 8.4
```python
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
mnoz1
{'двигатель', 'микропроцессор', 'датчик', 'линия связи'}
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1.remove('линия связи')
set_object = {1,"1",True,1.0}
len(set_object)
2
set_object
{1, '1'}
```

@ -0,0 +1,21 @@
```python
import keyword
familia = "Ogarkov"
print(familia)
first = "O"
print(first)
sp_kw = keyword.kwlist
print(sp_kw)
sp_kw.remove("nonlocal")
print(sp_kw)
kort_nam = ("Ilya","Egor","Dima","Sasha")
print(kort_nam)
print(type(kort_nam))
kort_nam1 = ("Ivan","Zahar")
kort_nam = kort_nam +kort_nam1
print(kort_nam)
print(kort_nam.count("Dima"))
dict_bas = {"Список":[1,2,4], "Множество":{1,2,3,4},"Словарь":{"key":"value"}}
print(dict_bas)
```

@ -0,0 +1,5 @@
```python
strk=' А роза упала на лапу азора '
print(type(strk))
print(strk[::-1])
```

@ -0,0 +1,18 @@
a = int('45',8)
print(a)
D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
D1 = [list(D.keys()),list(D.values())]
D1 = D1[0]+D1[1]
print(tuple(D1))
result1 = ((1768 // 24.8) % 3) ** 2.4
print(result1)
result2 = ((~(13 & 27)) ^ 14) << 2
print(result2)
my_list = ['колебат'] * 4
concatenated = my_list[1] + my_list[2]
print(concatenated)
print(dir(D),D.keys(),D.values(),sep="\n")
s = "Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список."
s = s.replace("данного","").replace("-",",").split(" ")
print(s)

@ -0,0 +1,416 @@
# Отчёт по теме 3. Операция с объектами
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла ```report.md```
## 2. Преобразование простых базовых типов объектов
**2.1. Преобразование в логический тип с помощью функции bool(<Объект>)**
```python
logiz1=bool(56)
logiz2=bool(0)
logiz3=bool("Beta")
logiz4=bool("")
logiz1,logiz2,logiz3,logiz4
(True, False, True, False)
```
**2.2. Преобразование в целое десятичное число объекта с заданной системой счисления**
```python
tt1=int(198.6)
tt1
198
tt2=int("-76")
tt2
-76
tt3=int("B",16);tt3
11
tt4=int("71",8);tt4
57
tt5=int("98.76");tt5
```
### Преобразование целых чисел или строк символов в вещественное число
```python
flt1=float(789);flt1
789.0
flt2=float(-6.78e2)
flt2
-678.0
flt3=float("Infinity");flt3
inf
flt4=float("-inf");flt4
-inf
```
**2.3. Преобразование десятичных чисел в другие системы счисления**
```python
hh=123
dv1=bin(hh);dv1
'0b1111011'
vos1=oct(hh);vos1
'0o173'
shs1=hex(hh);shs1
'0x7b'
int(dv1,2)
123
int(vos1,8)
123
int(shs1,16)
123
```
## 3. Изучение преобразования более сложных базовых типов объектов
**3.1. Преобразование в строку символов с помощью функции str**
```python
strk1=str(23.6)
strk2=str(logiz3);strk2
'True'
strk3=str(["A","B","C"]);strk3
"['A', 'B', 'C']"
strk4=str(("A","B","C"));strk4
"('A', 'B', 'C')"
strk5=str({"A":1,"B":2,"C":9});strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
**3.2. Преобразование элементов объекта в список с помощью функции list**
```python
spis1=list("Строка символов");spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
spis2=list((124,236,-15,908));spis2
[124, 236, -15, 908]
spis3=list({"A":1,"B":2,"C":9});spis3
['A', 'B', 'C']
spis3_values = list({"A":1,"B":2,"C":9}.values());spis3_values
[1, 2, 9]
```
**3.3. Преобразование элементов объектов в кортеж с помощью функции tuple**
```python
kort7=tuple('Строка символов');kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
kort8=tuple(spis2);kort8
(124, 236, -15, 908)
kort9=tuple({"A":1,"B":2,"C":9});kort9
('A', 'B', 'C')
```
**3.4. Удаление объектов**
```python
del strk5, kort8
strk5;kort8
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
strk5;kort8
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
familiya = "Ogarkov IA"
familiya = list(familiya);familiya
['O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A']
familiya = tuple(familiya);familiya
('O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A')
familiya = str(familiya);familiya
"('O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A')"
```
## 4. Арифметические операции
**4.1. Сложение и вычитание (+ и -)**
```python
12+7+90
109
5.689e-1 - 0.456
0.11289999999999994
23.6+54
77.6
14-56.7+89
46.3
```
**4.2. Умножение (*)**
```python
-6.7*12
-80.4
```
**4.3. Деление**
```python
-234.5/6
-39.083333333333336
a=178/45;a
3.9555555555555557
```
**4.4. Деление с округлением вниз**
```python
b = 178//45
b
3
c=-24.6//12.1;c
-3.0
```
**4.5. Получение остатка от деления (%)**
```python
148%33
16
12.6%3.8
1.2000000000000002
```
**4.6. Возведение в степень (**)**
```python
14**3
2744
e=2.7**3.6;e
35.719843790663525
```
## 5. Операции с двоичными представлениями целых чисел
**5.1. Двоичная инверсия (~)**
```python
dv1=9
dv2=~dv1;dv2
-10
bin(dv2);bin(dv1)
'-0b1010'
'0b1001'
```
**5.2. Двоичное «И» (&)**
```python
bin(7&9)
'0b1'
bin(7&8)
'0b0'
```
**5.3. Двоичное «ИЛИ» (|)**
```python
bin(7|9 )
'0b1111'
bin(7|8)
'0b1111'
bin(14|5)
'0b1111'
```
**5.4. Двоичное «исключающее ИЛИ»(^)**
```python
bin(14^5)
'0b1011'
14^5
11
```
**5.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева**
```python
h=14
g=h<<2
g1=h>>1
g2=h>>2
bin(g2)
'0b11'
bin(h)
'0b1110'
bin(g)
'0b111000'
bin(g1)
'0b111'
# Число A: 1011001 (7 знаков) = 89 в десятичной
a = 0b1011001
# Число B: 11011010 (8 знаков) = 218 в десятичной
b = 0b11011010
print(f"a = {a} (binary: {bin(a)})")
print(f"b = {b} (binary: {bin(b)})")
```
## 6. Операции при работе с последовательностями (строками, списками, кортежами)
**6.1. Объединение последовательностей (конкатенация)(+)**
```python
'Система '+'регулирования'
'Система регулирования'
['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
**6.2. Повторение (*)**
```python
'ля-'*5
'ля-ля-ля-ля-ля-'
['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
signal1=[0]*3+[1]*99
signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
signal2=(0,)*3+(1,)*5+(0,)*7
signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
**6.3. Проверка наличия заданного элемента в последовательности (in)**
```python
stroka='Система автоматического управления'
'автомат' in stroka
True
'ку' in ['ку','-']*3
True
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
**6.4. Подстановка значений в строку с помощью оператора «%»**
```python
stroka='Температура = %g %s %g'
stroka % (16,' меньше ',25); stroka
'Температура = 16 меньше 25'
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
**7.1. Обычное присваивание значения переменной (=)**
```python
zz=12
zz
12
```
**7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)**
```python
zz=12
zz
12
zz+=5;zz
17
zz-=3;zz
14
stroka='Система'
stroka+=' регулирования';stroka
'Система регулирования'
```
**7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)**
```python
zz/=2;zz
7.0
zz*=5;zz
35.0
```
**7.5. Множественное присваивание**
```python
w;v
10
10
n1,n2,n3=(11,-3,'all');n1;n2;n3
11
-3
'all'
n1,n2,n3="Str"
n1;n2;n3
'S'
't'
'r'
n1,n2,n3=[1,2,3];n1;n2;n3
1
2
3
n1,n2,n3={1:"one",2:"two",3:"three"};n1;n2;n3
1
2
3
n1,n2,n3 = (1,2,3);n1;n2;n3
1
2
3
```
## 8. Логические операции – при создании логических выражений, дающих в результате вычисления значения True или False
**8.1. Операции сравнение**
```python
w>v
False
```
**8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)**
```python
mnoz1={'pen','book','pen','iPhone','table','book'}
'book' in mnoz1
True
'cap' in mnoz1
False
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
'Vologda' in dic1
True
'Pskov' in dic1
False
56 in dic1.values()
True
dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
'UII' in dct1['Depart']
True
dct1['Depart'][1] == 'MM'
False
```
**8.3. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not)**
```python
a=17
b=-6
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
**8.4. Проверка ссылок переменных на один и тот же объект (is)**
```python
w=v=10
w is v
True
w1=['A','B']
v1=['A','B']
w1 is v1
False
w1,v1=['A','B'] ;w1 is v1
False
```
## 9. Операции с объектами, выполняемые с помощью методов
```python
stroka='Микропроцессорная система управления'
dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
```
**9.1. Методы для работы со строками**
```python
stroka.find('пр')
5
stroka.count("с")
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ')
spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22)
stroka3
'Микропроцессорная система управления'
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
strk1='Момент времени {}, значение = {}'
strk1
'Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
**9.2. Методы для работы со списками**
```python
spsk = [1,2,3,4,5]
spsk.pop(2)
3
spsk
[1, 2, 4, 5]
spsk.append('c')
spsk
[1, 2, 4, 5, 'c']
spsk.insert(2,'a')
spsk
[1, 2, 'a', 4, 5, 'c']
spsk.count('a')
1
dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
```

@ -0,0 +1,415 @@
# Отчёт по теме 3. Операция с объектами
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла report.md
## 2. Преобразование простых базовых типов объектов
2.1 Преобразование в логический тип с помощью функции bool(<Объект>).
logiz1=bool(56)
logiz2=bool(0)
logiz3=bool("Beta")
logiz4=bool("")
logiz1,logiz2,logiz3,logiz4
(True, False, True, False)
2.2 Преобразование в целое десятичное число объекта с заданной системой счисления
tt1=int(198.6)
tt1
198
tt2=int("-76")
tt2
-76
tt3=int("B",16);tt3
11
tt4=int("71",8);tt4
57
tt5=int("98.76");tt5
Преобразование целых чисел или строк символов в вещественное число
flt1=float(789);flt1
789.0
flt2=float(-6.78e2)
flt2
-678.0
flt3=float("Infinity");flt3
inf
flt4=float("-inf");flt4
-inf
2.3 Преобразование десятичных чисел в другие системы счисления
hh=123
dv1=bin(hh);dv1
'0b1111011'
vos1=oct(hh);vos1
'0o173'
shs1=hex(hh);shs1
'0x7b'
int(dv1,2)
123
int(vos1,8)
123
int(shs1,16)
123
## 3. Изучение преобразования более сложных базовых типов объектов
3.1 Преобразование в строку символов с помощью функции str
strk1=str(23.6)
strk2=str(logiz3);strk2
'True'
strk3=str(["A","B","C"]);strk3
"['A', 'B', 'C']"
strk4=str(("A","B","C"));strk4
"('A', 'B', 'C')"
strk5=str({"A":1,"B":2,"C":9});strk5
"{'A': 1, 'B': 2, 'C': 9}"
3.2. Преобразование элементов объекта в список с помощью функции list
spis1=list("Строка символов");spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
spis2=list((124,236,-15,908));spis2
[124, 236, -15, 908]
spis3=list({"A":1,"B":2,"C":9});spis3
['A', 'B', 'C']
spis3_values = list({"A":1,"B":2,"C":9}.values());spis3_values
[1, 2, 9]
3.3. Преобразование элементов объектов в кортеж с помощью функции tuple
kort7=tuple('Строка символов');kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
kort8=tuple(spis2);kort8
(124, 236, -15, 908)
kort9=tuple({"A":1,"B":2,"C":9});kort9
('A', 'B', 'C')
3.4. Удаление объектов
del strk5, kort8
strk5;kort8
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
strk5;kort8
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
familiya = "Ogarkov IA"
familiya = list(familiya);familiya
['O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A']
familiya = tuple(familiya);familiya
('O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A')
familiya = str(familiya);familiya
"('O', 'g', 'a', 'r', 'k', 'o', 'v', ' ', 'I', 'A')"
## 4. Арифметические операции
4.1. Сложение и вычитание (+ и -)
12+7+90
109
5.689e-1 - 0.456
0.11289999999999994
23.6+54
77.6
14-56.7+89
46.3
4.2. Умножение (*)
-6.7*12
-80.4
4.3. Деление
-234.5/6
-39.083333333333336
a=178/45;a
3.9555555555555557
4.4. Деление с округлением вниз
b = 178//45
b
3
c=-24.6//12.1;c
-3.0
4.5. Получение остатка от деления (%)
148%33
16
12.6%3.8
1.2000000000000002
4.6. Возведение в степень (**)
14**3
2744
e=2.7**3.6;e
35.719843790663525
## 5. Операции с двоичными представлениями целых чисел
5.1. Двоичная инверсия (~)
dv1=9
dv2=~dv1;dv2
-10
bin(dv2);bin(dv1)
'-0b1010'
'0b1001'
5.2. Двоичное «И» (&)
bin(7&9)
'0b1'
bin(7&8)
'0b0'
5.3. Двоичное «ИЛИ» (|)
bin(7|9 )
'0b1111'
bin(7|8)
'0b1111'
bin(14|5)
'0b1111'
5.4. Двоичное «исключающее ИЛИ»(^)
bin(14^5)
'0b1011'
14^5
11
5.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
h=14
g=h<<2
g1=h>>1
g2=h>>2
bin(g2)
'0b11'
bin(h)
'0b1110'
bin(g)
'0b111000'
bin(g1)
'0b111'
# Число A: 1011001 (7 знаков) = 89 в десятичной
a = 0b1011001
# Число B: 11011010 (8 знаков) = 218 в десятичной
b = 0b11011010
print(f"a = {a} (binary: {bin(a)})")
print(f"b = {b} (binary: {bin(b)})")
## 6. Операции при работе с последовательностями (строками, списками, кортежами)
6.1. Объединение последовательностей (конкатенация)(+)
'Система '+'регулирования'
'Система регулирования'
['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
6.2. Повторение (*)
'ля-'*5
'ля-ля-ля-ля-ля-'
['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
signal1=[0]*3+[1]*99
signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
signal2=(0,)*3+(1,)*5+(0,)*7
signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
6.3. Проверка наличия заданного элемента в последовательности (in)
stroka='Система автоматического управления'
'автомат' in stroka
True
'ку' in ['ку','-']*3
True
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
6.4. Подстановка значений в строку с помощью оператора «%»
stroka='Температура = %g %s %g'
stroka % (16,' меньше ',25); stroka
'Температура = 16 меньше 25'
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
## 7. Оператор присваивания
7.1. Обычное присваивание значения переменной (=)
zz=12
zz
12
7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
zz=12
zz
12
zz+=5;zz
17
zz-=3;zz
14
stroka='Система'
stroka+=' регулирования';stroka
'Система регулирования'
7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
zz/=2;zz
7.0
zz*=5;zz
35.0
7.5. Множественное присваивание
w;v
10
10
n1,n2,n3=(11,-3,'all');n1;n2;n3
11
-3
'all'
n1,n2,n3="Str"
n1;n2;n3
'S'
't'
'r'
n1,n2,n3=[1,2,3];n1;n2;n3
1
2
3
n1,n2,n3={1:"one",2:"two",3:"three"};n1;n2;n3
1
2
3
n1,n2,n3 = (1,2,3);n1;n2;n3
1
2
3
## 8. Логические операции – при создании логических выражений, дающих в результате вычисления значения True или False
8.1. Операции сравнение
w>v
False
8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)
mnoz1={'pen','book','pen','iPhone','table','book'}
'book' in mnoz1
True
'cap' in mnoz1
False
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
'Vologda' in dic1
True
'Pskov' in dic1
False
56 in dic1.values()
True
dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
'UII' in dct1['Depart']
True
dct1['Depart'][1] == 'MM'
False
8.3. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not)
a=17
b=-6
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
8.4. Проверка ссылок переменных на один и тот же объект (is)
w=v=10
w is v
True
w1=['A','B']
v1=['A','B']
w1 is v1
False
w1,v1=['A','B'] ;w1 is v1
False
## 9. Операции с объектами, выполняемые с помощью методов
stroka='Микропроцессорная система управления'
dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
9.1. Методы для работы со строками
stroka.find('пр')
5
stroka.count("с")
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ')
spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22)
stroka3
'Микропроцессорная система управления'
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
strk1='Момент времени {}, значение = {}'
strk1
'Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
9.2. Методы для работы со списками
spsk = [1,2,3,4,5]
spsk.pop(2)
3
spsk
[1, 2, 4, 5]
spsk.append('c')
spsk
[1, 2, 4, 5, 'c']
spsk.insert(2,'a')
spsk
[1, 2, 'a', 4, 5, 'c']
spsk.count('a')
1
dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Двоичные данные
TEMA4/Bar.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.6 KiB

Двоичные данные
TEMA4/Hist.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 9.9 KiB

Двоичные данные
TEMA4/Ris1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичные данные
TEMA4/Ris2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 26 KiB

Двоичные данные
TEMA4/Ris3.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 15 KiB

@ -0,0 +1,26 @@
import math
import cmath
import time
import random
import string
phase = cmath.phase(0.2+0.8j)
rnd = round(phase,2)
rnd_ = rnd*20
corteg = (math.floor(rnd_/3),rnd_%3)
print(corteg)
c1 = time.time()
s = time.asctime().split()
hours_minutes = s[3]
hours_minutes = hours_minutes [:-3]
print(hours_minutes)
list_dninedeli = ["Пн", "Вт", "Ср","Чт","Пт", "Сб","Вс"]
print(random.sample(list_dninedeli,3))
choice = list(range(14,33,3))
unif = random.choice(choice)
print(unif)
N = round(random.gauss(15,4))
N = max(1, N)
letters = random.choices(string.ascii_letters, k=N)
print(letters)
c2 = time.time() - c1
print(f"Прошло меньше {math.ceil(c2)} минуты")

@ -0,0 +1,255 @@
# Отчёт по теме 4. Операция с объектами
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Стандартные функции
**2.1. Функция round – округление числа с заданной точностью**
```python
round(123.456,1)
123.5
round(123.456,0)
123.0
```
**2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.**
```python
gg=range(76,123,9);gg
range(76, 123, 9)
list(gg)
[76, 85, 94, 103, 112, 121]
list(range(23))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
**2.3. ункция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей (zip – застежка-«молния»)**
```python
qq = ["Ogarkov", "Butko", "Efimova", "Baranov"]
ff=zip(gg,qq);ff
<zip object at 0x0000021A399B9A00>
tuple(ff)
((76, 'Ogarkov'), (85, 'Butko'), (94, 'Efimova'), (103, 'Baranov'))
```
**2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки**
```python
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=4
dan
-136.0
```
**2.5. Похожая на eval функция exec – чтение и выполнение объекта-аргумента функции**
```python
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
```
**2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map**
```python
abs(-7+4)
3
pow(2,3)
8
max(2,3)
3
min(2,3)
2
li_st = [1,2,3,4,5]
sum(li_st)
15
divmod(8,3)
(2, 2)
words = ["apple","orange","limon"]
length = map(len, words);length
<map object at 0x0000021A3C28AD10>
list(length)
[5, 6, 5]
```
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций
```python
import math
help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
Raise a ValueError if x is negative or non-integral.
math.factorial(5)
120
math.sin(30)
-0.9880316240928618
math.acos(1)
0.0
math.degrees(120)
6875.493541569878
math.degrees(1)
57.29577951308232
math.radians(180)
3.141592653589793
math.exp(2)
7.38905609893065
math.log(10)
2.302585092994046
math.log(2)
0.6931471805599453
log10(10)
math.log10(10)
1.0
math.sqrt(10)
3.1622776601683795
math.ceil(10.2)
11
math.floor(10.2)
10
math.pi
3.141592653589793
```
## 4. Функции из модуля cmath – совокупность функций для работы с комплексными числами
```python
import cmath
dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
cmath.sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
cmath.phase(1-0.5j)
-0.4636476090008061
```
## 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослучайными числами и выборками
```python
import random
help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
random.seed(5)
random.random()
0.7417869892607294
random.gauss(170,5)
171.01449055876262
random.gauss(170,5)
175.5048579816218
numbers = [1,3,5,3,8,9]
random.choice(numbers)
3
random.shuffle(numbers);numbers
[8, 3, 9, 3, 5, 1]
random.sample(numbers, 3)
[5, 8, 3]
random.betavariate(1,100)
0.00014457630861401468
random.gammavariate(1,100)
248.10585250290603
```
## 6. Функции из модуля time – работа с календарем и со временем
```python
<module 'time' (built-in)>
c1=time.time();c1
1759135155.9747162
c2=time.time()-c1
c2
21.171961307525635
dat=time.gmtime();dat
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=29, tm_hour=8, tm_min=40, tm_sec=13, tm_wday=0, tm_yday=272, tm_isdst=0)
dat.tm_mon
9
dat.tm_mday
29
time.localtime
<built-in function localtime>
tm=time.localtime();tm
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=29, tm_hour=11, tm_min=42, tm_sec=48, tm_wday=0, tm_yday=272, tm_isdst=0)
time.ctime()
'Mon Sep 29 11:44:13 2025'
time.asctime()
'Mon Sep 29 11:44:25 2025'
time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=29, tm_hour=11, tm_min=39, tm_sec=15, tm_wday=0, tm_yday=272, tm_isdst=0)
```
## 7. Графические функции
```python
import pylab
Matplotlib is building the font cache; this may take a moment.
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000021A451EB250>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000021A46656C50>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000021A46657390>]
pylab.show()
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000021A46675650>, <matplotlib.patches.Wedge object at 0x0000021A4A8989D0>, <matplotlib.patches.Wedge object at 0x0000021A4A899ED0>, <matplotlib.patches.Wedge object at 0x0000021A4A89B4D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show()
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000021A4A8D6C90>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000021A4A8A8CD0>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000021A4A9173D0>]
pylab.show()
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000021A467F10D0>, <matplotlib.patches.Wedge object at 0x0000021A467C6550>, <matplotlib.patches.Wedge object at 0x0000021A467F3410>, <matplotlib.patches.Wedge object at 0x0000021A46800A50>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show()
naselen=[65,12,23,17]
pylab.hist(naselen)
(array([2., 0., 1., 0., 0., 0., 0., 0., 0., 1.]), array([12. , 17.3, 22.6, 27.9, 33.2, 38.5, 43.8, 49.1, 54.4, 59.7, 65. ]), <BarContainer object of 10 artists>)
pylab.show()
pylab.bar(naselen, 3)
<BarContainer object of 4 artists>
pylab.show()
```
## 8. Статистический модуль statistics
```python
import statistics
numbers = [1,2,3,4,5,6,7,8,9]
statistics.mean(numbers)
5
statistics.median(numbers)
5
statistics.mod(numbers)
statistics.mode(numbers)
1
```

@ -0,0 +1,9 @@
import time
import math
import cmath
dat = time.localtime()
print(f"Текущая дата: {dat.tm_mday}-{dat.tm_mon}-{dat.tm_year}")
hz = 5-2j
exec(input('Введите функцию: '))

Двоичные данные
TEMA5/Figure_1(4.2.).png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 30 KiB

@ -0,0 +1,24 @@
my_string = list(input("Введите строку: ").lower())
alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]
numbers = [number for number in range(1,27)]
dictionary_1 = dict(zip(alphabet,numbers))
number_in_alphabet = [dictionary_1.get(my_string[number]) for number in range(len(my_string))]
print(dict(zip(my_string, number_in_alphabet)))
string_2 = "Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).".replace(".","").replace("","").replace("(","").replace(")","")\
.replace(",","").replace(":","").split()
print("yes" if str(input("Введите слово: ")) in string_2 else "no")
list_students_summer = ["Butko", "Ogarkov", "Efimova"]
list_marks_summer = [4, 3, 4]
list_students_winter = ["Ogarkov", "Efimova", "Butko"]
list_marks_winter = [5, 4, 3]
string_3 = input("Введите фамилию: ").strip()
if string_3 in list_students_summer and string_3 in list_students_winter:
summer_index = list_students_summer.index(string_3)
winter_index = list_students_winter.index(string_3)
average_mark = (list_marks_summer[summer_index] + list_marks_winter[winter_index]) / 2
print(f"Средний балл {string_3}: {average_mark}")

@ -0,0 +1,217 @@
# Отчёт по теме 5. Блоки инструкций, управляющие инструкции
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Изучение ветвление по условию – управляющая инструкция if
```python
porog=10
rashod1=2
rashod2 = 36
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
dohod
-8
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;rashod2
6
0
```
## 3. Цикл по перечислению – управляющая инструкция for
**3.1. Простой цикл**
```python
temperatura=5
for i in range(3,18,3):
temperatura+=i
temperatura
50
```
**3.2. Более сложный цикл**
```python
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.3. Пример: создание списка с 10 целыми случайными числами из диапазона от 1 до 100**
```python
import random as rn //Теперь вместо полного имени random можно использовать короткое rn
sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
492
len(sps5)
10
sps5
[79, 50, 29, 74, 92, 24, 56, 32, 8, 48]
```
**3.4. Пример с символьной строкой**
```python
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
stroka
'Это – автоматизированная система'
stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
```
**3.5. Запись цикла в строке. Пример: создание списка с синусоидальным сигналом**
```python
import math
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
sps2
[0.9092974268256817, 0.49103209793281005, -0.11479080280322804, -0.6767675184643197, -0.9802420445539634, -0.9092974268256817, -0.49103209793281016, 0.11479080280322791, 0.6767675184643196, 0.9802420445539634, 0.9092974268256818, 0.4910320979328103, -0.1147908028032278, -0.6767675184643196, -0.9802420445539632, -0.9092974268256818, -0.4910320979328104, 0.11479080280322768, 0.6767675184643195, 0.9802420445539632, 0.9092974268256819, 0.4910320979328105, -0.11479080280322579, -0.6767675184643194, -0.9802420445539632, -0.9092974268256819, -0.4910320979328106, 0.11479080280322743, 0.6767675184643193, 0.9802420445539632, 0.909297426825682, 0.49103209793281066, -0.1147908028032273, -0.6767675184643192, -0.9802420445539632, -0.909297426825682, -0.4910320979328108, 0.11479080280322719, 0.6767675184643192, 0.9802420445539631, 0.9092974268256822, 0.491032097932814, -0.11479080280322707, -0.676767518464319, -0.9802420445539625, -0.9092974268256822, -0.491032097932811, 0.11479080280323047, 0.6767675184643189, 0.9802420445539625, 0.9092974268256822, 0.4910320979328142, -0.11479080280322682, -0.6767675184643215, -0.9802420445539631, -0.9092974268256808, -0.4910320979328112, 0.11479080280322317, 0.6767675184643187, 0.9802420445539624, 0.9092974268256823, 0.4910320979328082, -0.11479080280322658, -0.6767675184643213, -0.980242044553963, -0.9092974268256838, -0.49103209793281144, 0.11479080280322293, 0.6767675184643186, 0.9802420445539637, 0.9092974268256824, 0.49103209793280844, -0.11479080280322633, -0.6767675184643158, -0.980242044553963, -0.9092974268256839, -0.49103209793281166, 0.11479080280322974, 0.6767675184643184, 0.9802420445539637, 0.9092974268256825, 0.4910320979328149, -0.11479080280321903, -0.6767675184643209, -0.9802420445539629, -0.909297426825681, -0.4910320979328119, 0.11479080280322244, 0.6767675184643129, 0.9802420445539636, 0.9092974268256826, 0.49103209793281505, -0.11479080280322584, -0.6767675184643155, -0.9802420445539644, -0.9092974268256812, -0.49103209793281205, 0.1147908028032222, 0.6767675184643127, 0.980242044553965]
```
## 4. Цикл «пока истинно условие» – управляющая инструкция while
**4.1. Цикл со счетчиком**
```python
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
**4.2. Пример с символьной строкой**
```python
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
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
<Figure size 1000x600 with 0 Axes>
plt.plot(sps2, 'b-', linewidth=2, marker='o', markersize=4)
[<matplotlib.lines.Line2D object at 0x000001E053D365D0>]
plt.title('Сигнал на выходе инерционного звена', fontsize=14)
Text(0.5, 1.0, 'Сигнал на выходе инерционного звена')
plt.xlabel('Время (моменты i)', fontsize=12)
Text(0.5, 0, 'Время (моменты i)')
plt.ylabel('Значение сигнала', fontsize=12)
Text(0, 0.5, 'Значение сигнала')
plt.grid(True)
plt.show()
```
**4.3. Определение, является ли число простым (делится только на самого себя или 1)**
```python
chislo=267
kandidat =chislo // 2
while kandidat > 1:
if chislo%kandidat == 0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, ' является простым!')
267 имеет множитель 89
count = 0
b = []
for i in range(251, 301,2):
for j in range(1,i+1):
if i%j==0:
count += 1
if count == 2:
b.append(i)
count = 0
print(f"Все простые числа в диапазоне от 250 до 300: {b}")
```

@ -0,0 +1,17 @@
"""
Задание: Запросите у пользователя ввод списка с двумя числовыми элементами. Обеспечьте проверку корректности ввода (что введено, действительно, два элемента) и проверку совпадения знаков у введенных чисел.
Если проверка дала негативный результат, выдать сообщение и обеспечить повторение ввода. Если все хорошо, отобразить введенный список с заголовком.
"""
sps = []
fl = True
while fl:
n = int(input())
sps.append(n)
if (sps[0]>0 and sps[1]<0) or (sps[0]<0 and sps[1]>0):
print("Знаки должны совпвдвть")
sps.pop()
continue
if len(sps)==2:
break
print(sps)

@ -0,0 +1 @@
запись строки в файл

@ -0,0 +1,47 @@
import random
import os
import pickle
list_corteg = []
for _ in range(125):
random_number = random.randint(6, 56)
list_corteg.append(str(random_number))
corteg_1 = tuple(list_corteg)
print(corteg_1)
print('-'*10)
corteg_1_1 = tuple(str(random.randint(6,56)) for _ in range(125))
print(corteg_1_1)
print('-'*10)
list_families_2 = ['Ogarkov', 'Efimova', 'Butko', 'Antonov']
print(list_families_2)
print('-'*10)
fp = open('control_corteg.2ob', 'wb')
pickle.dump(corteg_1, fp)
pickle.dump(list_families_2, fp)
fp.close()
fp = open('control_corteg.2ob', 'rb')
obj_5_1 = pickle.load(fp)
obj_5_2 = pickle.load(fp)
fp.close()
print(obj_5_1, obj_5_2, sep = '\n')
print('-'*10)
print('yes' if obj_5_1 == corteg_1 else 'no')
print('yes' if obj_5_2 == list_families_2 else 'no')
print('-'*10)
groups = []
for i in range(0, len(obj_5_1), 5):
group = list(obj_5_1[i:i+5])
groups.append(group)
print(f" Группа {len(groups)}: {group}")

Двоичные данные
TEMA6/control_corteg.2ob

Двоичный файл не отображается.

@ -0,0 +1,252 @@
# Отчёт по теме 6. Ввод-вывод данных и операции с файлами
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Вывод данных на экран дисплея
**2.1. Вывод в командной строке**
```python
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
**2.2. Вывод с использованием функции print**
```python
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
fff=234.5;gg='Значение температуры = '
print(gg,fff, sep="/")
Значение температуры = /234.5
print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")
Здесь может выводиться
большой текст,
занимающий несколько строк
print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
```
**2.3. Вывод с использованием метода write объекта sys.stdout**
```python
import sys
sys.stdout.write('Функция write')//это файловый объект, который представляет стандартный вывод программы; функция write выводит количесто символов
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14//количество символов увеличилось на +1, так как /n - это тоже отдельныйы символ
```
## 3. Ввод данных с клавиатуры
```python
psw=input('Введите пароль:')
Введите пароль:1234
psw;type(psw)
'1234'
<class 'str'>
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
import math
print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4. Ввод-вывод при работе с файлами.
**4.1. Функции для работы с путем к файлу**
```python
import os
os.getcwd() //функция показывает, какой рабочий каталог установлен в текущий момент времени(cwd = current working directory)
'C:\\Program Files\\Python311'
Ogarkov = os.getcwd();print(Ogarkov)
C:\Program Files\Python311
os.chdir('d:\\users\\tmp5\\') \\изменение расположения рабочего каталога
os.mkdir("C:\\Users\\Ilya\\Desktop\\mkdir") \\создание новой директории
os.rmdir("C:\\Users\\Ilya\\Desktop\\mkdir") \\удаляет пустую директорию. Если в директории есть файлы или другие папки - возникает ошибка
os.listdir("C:\\Users\\Ilya\\Desktop") \\возвращает список имён всех файлов и папок в указанной директории
['1.py', 'Adobe Photoshop 2025.lnk', 'AIDA64.lnk', 'bar', 'Cisco Secure Client.lnk', 'desktop.ini', 'Google Chrome.lnk', 'Labs', 'MSI Afterburner.lnk', 'Nexus', 'OBS Studio.lnk', 'python-labs', 'qBittorrent.lnk', 'Remote Desktop Connection.lnk', 'Telegram.lnk', 'Visual Studio Code.lnk', 'Wub', 'Yandex.lnk', 'ВАЖНОЕ_СЕРВЕР.txt', 'Документы огарков А.С', 'Золотой фонд цитат.txt', 'КМ1ОгарковИльяА-03-23.docx', 'Новая папка', 'Покер', 'Расписание.txt', 'РКН ФИКС', 'ТАУ', 'Фото']
import os.path
os.path.isdir("C:\\Users\\Ilya\\Desktop\\ТАУ") \\проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией
True
os.path.abspath("LICENSE.txt")
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313\\LICENSE.txt'
drkt = os.path.dirname(fil);drkt \\функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла)
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313'
os.path.basename(Ogarkov) \\возвращает последний компонент пути - обычно это имя файла или конечной папки
'Python313'
os.path.split(Ogarkov) \\разделяет путь на две части: директорию и имя файла/папки. Возвращает кортеж (head, tail)
('C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python', 'Python313')
os.path.exists(Ogarkov) \\проверяет существование пути
True
os.path.exists("C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\mkdir")
os.path.isfile(fil) \\проверяет наличие файла в рабочем каталоге
True
```
**4.3. Открытие файла для записи или чтения данных – функция open.**
```python
os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA6')
fp=open(file='zapis1.txt',mode='w')
type(fp);dir(fp)
<class '_io.TextIOWrapper'>
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
fp1=open('zapis2.bin',mode='wb+')
```
**4.4. Закрытие файла**
```python
fp.close();fp1.close()
```
**4.5. Запись информации в файл с помощью метода write**
```python
sps = list(range(1,13))
fp2=open('zapis3.txt','w')
fp2.write(str(sps[:4])+'\n')
13
fp2.write(str(sps[4:8])+'\n')
13
fp2.write(str(sps[8:])+'\n')
16
fp2.close()
for i in range(len(sps3)):
stroka4=sps3[i][0]+' '+str(sps3[i][1])
fp3.write(stroka4)
11
11
12
fp3.close()
gh = open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
```
**4.6. Первый способ чтения информации из текстового файла**
```python
fp = open('zapis3.txt')
for stroka in fp:
stroka=stroka.rstrip('\n')
stroka=stroka.replace('[','')
stroka=stroka.replace(']','')
sps1=sps1+stroka.split(',')
fp.close()
sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
```
**4.7. Чтение информации из файла с помощью метода read**
```python
fp = open('zapis3.txt')
stroka1 = fp.read(12); stroka1 \\число показывает количество читаемых символов в txt или количество бит в бит файле
'[1, 2, 3, 4]'
stroka2 = fp.read()
stroka2
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
fp.close()
```
**4.8. Чтение информации с помощью методов readline и readlines**
```python
fp = open('zapis3.txt', 'r')
fp.readline() \\функция читает одну строку
'[1, 2, 3, 4]\n'
fp.close()
fp = open('zapis3.txt', 'r')
fp.readlines() \\функция читает все строки
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
fp.close()
```
**4.9. Ввод-вывод объектов с использованием функций из модуля pickle**
```python
import pickle \\это модуль в Python для сериализации и десериализации объектов. Он преобразует объекты Python в поток байтов (сериализация) и обратно (десериализация)
mnoz1={'pen','book','pen','iPhone','table','book'}
fp = open('zapis6.mnz','wb')
pickle.dump(mnoz1, fp) \\функция dump принимает объект и сериализует в поток байтов
fp.close()
fp = open('zapis6.mnz', 'rb')
mnoz2 = pickle.load(fp); mnoz2 \\load – метод чтения объекта из бинарного файла
{'pen', 'iPhone', 'book', 'table'}
fp.close()
fp = open('zapis7.2ob', 'wb')
pickle.dump(mnoz1, fp)
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
pickle.dump(sps3,fp)
fp.close()
fp = open('zapis7.2ob', 'rb')
obj1 = pickle.load(fp); obj1
{'pen', 'iPhone', 'book', 'table'}
obj2 = pickle.load(fp); obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
fp.close()
```
## 5. Перенаправление потоков ввода и вывода данных
```python
import sysм \\это импорт встроенного модуля sys, который предоставляет доступ к системным параметрам и функциям, связанным с интерпретатором Python
vr_out = sys.stdout
fc = open('Stroka.txt', 'w')
sys.stdout = fc
print('запись строки в файл')
sys.stdout = vr_out
print('запись строки на экран')
запись строки на экран
fc.close()
tmp_in = sys.stdin
fd = open("Stroka.txt", "r")
sys.stdin = fd
sys.stdin
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
while True:
try:
line = input()
print(line)
except EOFError:
break
запись строки в файл
fd.close()
sys.stdin = tmp_in
```

@ -0,0 +1,3 @@
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

@ -0,0 +1 @@
Иванов И. 1Петров П. 2Сидоров С. 3

@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis6.mnz

Двоичный файл не отображается.

Двоичные данные
TEMA6/zapis7.2ob

Двоичный файл не отображается.

@ -0,0 +1,61 @@
import math
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0])
T = float(znach[1])
k2 = float(znach[2])
Xm = float(znach[3])
A = float(znach[4])
F = float(znach[5])
N = int(znach[6])
print(f"Параметры системы: k1={k1}, T={T}, k2={k2}, Xm={Xm}")
print(f"Входной сигнал: A={A}, F={F}, N={N}")
# Создание входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
print("Входной сигнал:", vhod[:10]) # Покажем первые 10 значений
# Функции компонентов системы
def realdvig(xtt, kk1, TT, yti1, ytin1):
"""Модель реального двигателя"""
yp = kk1 * xtt # усилитель
yti1 = yp + yti1 # Интегратор
ytin1 = (yti1 + TT * ytin1) / (TT + 1) # Инерционное звено
return [yti1, ytin1]
def tahogen(xtt, kk2, yti2):
"""Модель тахогенератора"""
yp = kk2 * xtt # усилитель
yti2 = yp + yti2 # интегратор
return yti2
def nechus(xtt, gran):
"""Зона нечувствительности"""
if xtt < gran and xtt > (-gran):
ytt = 0
elif xtt >= gran:
ytt = xtt - gran
elif xtt <= (-gran):
ytt = xtt + gran
return ytt
# Моделирование системы
yi1 = 0 # состояние интегратора двигателя
yin1 = 0 # состояние инерционного звена
yi2 = 0 # состояние интегратора тахогенератора
vyhod = [] # выход системы
for xt in vhod:
xt1 = xt - yi2 # отрицательная обратная связь
[yi1, yin1] = realdvig(xt1, k1, T, yi1, yin1)
yi2 = tahogen(yin1, k2, yi2)
yt = nechus(yin1, Xm)
vyhod.append(yt)
print('Выход системы y=', vyhod)

Двоичные данные
TEMA7/Figure_1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 35 KiB

@ -0,0 +1,176 @@
def signal_delay(input_signal, delay_time):
"""
Реализация устройства задержки сигнала
Args:
input_signal: список входного сигнала
delay_time: время задержки (количество тактов)
Returns:
list: задержанный сигнал
"""
# Инициализируем выход нулями для первых delay_time тактов
output = [0] * delay_time
# Добавляем входной сигнал со сдвигом
output.extend(input_signal[:-delay_time] if delay_time > 0 else input_signal)
return output
# Проверка функции задержки
print("=== ПРОВЕРКА ФУНКЦИИ ЗАДЕРЖКИ ===")
test_signal = [1, 2, 3, 4, 5, 6, 7, 8]
delay = 3
delayed_signal = signal_delay(test_signal, delay)
print(f"Исходный сигнал: {test_signal}")
print(f"Задержка: {delay} тактов")
print(f"Задержанный сигнал: {delayed_signal}")
# Визуализация
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
plt.plot(test_signal, 'bo-', label='Входной сигнал', markersize=8)
plt.plot(delayed_signal, 'ro-', label=f'Выход (задержка {delay})', markersize=6)
plt.title('Устройство задержки сигнала')
plt.xlabel('Время (такты)')
plt.ylabel('Амплитуда')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
def calculate_histogram(data, num_bins):
"""
Расчет гистограммы для выборки данных
Args:
data: список значений выборки
num_bins: количество интервалов разбиения
Returns:
tuple: (границы интервалов, частоты)
"""
if not data:
return [], []
min_val = min(data)
max_val = max(data)
bin_width = (max_val - min_val) / num_bins
# Создаем границы интервалов
bins = [min_val + i * bin_width for i in range(num_bins + 1)]
# Инициализируем счетчики
frequencies = [0] * num_bins
# Подсчитываем элементы в каждом интервале
for value in data:
for i in range(num_bins):
if bins[i] <= value < bins[i + 1]:
frequencies[i] += 1
break
else:
# Обработка максимального значения
if value == bins[-1]:
frequencies[-1] += 1
return bins, frequencies
def print_histogram_table(bins, frequencies):
"""Вывод гистограммы в виде таблицы"""
print("\nГИСТОГРАММА:")
print("Интервал\t\tКоличество элементов")
print("-" * 45)
for i in range(len(frequencies)):
lower = bins[i]
upper = bins[i + 1]
count = frequencies[i]
print(f"{lower:8.3f} - {upper:8.3f}\t\t{count:4d}")
total = sum(frequencies)
print("-" * 45)
print(f"Всего:\t\t\t\t{total:4d}")
# Проверка функции гистограммы
print("\n=== ПРОВЕРКА ФУНКЦИИ ГИСТОГРАММЫ ===")
import random
# Генерируем тестовые данные (нормальное распределение)
test_data = [random.gauss(0, 1) for _ in range(1000)]
bins, freq = calculate_histogram(test_data, 10)
print_histogram_table(bins, freq)
# Визуализация гистограммы
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.hist(test_data, bins=10, alpha=0.7, edgecolor='black')
plt.title('Гистограмма (matplotlib)')
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.grid(True, alpha=0.3)
plt.subplot(1, 2, 2)
# Рисуем нашу гистограмму
bin_centers = [(bins[i] + bins[i+1])/2 for i in range(len(bins)-1)]
plt.bar(bin_centers, freq, width=(bins[1]-bins[0])*0.8,
alpha=0.7, edgecolor='black')
plt.title('Наша гистограмма')
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
# Анонимная функция для расчета линейной регрессии
linear_regression = lambda b1, b2, X: b1 + b2 * X
# Проверка анонимной функции
print("\n=== ПРОВЕРКА АНОНИМНОЙ ФУНКЦИИ ЛИНЕЙНОЙ РЕГРЕССИИ ===")
# Тестовые параметры модели
b1_test = 2.5 # intercept
b2_test = 1.8 # slope
X_values = [0, 1, 2, 3, 4, 5]
print(f"Параметры модели: b1 = {b1_test}, b2 = {b2_test}")
print("Расчет значений Y = b1 + b2*X:")
print("X\tY")
print("-" * 12)
for X in X_values:
Y = linear_regression(b1_test, b2_test, X)
print(f"{X}\t{Y:.2f}")
# Визуализация линейной регрессии
plt.figure(figsize=(10, 6))
# Генерируем больше точек для плавного графика
X_smooth = [i/10 for i in range(0, 51)]
Y_smooth = [linear_regression(b1_test, b2_test, x) for x in X_smooth]
plt.plot(X_smooth, Y_smooth, 'b-', linewidth=2, label=f'Y = {b1_test} + {b2_test}*X')
plt.plot(X_values, [linear_regression(b1_test, b2_test, x) for x in X_values],
'ro', markersize=8, label='Расчетные точки')
plt.title('Линейная регрессия: Y = b1 + b2*X')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
# Дополнительная проверка с разными параметрами
print("\n=== ПРОВЕРКА С РАЗНЫМИ ПАРАМЕТРАМИ ===")
test_cases = [
(0, 1, 10), # Y = X
(5, 0.5, 10), # Y = 5 + 0.5*X
(-2, 2, 10) # Y = -2 + 2*X
]
for b1, b2, X in test_cases:
Y = linear_regression(b1, b2, X)
print(f"b1={b1}, b2={b2}, X={X} -> Y = {Y}")

@ -0,0 +1,464 @@
# Отчёт по теме 7. Создание пользовательских функций
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
```python
import os
os.getcwd()
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA7')
os.getcwd()
'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA7'
```
## 2. Создание пользовательской функции
**2.1. Первый пример: функция – без аргументов**
```python
def uspeh():
"""Подтверждение успеха операции"""
print('Выполнено успешно!')
uspeh()
Выполнено успешно!
type(uspeh)
<class 'function'>
dir(uspeh)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
help(uspeh)
Help on function uspeh in module __main__:
uspeh()
Подтверждение успеха операции
```
**2.2. Пример функции с аргументами**
```python
def sravnenie(a,b):
"""Сравнение a и b"""
if a>b:
print(a,' больше ',b)
elif a<b:
print(a, ' меньше ',b)
else:
print(a, ' равно ',b)
n,m=16,5;sravnenie(n,m)
16 больше 5
n,m = 'sasa','ss'; sravnenie(n,m)
sasa меньше ss
```
**2.3. Пример функции, содержащей return**
```python
def logistfun(b,a):
"""Вычисление логистической функции"""
import math
return a/(1+math.exp(-b))
v,w=1,0.7;z=logistfun(w,v)
z
0.6681877721681662
```
**2.4. Сложение для разных типов аргументов**
```python
def slozh(a1,a2,a3,a4):
""" Сложение значений четырех аргументов"""
return a1+a2+a3+a4
slozh(1,2,3,4)
10
slozh('1','2','3','4')
'1234'
b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
q=slozh(b1,b2,b3,b4);q
[1, 2, -1, -2, 0, 2, -1, -1]
t1=(1,2);t2=(3,4);t3=(5,6);t4=(7,8)
slozh(t1,t2,t3,t4)
(1, 2, 3, 4, 5, 6, 7, 8)
d1={'a':1};d2={'b':2};d3={'c':3};d4={'d':4}
slozh(d1,d2,d3,d4)
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
slozh(d1,d2,d3,d4)
File "<pyshell#44>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
s1={1,2};s2={3,4};s3={5,6};s4={7,8}
slozh(s1,s2,s3,s4)
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
slozh(s1,s2,s3,s4)
File "<pyshell#44>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
```
**2.5.**
```python
def inerz(x,T,ypred):
""" Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства"""
y=(x+T*ypred)/(T+1)
return y
sps=[0]+[1]*100;sps
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
spsy=[]
TT=20
yy=0
for xx in sps:
yy=inerz(xx,TT,yy)
spsy.append(yy)
```
## 3. Функции как объекты
**3.1. Получение списка атрибутов объекта-функции.**
```python
dir(inerz)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
inerz.__doc__ #__doc__ - атрибут, который выводит документационную строку (docstring) функции
'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства'
help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
```
**3.2. Сохранение ссылки на объект-функцию в другой переменной**
```python
fnkt=sravnenie
v=16
fnkt(v,23)
16 меньше 23
```
**3.3. Возможность альтернативного определения функции в программе**
```python
typ_fun=8
if typ_fun==1:
def func():
print('Функция 1')
else:
def func():
print('Функция 2')
func()
Функция 2
```
## 4. Аргументы функции
**4.1. Изучите возможность использования функции в качестве аргумента другой функции**
```python
def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой
в качестве аргумента функции fun_arg"""
return a+fff(c,b)
zz=fun_arg(logistfun,-3,1,0.7);zz
-2.3318122278318336
```
**4.2. Обязательные и необязательные аргументы**
```python
def logistfun(a,b=1):
"""Вычисление логистической функции"""
import math
return b/(1+math.exp(-a))
logistfun(0.7)
0.6681877721681662
logistfun(0.7,2)
1.3363755443363323
```
**4.3. Изучите возможность обращения к функции с произвольным (непозиционным) расположением аргументов**
```python
logistfun(b=0.5,a=0.8)
0.34498724056380625
```
**4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже**
```python
b1234=[b1,b2,b3,b4]
qq=slozh(*b1234) ;qq # Оператор * распаковывает элементы
[1, 2, -1, -2, 0, 2, -1, -1]
uslovniy_list = [1,2,3,4]
slozh(*uslovniy_list)
10
```
**4.5. Пример со значениями аргументов функции, содержащимися в словаре**
```python
dic4={"a1":1,"a2":2,"a3":3,"a4":4}
qqq=slozh(**dic4);qqq # Распаковываем значения словаря
10
qqq_usl=slozh(*dic4);qqq_usl # Распаковываем ключи словаря
'a1a2a3a4'
```
**4.6. Смешанные ссылки**
```python
e1=(-1,6);dd2={'a3':3,'a4':9}
qqqq=slozh(*e1,**dd2)
qqqq
17
```
**4.7. Переменное число аргументов у функции**
```python
def func4(*kort7):
"""Произвольное число аргументов в составе кортежа"""
smm=0
for elt in kort7:
smm+=elt
return smm
func4(-1,2)
1
func4(-1,2,0,3,6)
10
```
**4.8. Комбинация аргументов**
```python
def func4(a,b=7,*kort7):
"""Кортеж - сборка аргументов - должен быть последним!"""
smm=0
for elt in kort7:
smm+=elt
return a*smm+b
func4(-1,2,0,3,6)
-7
```
**4.9. Изменение значений объектов, используемых в качестве аргументов функции**
```python
a=90
def func3(b):
a=5*b+67
func3(a);a
90
sps1=[1,2,3,4]
def func2(sps):
sps[1]=99
func2(sps1)
print(sps1)
[1, 99, 3, 4]
```
## 5. Специальные типы пользовательских функций
**5.1. Анонимные функции**
```python
anfun1=lambda: 1.5+math.log10(17.23)
anfun1()
2.7362852774480286
anfun2(17,234)
19.369215857410143
anfun3=lambda a,b=234: a+math.log10(b)
anfun3(100)
102.36921585741014
```
**5.2. Функции-генераторы**
```python
def func5(diap,shag):
""" Итератор, возвращающий значения
из диапазона от 1 до diap с шагом shag"""
for j in range(1,diap+1,shag):
yield j
for mm in func5(7,3):
print(mm)
1
4
7
alp=func5(7,3)
print(alp.__next__())
1
print(alp.__next__())
4
print(alp.__next__())
7
print(alp.__next__())
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
print(alp.__next__())
StopIteration
```
## 6. Локализация объектов в функциях
**6.1. Примеры на локализацию объектов**
```python
glb=10
def func7(arg):
loc1=15
glb=8
return loc1*arg
res=func7(glb);res
150
def func8(arg):
loc1=15
print(glb)
glb=8
return loc1*arg
res=func8(glb);res
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
res=func8(glb);res
File "<pyshell#39>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
glb=11
def func7(arg):
loc1=15
global glb
print(glb)
glb=8
return loc1*arg
res=func7(glb);res
11
165
```
**6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins**
```python
globals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
locals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
def func8(arg):
loc1=15
glb=8
print(globals().keys())
print(locals().keys())
return loc1*arg
hh=func8(glb)
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
dict_keys(['arg', 'loc1', 'glb'])
hh
120
'glb' in globals().keys()
True
```
**6.3. Локализация объектов при использовании вложенных функций**
```python
def func9(arg2,arg3):
def func9_1(arg1):
loc1=15
glb1=8
print('glob_func9_1:',globals().keys())
print('locl_func9_1:',locals().keys())
return loc1*arg1
loc1=5
glb=func9_1(loc1)
print('loc_func9:',locals().keys())
print('glob_func9:',globals().keys())
return arg2+arg3*glb
kk=func9(10,1)
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
```
**6.4.**
```python
import math
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0])
T = float(znach[1])
k2 = float(znach[2])
Xm = float(znach[3])
A = float(znach[4])
F = float(znach[5])
N = int(znach[6])
print(f"Параметры системы: k1={k1}, T={T}, k2={k2}, Xm={Xm}")
print(f"Входной сигнал: A={A}, F={F}, N={N}")
# Создание входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
print("Входной сигнал:", vhod[:10]) # Покажем первые 10 значений
# Функции компонентов системы
def realdvig(xtt, kk1, TT, yti1, ytin1):
"""Модель реального двигателя"""
yp = kk1 * xtt # усилитель
yti1 = yp + yti1 # Интегратор
ytin1 = (yti1 + TT * ytin1) / (TT + 1) # Инерционное звено
return [yti1, ytin1]
def tahogen(xtt, kk2, yti2):
"""Модель тахогенератора"""
yp = kk2 * xtt # усилитель
yti2 = yp + yti2 # интегратор
return yti2
def nechus(xtt, gran):
"""Зона нечувствительности"""
if xtt < gran and xtt > (-gran):
ytt = 0
elif xtt >= gran:
ytt = xtt - gran
elif xtt <= (-gran):
ytt = xtt + gran
return ytt
# Моделирование системы
yi1 = 0 # состояние интегратора двигателя
yin1 = 0 # состояние инерционного звена
yi2 = 0 # состояние интегратора тахогенератора
vyhod = [] # выход системы
for xt in vhod:
xt1 = xt - yi2 # отрицательная обратная связь
[yi1, yin1] = realdvig(xt1, k1, T, yi1, yin1)
yi2 = tahogen(yin1, k2, yi2)
yt = nechus(yin1, Xm)
vyhod.append(yt)
print('Выход системы y=', vyhod)
k1,T,k2,Xm,A,F,N=1,2,3,4,5,6,7
Параметры системы: k1=1.0, T=2.0, k2=3.0, Xm=4.0
Входной сигнал: A=5.0, F=6.0, N=7
Входной сигнал: [0.0, 4.330127018922193, 4.330127018922194, 6.123233995736766e-16, -4.330127018922193, -4.330127018922193, -1.2246467991473533e-15]
Выход системы y= [0, 0, 0, 0, -3.430711797903516, -4.909726376383112, 0]
```

@ -0,0 +1,445 @@
# Отчёт по теме 7. Создание пользовательских функций
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
import os
os.getcwd()
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA7')
os.getcwd()
'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA7'
## 2. Создание пользовательской функции
2.1. Первый пример: функция – без аргументов
def uspeh():
"""Подтверждение успеха операции"""
print('Выполнено успешно!')
uspeh()
Выполнено успешно!
type(uspeh)
<class 'function'>
dir(uspeh)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
help(uspeh)
Help on function uspeh in module __main__:
uspeh()
Подтверждение успеха операции
2.2. Пример функции с аргументами
def sravnenie(a,b):
"""Сравнение a и b"""
if a>b:
print(a,' больше ',b)
elif a<b:
print(a, ' меньше ',b)
else:
print(a, ' равно ',b)
n,m=16,5;sravnenie(n,m)
16 больше 5
n,m = 'sasa','ss'; sravnenie(n,m)
sasa меньше ss
2.3. Пример функции, содержащей return
def logistfun(b,a):
"""Вычисление логистической функции"""
import math
return a/(1+math.exp(-b))
v,w=1,0.7;z=logistfun(w,v)
z
0.6681877721681662
2.4. Сложение для разных типов аргументов
def slozh(a1,a2,a3,a4):
""" Сложение значений четырех аргументов"""
return a1+a2+a3+a4
slozh(1,2,3,4)
10
slozh('1','2','3','4')
'1234'
b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
q=slozh(b1,b2,b3,b4);q
[1, 2, -1, -2, 0, 2, -1, -1]
t1=(1,2);t2=(3,4);t3=(5,6);t4=(7,8)
slozh(t1,t2,t3,t4)
(1, 2, 3, 4, 5, 6, 7, 8)
d1={'a':1};d2={'b':2};d3={'c':3};d4={'d':4}
slozh(d1,d2,d3,d4)
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
slozh(d1,d2,d3,d4)
File "<pyshell#44>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
s1={1,2};s2={3,4};s3={5,6};s4={7,8}
slozh(s1,s2,s3,s4)
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
slozh(s1,s2,s3,s4)
File "<pyshell#44>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
2.5.
def inerz(x,T,ypred):
""" Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства"""
y=(x+T*ypred)/(T+1)
return y
sps=[0]+[1]*100;sps
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
spsy=[]
TT=20
yy=0
for xx in sps:
yy=inerz(xx,TT,yy)
spsy.append(yy)
3. Функции как объекты.
3.1. Получение списка атрибутов объекта-функции.
dir(inerz)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
inerz.__doc__ #__doc__ - атрибут, который выводит документационную строку (docstring) функции
'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства'
help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
3.2. Сохранение ссылки на объект-функцию в другой переменной
fnkt=sravnenie
v=16
fnkt(v,23)
16 меньше 23
3.3. Возможность альтернативного определения функции в программе
typ_fun=8
if typ_fun==1:
def func():
print('Функция 1')
else:
def func():
print('Функция 2')
func()
Функция 2
4. Аргументы функции
4.1. Изучите возможность использования функции в качестве аргумента другой функции
def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой
в качестве аргумента функции fun_arg"""
return a+fff(c,b)
zz=fun_arg(logistfun,-3,1,0.7);zz
-2.3318122278318336
4.2. Обязательные и необязательные аргументы
def logistfun(a,b=1):
"""Вычисление логистической функции"""
import math
return b/(1+math.exp(-a))
logistfun(0.7)
0.6681877721681662
logistfun(0.7,2)
1.3363755443363323
4.3. Изучите возможность обращения к функции с произвольным (непозиционным) расположением аргументов
logistfun(b=0.5,a=0.8)
0.34498724056380625
4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже
b1234=[b1,b2,b3,b4]
qq=slozh(*b1234) ;qq # Оператор * распаковывает элементы
[1, 2, -1, -2, 0, 2, -1, -1]
uslovniy_list = [1,2,3,4]
slozh(*uslovniy_list)
10
4.5. Пример со значениями аргументов функции, содержащимися в словаре
dic4={"a1":1,"a2":2,"a3":3,"a4":4}
qqq=slozh(**dic4);qqq # Распаковываем значения словаря
10
qqq_usl=slozh(*dic4);qqq_usl # Распаковываем ключи словаря
'a1a2a3a4'
4.6. Смешанные ссылки
e1=(-1,6);dd2={'a3':3,'a4':9}
qqqq=slozh(*e1,**dd2)
qqqq
17
4.7. Переменное число аргументов у функции
def func4(*kort7):
"""Произвольное число аргументов в составе кортежа"""
smm=0
for elt in kort7:
smm+=elt
return smm
func4(-1,2)
1
func4(-1,2,0,3,6)
10
4.8. Комбинация аргументов
def func4(a,b=7,*kort7):
"""Кортеж - сборка аргументов - должен быть последним!"""
smm=0
for elt in kort7:
smm+=elt
return a*smm+b
func4(-1,2,0,3,6)
-7
4.9. Изменение значений объектов, используемых в качестве аргументов функции
a=90
def func3(b):
a=5*b+67
func3(a);a
90
sps1=[1,2,3,4]
def func2(sps):
sps[1]=99
func2(sps1)
print(sps1)
[1, 99, 3, 4]
5. Специальные типы пользовательских функций
5.1. Анонимные функции.
anfun1=lambda: 1.5+math.log10(17.23)
anfun1()
2.7362852774480286
anfun2(17,234)
19.369215857410143
anfun3=lambda a,b=234: a+math.log10(b)
anfun3(100)
102.36921585741014
5.2. Функции-генераторы
def func5(diap,shag):
""" Итератор, возвращающий значения
из диапазона от 1 до diap с шагом shag"""
for j in range(1,diap+1,shag):
yield j
for mm in func5(7,3):
print(mm)
1
4
7
alp=func5(7,3)
print(alp.__next__())
1
print(alp.__next__())
4
print(alp.__next__())
7
print(alp.__next__())
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
print(alp.__next__())
StopIteration
6. Локализация объектов в функциях
6.1. Примеры на локализацию объектов
glb=10
def func7(arg):
loc1=15
glb=8
return loc1*arg
res=func7(glb);res
150
def func8(arg):
loc1=15
print(glb)
glb=8
return loc1*arg
res=func8(glb);res
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
res=func8(glb);res
File "<pyshell#39>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
glb=11
def func7(arg):
loc1=15
global glb
print(glb)
glb=8
return loc1*arg
res=func7(glb);res
11
165
6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins
globals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
locals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
def func8(arg):
loc1=15
glb=8
print(globals().keys())
print(locals().keys())
return loc1*arg
hh=func8(glb)
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
dict_keys(['arg', 'loc1', 'glb'])
hh
120
'glb' in globals().keys()
True
6.3. Локализация объектов при использовании вложенных функций
def func9(arg2,arg3):
def func9_1(arg1):
loc1=15
glb1=8
print('glob_func9_1:',globals().keys())
print('locl_func9_1:',locals().keys())
return loc1*arg1
loc1=5
glb=func9_1(loc1)
print('loc_func9:',locals().keys())
print('glob_func9:',globals().keys())
return arg2+arg3*glb
kk=func9(10,1)
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
6.4.
import math
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0])
T = float(znach[1])
k2 = float(znach[2])
Xm = float(znach[3])
A = float(znach[4])
F = float(znach[5])
N = int(znach[6])
print(f"Параметры системы: k1={k1}, T={T}, k2={k2}, Xm={Xm}")
print(f"Входной сигнал: A={A}, F={F}, N={N}")
# Создание входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
print("Входной сигнал:", vhod[:10]) # Покажем первые 10 значений
# Функции компонентов системы
def realdvig(xtt, kk1, TT, yti1, ytin1):
"""Модель реального двигателя"""
yp = kk1 * xtt # усилитель
yti1 = yp + yti1 # Интегратор
ytin1 = (yti1 + TT * ytin1) / (TT + 1) # Инерционное звено
return [yti1, ytin1]
def tahogen(xtt, kk2, yti2):
"""Модель тахогенератора"""
yp = kk2 * xtt # усилитель
yti2 = yp + yti2 # интегратор
return yti2
def nechus(xtt, gran):
"""Зона нечувствительности"""
if xtt < gran and xtt > (-gran):
ytt = 0
elif xtt >= gran:
ytt = xtt - gran
elif xtt <= (-gran):
ytt = xtt + gran
return ytt
# Моделирование системы
yi1 = 0 # состояние интегратора двигателя
yin1 = 0 # состояние инерционного звена
yi2 = 0 # состояние интегратора тахогенератора
vyhod = [] # выход системы
for xt in vhod:
xt1 = xt - yi2 # отрицательная обратная связь
[yi1, yin1] = realdvig(xt1, k1, T, yi1, yin1)
yi2 = tahogen(yin1, k2, yi2)
yt = nechus(yin1, Xm)
vyhod.append(yt)
print('Выход системы y=', vyhod)
k1,T,k2,Xm,A,F,N=1,2,3,4,5,6,7
Параметры системы: k1=1.0, T=2.0, k2=3.0, Xm=4.0
Входной сигнал: A=5.0, F=6.0, N=7
Входной сигнал: [0.0, 4.330127018922193, 4.330127018922194, 6.123233995736766e-16, -4.330127018922193, -4.330127018922193, -1.2246467991473533e-15]
Выход системы y= [0, 0, 0, 0, -3.430711797903516, -4.909726376383112, 0]

@ -0,0 +1 @@
魵胙糲<EFBFBD><EFBFBD>

@ -0,0 +1,23 @@
## Варивнт №15
**Разработайте функцию, которая получает символьную строку с текстом на русском языке (аргумент функции), создаёт на её основе подстроку, содержащую только согласные буквы, отображает её на экране и записывает ее в файл с заданным именем (аргумент функции).
Проверьте функцию на примере строки, запрашиваемой у пользователя.**
```python
def podstraka_s(s, s2):
s1 = s.replace('а','').replace('у','').replace('е','').replace('ы','').replace('о','').replace('ё','').replace('я','').replace('и','').replace('ю','').replace('э','')
s1 = s.replace('А','').replace('У','').replace('Е','').replace('Ы','').replace('О','').replace('Ё','').replace('Я','').replace('И','').replace('Ю','').replace('Э','')
print(s1)
f = open(s2, 'w')
f.write(s1)
f.close()
f = open(s2, 'r')
stroka = f.readlines()
f.close()
print(str(stroka).replace("'","").replace('[','').replace(']',''))
s = input("Введите строку: ").strip()
s2 = input("Введите название строки: ").strip()
podstraka_s(s,s2)
```

@ -0,0 +1,18 @@
def podstraka_s(s, s2):
s1 = s.replace('а','').replace('у','').replace('е','').replace('ы','').replace('о','').replace('ё','').replace('я','').replace('и','').replace('ю','').replace('э','')
s1 = s.replace('А','').replace('У','').replace('Е','').replace('Ы','').replace('О','').replace('Ё','').replace('Я','').replace('И','').replace('Ю','').replace('Э','')
print(s1)
f = open(s2, 'w')
f.write(s1)
f.close()
f = open(s2, 'r')
stroka = f.readlines()
f.close()
print(str(stroka).replace("'","").replace('[','').replace(']',''))
s = input("Введите строку: ").strip()
s2 = input("Введите название строки: ").strip()
podstraka_s(s,s2)

@ -0,0 +1,46 @@
# module1.py - Модуль для чтения числового списка из файла
def read_numbers_from_file(filename):
"""
Считывает числовой список из текстового файла.
Аргументы:
filename (str): имя файла для чтения
Возвращает:
list: список чисел (float)
"""
numbers = []
try:
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
# Разделяем строку на элементы по пробелам
elements = line.strip().split()
# Преобразуем каждый элемент в число и добавляем в список
for element in elements:
try:
number = float(element)
numbers.append(number)
except ValueError:
print(f"Внимание: элемент '{element}' в файле '{filename}' не является числом и будет пропущен")
except FileNotFoundError:
print(f"Ошибка: файл '{filename}' не найден")
return []
except IOError:
print(f"Ошибка ввода-вывода при чтении файла '{filename}'")
return []
print(f"Прочитано {len(numbers)} чисел из файла '{filename}'")
return numbers
# Тестирование модуля (если запускается напрямую)
if __name__ == "__main__":
# Тестовая проверка
test_filename = input("Введите имя файла для теста: ")
result = read_numbers_from_file(test_filename)
print(f"Результат: {result}")
print(f"Количество элементов: {len(result)}")

@ -0,0 +1,66 @@
# module2.py - Модуль для расчёта коэффициента корреляции
import math
def calculate_correlation(list1, list2):
"""
Вычисляет коэффициент корреляции Пирсона между двумя списками.
Аргументы:
list1 (list): первый список чисел
list2 (list): второй список чисел
Возвращает:
float: коэффициент корреляции или None при ошибке
"""
# Проверяем, что списки не пустые
if not list1 or not list2:
print("Ошибка: один из списков пустой")
return None
# Берем минимальную длину из двух списков
n = min(len(list1), len(list2))
if n < 2:
print("Ошибка: для расчёта корреляции нужно хотя бы 2 элемента")
return None
# Берем только первые n элементов из каждого списка
x = list1[:n]
y = list2[:n]
# Выводим информацию о количестве используемых элементов
if len(list1) != len(list2):
print(f"Внимание: списки разной длины. Используются первые {n} элементов")
# Вычисляем суммы
sum_x = sum(x)
sum_y = sum(y)
sum_xy = sum(x[i] * y[i] for i in range(n))
sum_x2 = sum(x[i] * x[i] for i in range(n))
sum_y2 = sum(y[i] * y[i] for i in range(n))
# Вычисляем коэффициент корреляции
numerator = n * sum_xy - sum_x * sum_y
denominator = math.sqrt((n * sum_x2 - sum_x * sum_x) * (n * sum_y2 - sum_y * sum_y))
if denominator == 0:
print("Ошибка: знаменатель равен нулю (нет вариации данных)")
return None
correlation = numerator / denominator
return correlation
# Тестирование модуля (если запускается напрямую)
if __name__ == "__main__":
# Тестовые данные
test_list1 = [1, 2, 3, 4, 5]
test_list2 = [2, 4, 6, 8, 10] # Положительная корреляция
# test_list2 = [5, 4, 3, 2, 1] # Отрицательная корреляция
result = calculate_correlation(test_list1, test_list2)
if result is not None:
print(f"Коэффициент корреляции: {result:.4f}")
print(f"Коэффициент корреляции (округленный): {round(result, 3)}")

@ -0,0 +1,71 @@
# module3.py - Главный модуль программы
import module1
import module2
def main():
print("=" * 60)
print("ПРОГРАММА ДЛЯ РАСЧЕТА КОЭФФИЦИЕНТА КОРРЕЛЯЦИИ")
print("=" * 60)
# Запрашиваем имена файлов
filename1 = input("Введите имя первого файла с данными: ")
filename2 = input("Введите имя второго файла с данными: ")
print("-" * 60)
# Чтение данных из файлов
print("Чтение данных из файлов...")
list1 = module1.read_numbers_from_file(filename1)
list2 = module1.read_numbers_from_file(filename2)
if not list1 or not list2:
print("Ошибка: не удалось прочитать данные из одного из файлов")
return
print("-" * 60)
print(f"Первый список: {len(list1)} элементов")
print(f"Пример первых 5 элементов: {list1[:5]}")
print()
print(f"Второй список: {len(list2)} элементов")
print(f"Пример первых 5 элементов: {list2[:5]}")
print("-" * 60)
# Расчет коэффициента корреляции
print("Расчет коэффициента корреляции...")
correlation = module2.calculate_correlation(list1, list2)
print("-" * 60)
if correlation is not None:
print(f"Коэффициент корреляции: {correlation:.6f}")
print(f"Коэффициент корреляции (округленный до 3 знаков): {round(correlation, 3)}")
# Интерпретация результата
print("\nИнтерпретация:")
abs_corr = abs(correlation)
if abs_corr < 0.3:
print(" Очень слабая корреляция")
elif abs_corr < 0.5:
print(" Слабая корреляция")
elif abs_corr < 0.7:
print(" Умеренная корреляция")
elif abs_corr < 0.9:
print(" Сильная корреляция")
else:
print(" Очень сильная корреляция")
if correlation > 0:
print(" Корреляция положительная")
elif correlation < 0:
print(" Корреляция отрицательная")
else:
print(" Корреляция отсутствует")
else:
print("Не удалось рассчитать коэффициент корреляции")
print("=" * 60)
# Запуск программы
if __name__ == "__main__":
main()

@ -0,0 +1,23 @@
# MM0.py - Главная программа
import MM2
# Вывод результатов
print('\n' + '='*50)
print('РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ:')
print('='*50)
print(f'Количество точек: {len(MM2.vyhod)}')
print('\nВыходной сигнал y:')
print('y =', MM2.vyhod)
# Статистика выходного сигнала
if MM2.vyhod:
max_val = max(MM2.vyhod)
min_val = min(MM2.vyhod)
avg_val = sum(MM2.vyhod) / len(MM2.vyhod)
print('\n' + '-'*50)
print('СТАТИСТИКА ВЫХОДНОГО СИГНАЛА:')
print(f'Максимальное значение: {max_val:.4f}')
print(f'Минимальное значение: {min_val:.4f}')
print(f'Среднее значение: {avg_val:.4f}')
print('-'*50)

@ -0,0 +1,51 @@
# MM1.py - Модуль с функциями моделирования звеньев системы
def usilitel(xt, k):
"""
Усилитель (пропорциональное звено)
xt - входной сигнал
k - коэффициент усиления
"""
return k * xt
def realdvig(xt, k, T, y_prev, yin_prev):
"""
Реальный двигатель (апериодическое звено 1-го порядка)
xt - входной сигнал
k - коэффициент передачи
T - постоянная времени
y_prev - предыдущее значение выходного сигнала
yin_prev - предыдущее значение внутренней переменной
Возвращает [y_current, yin_current]
"""
# Дискретная реализация апериодического звена
# Принимаем dt = 1 для простоты
dt = 1.0
yin_current = yin_prev + (xt - yin_prev) * dt / T
y_current = k * yin_current
return [y_current, yin_current]
def tahogen(xt, k, y_prev):
"""
Тахогенератор (интегрирующее звено)
xt - входной сигнал (скорость вращения)
k - коэффициент передачи
y_prev - предыдущее значение выходного сигнала
"""
# Дискретная реализация интегратора
dt = 1.0
y_current = y_prev + k * xt * dt
return y_current
def nechus(xt, Xm):
"""
Звено "зона нечувствительности"
xt - входной сигнал
Xm - половина ширины зоны нечувствительности
"""
if abs(xt) <= Xm:
return 0.0
elif xt > Xm:
return xt - Xm
else:
return xt + Xm

@ -0,0 +1,42 @@
# MM2.py - Модуль для ввода параметров и выполнения моделирования
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0]) # Коэффициент усиления двигателя
T = float(znach[1]) # Постоянная времени двигателя
k2 = float(znach[2]) # Коэффициент тахогенератора
Xm = float(znach[3]) # Половина зоны нечувствительности
A = float(znach[4]) # Амплитуда входного сигнала
F = float(znach[5]) # Частота входного сигнала (в отсчетах на период)
N = int(znach[6]) # Количество точек расчета
import math
# Формирование входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
# Импорт модуля с функциями
import MM1 as mod
# Начальные условия
yi1 = 0 # Текущее значение выхода двигателя
yin1 = 0 # Внутренняя переменная двигателя
yi2 = 0 # Текущее значение выхода тахогенератора
# Моделирование системы
vyhod = []
for xt in vhod:
# Отрицательная обратная связь
xt1 = xt - yi2
# Двигатель
[yi1, yin1] = mod.realdvig(xt1, k1, T, yi1, yin1)
# Тахогенератор (интегрирует скорость)
yi2 = mod.tahogen(yin1, k2, yi2)
# Зона нечувствительности
yt = mod.nechus(yin1, Xm)

@ -0,0 +1,35 @@
# Модуль Mod0
import Mod1
print('perm1 =', Mod1.perm1)
from Mod2 import alpha as al
tt = al()
print('tt =', tt)
from Mod2 import beta
qq = beta(float(tt))
print('qq =', qq)
# Эксперимент 3: Попытка доступа к локальным переменным модуля Mod2
try:
print("Попытка получить доступ к t из Mod0:", t) # Ошибка!
except NameError as e:
print(f"Ошибка доступа к t: {e}")
try:
print("Попытка получить доступ к expi из Mod0:", expi) # Ошибка!
except NameError as e:
print(f"Ошибка доступа к expi: {e}")
# Эксперимент 4: Изменение perm1 в Mod0
print("\nЭксперимент 4: Изменение perm1 в Mod0")
print("Исходное значение perm1:", Mod1.perm1)
# Увеличиваем в 3 раза (предполагаем, что perm1 - число)
try:
Mod1.perm1 = float(Mod1.perm1) * 3
print("Новое значение perm1 (увеличенное в 3 раза):", Mod1.perm1)
except ValueError:
print("perm1 не является числом, нельзя умножить")
# Сделаем его строкой с утроенным значением
Mod1.perm1 = Mod1.perm1 * 3 # Для строк это повторение
print("Новое значение perm1 (строка ×3):", Mod1.perm1)

@ -0,0 +1,3 @@
# Модуль Mod1
perm1 = input('Mod1: Введите значение perm1 = ')
print('Mod1: Значение perm1 =', perm1)

@ -0,0 +1,24 @@
# Модуль Mod2
def alpha():
print('****ALPHA****')
t = input('Значение t = ')
# Эксперимент 1: Вызов beta из alpha
print("Вызов beta из alpha:")
result = beta(float(t))
print(f"Результат beta({t}) = {result}")
return t
def beta(q):
print('****BETA****')
import math
expi = q * math.pi
# Эксперимент 2: Вызов alpha из beta (осторожно - может привести к рекурсии!)
# Раскомментировать для эксперимента:
# print("Попытка вызвать alpha из beta...")
# alpha() # Будет рекурсия!
return math.exp(expi)

@ -0,0 +1,15 @@
from Module1_podstroka import podstroka_s, data_sets_example
def main():
print("Введите строку или возьмите из существующих примеров(снизу)...")
print(data_sets_example())
stroka1 = input("Ввод: ").strip()
print(stroka1)
stroka2 = input("Введите название файла: ").strip()
print(stroka2)
podstroka_s(stroka1, stroka2)
main()

@ -0,0 +1,22 @@
def podstroka_s(s, s2):
s1 = s.replace('а','').replace('у','').replace('е','').replace('ы','').replace('о','').replace('ё','').replace('я','').replace('и','').replace('ю','').replace('э','')
s1 = s1.replace('А','').replace('У','').replace('Е','').replace('Ы','').replace('О','').replace('Ё','').replace('Я','').replace('И','').replace('Ю','').replace('Э','')
print(s1)
f = open(s2, 'w')
f.write(s1)
f.close()
f = open(s2, 'r')
stroka = f.readlines()
f.close()
vivod = str(stroka).replace("'","").replace('[','').replace(']','')
return s1
def data_sets_example():
s1 = "пзукщпушпвлсы\n"
s2 = "щйыушщоацл\n"
s3 = "йкнышвсолсмх\n"
return s1 + s2 + s3

@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -0,0 +1,39 @@
#Module0_main
from Module1_podstroka import podstroka_s, data_sets_example
def main():
print("Введите строку или возьмите из существующих примеров(снизу)...")
print(data_sets_example())
stroka1 = input("Ввод: ").strip()
print(stroka1)
stroka2 = input("Введите название файла: ").strip()
print(stroka2)
podstroka_s(stroka1, stroka2)
main()
#Module1_podstroka1
def podstroka_s(s, s2):
s1 = s.replace('а','').replace('у','').replace('е','').replace('ы','').replace('о','').replace('ё','').replace('я','').replace('и','').replace('ю','').replace('э','')
s1 = s1.replace('А','').replace('У','').replace('Е','').replace('Ы','').replace('О','').replace('Ё','').replace('Я','').replace('И','').replace('Ю','').replace('Э','')
print(s1)
f = open(s2, 'w')
f.write(s1)
f.close()
f = open(s2, 'r')
stroka = f.readlines()
f.close()
vivod = str(stroka).replace("'","").replace('[','').replace(']','')
return s1
def data_sets_example():
s1 = "пзукщпушпвлсы\n"
s2 = "щйыушщоацл\n"
s3 = "йкнышвсолсмх\n"
return s1 + s2 + s3

@ -0,0 +1,264 @@
# Отчёт по теме 8. Модули и структурирование программы
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
```python
import os,sys, importlib
os.getcwd()
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8')
os.getcwd()
'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8'
```
## 2. Создание и использование модулей в среде Python
**2.1. Запуск модуля на выполнение путем его импорта**
```python
import Mod1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
type(Mod1)
<class 'module'>
dir(Mod1)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
Mod1.perm1
'5'
importlib.reload(Mod1)
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
<module 'Mod1' from 'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8\\Mod1.py'>
Mod1.perm1
'3'
```
**2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules**
```python
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8\\Mod1.py'>
print(sorted(sys.modules.keys()))
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
**2.3. Запуск модуля на выполнение с помощью функции exec()**
```python
exec(open('Mod1.py').read())
Mod1:Введите значение = 2
Mod1:Значение perm1= 2
exec(open('Mod1.py').read())
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
exec(open('Mod1.py').read())
Mod1:Введите значение = 4
Mod1:Значение perm1= 4
```
**2.4. Использование инструкции from … import …**
```python
from Mod1 import perm1
Mod1:Введите значение = 2
Mod1:Значение perm1= 2
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
from Mod2 import beta
g=beta(2)
****BETA****
g
535.4916555247646
alpha()
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
alpha()
NameError: name 'alpha' is not defined
from Mod2 import alpha as al
del al,beta
from Mod2 import alpha as al, beta as bt
del al, bt
from Mod2 import *
tt=alpha()
****ALPHA****
Значение t=0.12
uu=beta(float(tt));uu
****BETA****
1.4578913609506803
```
## 3. Создание многомодульных программ
**3.1. Пример простой многомодульной программы**
```python
print(sorted(sys.modules.keys()))
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod1', 'Mod2')
<module 'Mod1' from 'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8\\Mod1.py'>
print(sorted(sys.modules.keys()))
['Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod2')
<module 'Mod2' from 'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8\\Mod2.py'>
import Mod0
perm1= Mod0.tt
****ALPHA****
Значение t=100
tt= 100
****BETA****
qq= 2.739273424757491e+136
Mod0.tt
'100'
Mod0.qq
2.739273424757491e+136
Mod0.Mod1.perm1
'Mod0.tt'
```
**3.2.**
```python
# MM1.py - Модуль с функциями моделирования звеньев системы
def usilitel(xt, k):
"""
Усилитель (пропорциональное звено)
xt - входной сигнал
k - коэффициент усиления
"""
return k * xt
def realdvig(xt, k, T, y_prev, yin_prev):
"""
Реальный двигатель (апериодическое звено 1-го порядка)
xt - входной сигнал
k - коэффициент передачи
T - постоянная времени
y_prev - предыдущее значение выходного сигнала
yin_prev - предыдущее значение внутренней переменной
Возвращает [y_current, yin_current]
"""
# Дискретная реализация апериодического звена
# Принимаем dt = 1 для простоты
dt = 1.0
yin_current = yin_prev + (xt - yin_prev) * dt / T
y_current = k * yin_current
return [y_current, yin_current]
def tahogen(xt, k, y_prev):
"""
Тахогенератор (интегрирующее звено)
xt - входной сигнал (скорость вращения)
k - коэффициент передачи
y_prev - предыдущее значение выходного сигнала
"""
# Дискретная реализация интегратора
dt = 1.0
y_current = y_prev + k * xt * dt
return y_current
def nechus(xt, Xm):
"""
Звено "зона нечувствительности"
xt - входной сигнал
Xm - половина ширины зоны нечувствительности
"""
if abs(xt) <= Xm:
return 0.0
elif xt > Xm:
return xt - Xm
else:
return xt + Xm
```
```python
# MM2.py - Модуль для ввода параметров и выполнения моделирования
# Ввод параметров
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
k1 = float(znach[0]) # Коэффициент усиления двигателя
T = float(znach[1]) # Постоянная времени двигателя
k2 = float(znach[2]) # Коэффициент тахогенератора
Xm = float(znach[3]) # Половина зоны нечувствительности
A = float(znach[4]) # Амплитуда входного сигнала
F = float(znach[5]) # Частота входного сигнала (в отсчетах на период)
N = int(znach[6]) # Количество точек расчета
import math
# Формирование входного сигнала (синусоида)
vhod = []
for i in range(N):
vhod.append(A * math.sin((2 * i * math.pi) / F))
# Импорт модуля с функциями
import MM1 as mod
# Начальные условия
yi1 = 0 # Текущее значение выхода двигателя
yin1 = 0 # Внутренняя переменная двигателя
yi2 = 0 # Текущее значение выхода тахогенератора
# Моделирование системы
vyhod = []
for xt in vhod:
# Отрицательная обратная связь
xt1 = xt - yi2
# Двигатель
[yi1, yin1] = mod.realdvig(xt1, k1, T, yi1, yin1)
# Тахогенератор (интегрирует скорость)
yi2 = mod.tahogen(yin1, k2, yi2)
# Зона нечувствительности
yt = mod.nechus(yin1, Xm)
```
```python
# MM0.py - Главная программа
import MM2
# Вывод результатов
print('\n' + '='*50)
print('РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ:')
print('='*50)
print(f'Количество точек: {len(MM2.vyhod)}')
print('\nВыходной сигнал y:')
print('y =', MM2.vyhod)
# Статистика выходного сигнала
if MM2.vyhod:
max_val = max(MM2.vyhod)
min_val = min(MM2.vyhod)
avg_val = sum(MM2.vyhod) / len(MM2.vyhod)
print('\n' + '-'*50)
print('СТАТИСТИКА ВЫХОДНОГО СИГНАЛА:')
print(f'Максимальное значение: {max_val:.4f}')
print(f'Минимальное значение: {min_val:.4f}')
print(f'Среднее значение: {avg_val:.4f}')
print('-'*50)
```
```python
import MM0
k1,T,k2,Xm,A,F,N=1.0, 0.5, 0.1, 0.0, 1.0, 10, 50
==================================================
РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ:
==================================================
Количество точек: 0
Выходной сигнал y:
y = []
```
**3.3. Области действия объектов в модулях**
```python
import Module0
importlib.reload(Module0)
perm1 = Mod0.ttMod0.ttMod0.tt
****ALPHA****
Значение t=2
tt = 2
****BETA****
qq = 535.4916555247646
Ошибка доступа к t: name 't' is not defined
Ошибка доступа к expi: name 'expi' is not defined
Эксперимент 4: Изменение perm1 в Mod0
Исходное значение perm1: Mod0.ttMod0.ttMod0.tt
perm1 не является числом, нельзя умножить
Новое значение perm1 (строка ×3): Mod0.ttMod0.ttMod0.ttMod0.ttMod0.ttMod0.ttMod0.ttMod0.ttMod0.tt
<module 'Module0' from 'C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA8\\Module0.py'>
```

@ -0,0 +1,20 @@
class Class1:
#Объявление класса Class1 в модуле
def zad_zn(self,znach):
# 1 Метод класса
self.data=znach
# self - ссылка на экземпляр класса Class1
def otobrazh(self):
# 2 Метод класса
print(self.data)#Отображение данных экземпляра
class Class2(Class1):
#Class2 - наследник класса Class1
def otobrazh(self):
# Метод класса Class2
print('значение=',self.data)
#Отображение данных экземпляра
def otobrazh(objekt):
#Объявление самостоятельной функции
print('значение объекта=',objekt)

@ -0,0 +1,21 @@
class SAU:
def __init__(self,zn_param):
self.param=zn_param
self.ypr=[0,0]
def zdn_zn(self,upr):
self.x=upr
def model(self):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])

@ -0,0 +1,53 @@
class Sotrudnik:
def __init__(self, fio, otdel=None, dolzhnost=None, oklad = 70000):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self._pooshreniya = []
def povishenie_oklada(self, oklad_povisheniy):
self.oklad = oklad_povisheniy
print(f'Сумма оклада изменилась с мин. 70000 руб. на {oklad_povisheniy} руб.')
def perevod_otdel(self, perevod_otdel_name):
self.otdel = perevod_otdel_name
print(f'Перевод сотрудника на отдел {perevod_otdel_name}')
def izm_dolzhnost(self, izm_dolzhnost_name):
self.dolznost = izm_dolzhnost_name
print(f'Изменение должности на {izm_dolzhnost_name}')
@property
def pooshreniya(self):
"""
Свойство для получения списка поощрений
Возвращает:
- копию списка поощрений (для защиты от изменения извне)
"""
return self._pooshreniya.copy()
@pooshreniya.setter
def pooshreniya(self, value):
"""
Сеттер для поощрений (только для очистки списка)
Можно передать пустой список для очистки
"""
if isinstance(value, list) and len(value) == 0:
self._pooshreniya = []
print(f"Список поощрений {self.fio} очищен")
else:
print("Примечание: для добавления поощрений используйте метод obyavit_blagodarnost()")
def info(self):
"""
Возвращает строку с информацией о сотруднике
"""
return (f"ФИО: {self.fio}\n"
f"Отдел: {self.otdel}\n"
f"Должность: {self.dolzhnost}\n"
f"Оклад: {self.oklad} руб.\n"
f"Количество поощрений: {len(self._pooshreniya)}")
def __str__(self):
"""Строковое представление объекта"""
return f"Сотрудник: {self.fio} ({self.dolzhnost}, {self.otdel})"

@ -0,0 +1,13 @@
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
from SAU import *
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
SAUe=SAU(prm) # Создаём экземпляр класса
yt=[]
for xt in xx: # Прохождение входного сигнала
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()

@ -0,0 +1,181 @@
# Отчёт по теме 9. Создание пользовательских классов и объектов
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Создание классов и их наследников
**2.1. Создание автономного класса**
```python
class Class1:
def zad_zn(self,znach):
self.data=znach
def otobrazh(self):
print(self.data)
z1 = Class1()
z2 = Class1()
z1.zad_zn('экз.класса 1')
z2.zad_zn(-632.453)
z1.otobrazh()
экз.класса 1
z2.otobrazh()
-632.453
z1.data='Новое значение атрибута у экз.1'
z1.otobrazh()
Новое значение атрибута у экз.1
```
**2.2. Создание класса-наследника**
```python
class Class2(Class1):
def otobrazh(self):
print('значение=',self.data)
z3=Class2()
z3
<__main__.Class2 object at 0x00000216E07F27B0>
dir(z3)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
z3.zad_zn("Какое-то значение")
z3
<__main__.Class2 object at 0x00000216E07F27B0>
z3.zad_zn
<bound method Class1.zad_zn of <__main__.Class2 object at 0x00000216E07F27B0>>
z3.otobrazh()
значение= Какое-то значение
z1.otobrazh()
Новое значение атрибута у экз.1
del z1,z2,z3
```
## 3. Использование классов, содержащихся в модулях
```python
from Mod3 import Class1
z4=Class1()
z4.otobrazh()
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
z4.otobrazh()
File "C:\Users\Ilya\Desktop\python-labs\TEMA9\Mod3.py", line 9, in otobrazh
print(self.data)#Отображение данных экземпляра
AttributeError: 'Class1' object has no attribute 'data'
z4 = Class1()
z4.data = 'значение данного data у экз.4'
z4.otobrazh()
значение данного data у экз.4
del z4
import Mod3
z4 = Mod3.Class2()
z4.zad_zn('Класс из модуля')
z4.otobrazh()
значение= Класс из модуля
Mod3.otobrazh('Объект')
значение объекта= Объект
```
## 4. Использование специальных методов
```python
class Class3(Class2):
def __init__(self, znach):
self.data = znach
def __add__(self, drug_zn):
return Class3(self.data+drug_zn)
def zad_dr_zn(self, povtor):
self.data *= povtor
z5 = Class3('abc')
z5.otobrazh()
значение= abc
z6=z5+'def'
z6.otobrazh()
значение= abcdef
z6.zad_dr_zn(3)
z6.otobrazh()
значение= abcdefabcdefabcdef
```
## 5. Присоединение атрибутов к классу
```python
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
Class3.fio = 'Иванов И.И.'
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
z7 = Class3(123)
dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
dir(z7)==dir(Class3)
False
z7.fio
'Иванов И.И.'
z7.rozden='1987'
dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
## 6. Выявление родительских классов
```python
Class3.__bases__ #Родительский класс
(<class '__main__.Class2'>,)
Class2.__bases__
(<class '__main__.Class1'>,)
Class1.__bases__
(<class 'object'>,)
Class3.__mro__ #Вся цепочка наследования
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
ZeroDivisionError.__mro__
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
```
## 7. Создание свойства класса
```python
example=Class4(12)
example.svojstvo
12
example.svojstvo = 45
print(example.svojstvo)
45
del example.svojstvo
example.svojstvo
```
## 8.
```python
class SAU:
def __init__(self,zn_param):
self.param=zn_param
self.ypr=[0,0]
def zdn_zn(self,upr):
self.x=upr
def model(self):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])
###main_SAU
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
from SAU import *
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
SAUe=SAU(prm) # Создаём экземпляр класса
yt=[]
for xt in xx: # Прохождение входного сигнала
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()
```

@ -0,0 +1,12 @@
a=int(input())//scsds
#yagdada
s ="1,2,3,4,5,6"
print(type(s),dir(s))
print(list(s))
number_3 = list(s)[4]
print(number_3)
s = s.replace(',','')
s = list(s)
s[2] = '777'
print(s)
print(int(s[1])+int(s[4]))

@ -0,0 +1,34 @@
# Тест по модулю 2
**Задание:**
`M2_22`
1. Создайте список с вашей фамилией и 3 фамилиями других студентов вашей группы и список с 4 элементами - средними баллами этих студентов.
2. Запросите у пользователя и введите имя словаря, который далее будет создаваться. Удалите из этого имени возможные пробелы.
3. Создайте словарь с введенным именем, в котором ключами будут фамилии студентов из первого списка, а значениями - их средние баллы.
4. Выведите словарь в бинарный файл с некоторым именем.
5. Рассчитайте общий средний балл по группе из 4-х указанных студентов. Отобразите рассчитанное значение по шаблону "Общее среднее =<рассчитанное значение>". Выводимое значение округлить до 1 цифры после точки.
**Программа:**
```python
import pickle
list_students_1 = ['Ogarkov', 'Butko', 'Efimova', 'Antonov']
list_marks_1 = [4.9, 4.3, 4.2, 5.0]
dictionary_2 = input('Введите имя словаря: ').strip()
dictionary_2 = dict(zip(list_students_1, list_marks_1))
print(dictionary_2)
fp_4 = open('zapis.ob', 'wb')
pickle.dump(dictionary_2, fp_4)
fp_4.close()
list_5 = list(dictionary_2.values())
srednee_mark = sum(list_5)/len(list_5)
print(f"Общее среднее = {round(srednee_mark, 1)}")
```

@ -0,0 +1,22 @@
import pickle
list_students_1 = ['Ogarkov', 'Butko', 'Efimova', 'Antonov']
list_marks_1 = [4.9, 4.3, 4.2, 5.0]
dictionary_2 = input('Введите имя словаря: ').strip()
dictionary_2 = dict(zip(list_students_1, list_marks_1))
print(dictionary_2)
fp_4 = open('zapis.ob', 'wb')
pickle.dump(dictionary_2, fp_4)
fp_4.close()
list_5 = list(dictionary_2.values())
srednee_mark = sum(list_5)/len(list_5)
print(round(srednee_mark, 1))

@ -0,0 +1,26 @@
# M0.py
import M2 # Импортируем модуль M2
import matplotlib.pyplot as plt
def plot_results():
"""
Вызывает M2, считывает результаты из файла и отображает их в виде графика.
"""
M2.run_analysis() # Запускаем анализ из модуля M2
try:
with open("Res11.bin", 'r') as f:
SS3 = [float(line.strip()) for line in f]
except FileNotFoundError:
print("Ошибка: Файл Res11.bin не найден.")
return
plt.plot(SS3)
plt.xlabel("Индекс")
plt.ylabel("Значение")
plt.title("График списка SS3")
plt.grid(True)
plt.show()
if __name__ == "__main__":
plot_results()

@ -0,0 +1,26 @@
# M1.py
import random
def generate_data_file(filename, num_samples=50, mean=0, std_dev=1):
"""Генерирует файл с нормально распределенными случайными данными."""
import numpy as np
data = np.random
print(f"Файл {filename} сгенерирован.")
def read_signal_and_shift(filename, TAU, K):
N = len(SPS1)
SPS2 = [0] * (TAU - 1) + [K * SPS1[i - TAU] for i in range(TAU - 1, N)]
return SPS1, SPS2
def calculate_D(SS1, SS2, TT):
N = len(SS1)
SR1 = sum(SS1) / N
SR2 = sum(SS2) / len(SS2)
D = 0
for i in range(TT, N):
D += (SS1[i] - SR1) * (SS2[i - TT] - SR2)
return D

@ -0,0 +1,39 @@
# M2.py
import M1 # Импортируем модуль M1
import random
def run_analysis():
while True:
filename = input("Введите имя текстового файла с данными: ")
try:
with open(filename, 'r'):
break
except FileNotFoundError:
print("Файл не найден. Повторите ввод.")
while True:
try:
TAU = int(input("Введите значение параметра TAU (>= 0): "))
if TAU >= 0:
break
else:
print("TAU должно быть >= 0.")
except ValueError:
print("Некорректный ввод. Введите целое число.")
K = random.uniform(2, 7)
SPS1, SPS2 = M1.read_signal_and_shift(filename, TAU, K)
print("SPS1:", SPS1)
print("SPS2:", SPS2)
SS3 = []
for TT in range(0, TAU + 6):
D = M1.calculate_D(SPS1, SPS2, TT)
SS3.append(D)
with open("Res11.bin", 'w') as f:
for value in SS3:
f.write(str(value) + '\n')
print("Результаты записаны в файл Res11.bin")

Двоичные данные
Tests/zapis.ob

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.
Загрузка…
Отмена
Сохранить