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

..

15 Коммитов

Автор SHA1 Сообщение Дата
SavinSA 5a4421bf33 Merge branch 'main' of http://uit.mpei.ru/git/SavinSA/python-labs
2 дней назад
SavinSA 86306314fd test
2 дней назад
SavinSA b2b611eb63 report added+photos
2 дней назад
SavinSA 2ee8aa2899 report+task
2 дней назад
SavinSA fa90ac00b2 report first half
2 дней назад
SavinSA 5e908a0f12 added report
2 дней назад
SavinSA 5942877cd9 TEMA2 report v2
2 дней назад
SavinSA 112ca055da TEMA2 report v1
2 дней назад
u207-05 be107f40c8 Task_3: Q&A
2 дней назад
u207-05 e34e01b1e9 report v3
2 дней назад
u207-05 5ec523cfd4 v3
2 дней назад
u207-05 249d1dd95d Task_2 reporn v2
2 дней назад
u207-05 4123c770c8 Task_2: report v1
2 дней назад
u207-05 fbb7d44706 Task_1: First commit
2 дней назад
Дмитрий Козлюк 8c2687d139 doc: уточнено оформление тестов по модулям
4 дней назад

@ -1,6 +1,7 @@
# Программное обеспечение автоматизированных систем: лабораторные работы
[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python)
Обратите внимание на файл с комментариями в репозитории по ссылке.
## Работа с Git
@ -109,7 +110,7 @@
### Оформление решений
Решение всех заданий оформляется по образцу:
Решение всех заданий и тестов оформляется по образцу:
# Общее контрольное задание по теме 2
@ -129,5 +130,8 @@
Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ».
Для тем 3, 6 и 9 вместо «Индивидуального контрольного задания по теме 3 (6, 9)» —
«Тест по модулю 1 (2, 3)».
Для тем 8 и 9 раздела «Решение» не нужно,
вместо этого решение размещается в отдельных файлах `*.py`.

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,344 @@
# Отчёт по теме 4
Савин Семён, А-02-23
## Пункт 2. Стандартные функции из модуля builtins.
## Пункт 2.1. Округление
```py
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
```
## Пункт 2.2. Создание последовательности
```py
>>> gg = range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23) #шаг по умолчанию 1, от 0 до 22.
>>>
```
## Пункт 2.3. Zip
```py
>>> qq = ["Савин", "Мамакин", "Капитонов", "Симанков"]
>>> ff = zip(gg,qq)
>>> tuple(ff)
((76, 'Савин'), (85, 'Мамакин'), (94, 'Капитонов'), (103, 'Симанков'))
>>> ff[1]
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable #нельзя обращаться по индексу
```
## Пункт 2.4. Eval
```py
>>> fff=float(input('коэффициент усиления='))
коэффициент усиления=13
>>> dan = eval('5*fff-156')
>>> dan
-91.0
```
## Пункт 2.5. Exec
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
>>>
```
## Пункт 2.6. Другие встроенные функции
```py
>>> hi = 6
>>> hello = pow(hi,2)
>>> hello
36
>>> help(divmod)
Help on built-in function divmod in module builtins:
divmod(x, y, /)
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
>>> divmod(40, 13)
(3, 1)
>>> list(map(len,qq))
[5, 7, 9, 8]
```
## Пункт 3. Модуль Math.
```py
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(x, /)
Find x!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> math.sin(1565)
0.46785173260407253
>>> math.log10(200)
2.3010299956639813
>>> math.sqrt(36)
6.0
>>> math.sin(2*math.pi/7 + math.exp(0.23))
0.8334902641414562
```
## Пункт 4. Модуль cmath
```py
>>> 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.
```py
>>> 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.
>>> help(random.seed())
Help on NoneType object:
class NoneType(object)
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
>>> random.seed()
>>> random.random()
0.23882613686570964
>>> random.uniform(0,1)
0.3999614707805891
>>> random.randint(0,100)
6
>>> random.gauss(2, 10)
5.707349953271636
>>> random.choice([1,2,3,4,5])
2
>>> sp = [1,2,3,4,5,6,7,8,9,10,11]
>>> random.shuffle(sp)
>>> sp
[11, 7, 5, 3, 2, 10, 9, 8, 1, 6, 4]
>>> random.sample(sp,3)
[5, 10, 3]
>>> random.betavariate(0.7,0.7)
0.7563022719328397
>>> random.gammavariate(0.89,0.89)
0.5554159983098497
>>> sp1=[random.random(), random.gauss(0.5,0.5), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
>>> sp1
[0.3367662138533899, 0.25139981537793343, 0.6382522055172093, 0.7493560082921834]
```
## Пункт 6. Модуль time.
```py
>>> import time
>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
>>> c1=time.time()
>>> c2 = time.time() - c1
>>> c2
8.849342107772827
>>> data = time.gmtime()
>>> data.tm_mon
10
>>> data1 = time.localtime()
>>> data1.tm_year
2025
>>> time.asctime(data)
'Mon Oct 13 01:26:52 2025'
>>> time.ctime(123461273)
'Fri Nov 30 01:47:53 1973'
>>> time.mktime(data1)
1760318835.0
>>> time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=26, tm_sec=23, tm_wday=0, tm_yday=286, tm_isdst=0)
>>> time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=28, tm_sec=59, tm_wday=0, tm_yday=286, tm_isdst=0)
>>>
```
## Пункт 7. Модуль Pylab
```py
>>> import pylab
>>> x = list(range(-3,55,4))
>>> t = list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000020E0362C670>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel("Время")
Text(0.5, 0, 'Время')
>>> pylab.ylabel("Сигнал")
Text(0, 0.5, 'Сигнал')
>>> pylab.show()
```
![График 1](1.png)
```py
>>> X1 = [12,6,8,10,7]
>>> X2 = [5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000020E01DF7E20>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000020E01E05100>]
>>> pylab.show()
```
![График 2](2.png)
```py
>>> pylab.show()
>>> region=["Центр", "Урал", "Сибирь", "Юг"]
>>> naselen = [65,12,23,17]
>>> pylab.pie(naselen,labels = region)
([<matplotlib.patches.Wedge object at 0x0000020E01FCA910>, <matplotlib.patches.Wedge object at 0x0000020E01FCA850>, <matplotlib.patches.Wedge object at 0x0000020E01FE2250>, <matplotlib.patches.Wedge object at 0x0000020E01FE26D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
![Диаграмма круговая](Ris2.png)
```py
>>> pylab.hist(X2,5)
(array([1., 1., 1., 1., 1.]), array([ 5. , 6.6, 8.2, 9.8, 11.4, 13. ]), <BarContainer object of 5 artists>)
>>> pylab.show()
>>> pylab.hist(X1,3)
(array([2., 1., 2.]), array([ 6., 8., 10., 12.]), <BarContainer object of 3 artists>)
>>> pylab.show()
```
![Гистограмма 1](hist1.png)
![Гистограмма 2](hist2.png)
```py
>>> pylab.bar(X1,X2)
<BarContainer object of 5 artists>
>>> pylab.show()
```
![Столбиковая диаграмма](bar.png)
## Пункт 8. Модуль statistics
```py
>>> import statistics as stat
>>> dir(stat)
['Counter', 'Decimal', 'Fraction', 'NormalDist', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_normal_dist_inv_cdf', '_ss', '_sum', 'bisect_left', 'bisect_right', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'itemgetter', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'sqrt', 'stdev', 'tau', 'variance']
>>> stattest = [1,2,65,7,4,32,1,15,45]
>>> stat.median(stattest)
7
>>> stat.mode(stattest)
1
>>> stat.mean(stattest)
19.11111111111111
>>> stat.quantiles(stattest)
[1.5, 7.0, 38.5]
>>>
```
## Общее контрольное задание
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
>>> divmod(((round(cmath.phase(0.2+0.8j),2))*20),3)
(8.0, 2.6000000000000014)
>>> tt = time.localtime()
>>> str(tt.tm_hour) + ":" + str(tt.tm_min)
'4:48'
>>> days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
>>> random.sample(days,3)
['Wed', 'Tue', 'Thu']
>>> random.choice(range(14,32,3))
17
>>> round(random.gauss(15,4))
16
>>> random.sample(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], round(random.gauss(15,4)))
['c', 't', 'n', 'q', 'p', 'x', 'o', 'y', 'v', 'a', 'i', 'r', 'd']
>>> (time.time() - time.mktime(tt))/60
5.181675366560618
>>>
```
Загрузка…
Отмена
Сохранить