readmes

parent aa650a9e
# Программирование Python лабораторная работа 1
## Комплект 1: Установка среды программирования и разработки
Проблем с установкой среды и настройкой IDE не было!
## Комплект 2: Задачи для самостоятельного изучения материала.
--
## Комплект 3: Задачи для самостоятельной работы.
### [3.1 код](./3.1.py)
### [3.2 код](./3.2.py)
"""
Простой калькулятор, позволяет ввести 2 числа и операцию и вычисляет результат.
Простой калькулятор, позволяет ввести 2 числа и операцию и вычисляет результат.
Выводит логи при вызове функции и возврате значения функции.
"""
import logging as log
......@@ -14,11 +15,20 @@ def log_wrapper(func):
return wrapper
@log_wrapper
def calculate(x, op, y):
def calculate(x, y, op):
"""
Считает x op y, где x и y - числа любого типа, а op - строка
"""
return eval(f"{x} {op} {y}")
if (op == "+"):
return x + y
elif (op == "-"):
return x - y
elif (op == "*"):
return x * y
elif (op == "/"):
return x / y
else:
return None
print(calculate("9", "+", "10"))
# Программирование Python лабораторная работа 2
В задании 1.4 pytest не может импортировать файл 1.4.py, поэтому main.py - ссылка на 1.4.py
## Комплект 1: Начало использования Closures, Decorators, Logging, Unit-tests.
### [1.1 код](./1.1.py)
Буквально пример из документации.
### [1.2 код](./1.2.py)
С декораторами уже был знаком благодаря lru_cache из functools.
### [1.3 код](./1.3.py)
Тоже в основном примеры.
### [1.4 код](./1.4.py)
Pytest не может импортировать файл 1.4.py, поэтому main.py - ссылка на 1.4.py
# Программирование Python лабораторная работа 3
## Комплект 1: Работа над мини-проектом калькулятор. Функции. Тесты
### [1.1 код](./1.1.py)
### [1.2 код](./1.2.py)
Функции medium, q2, q3 и q1 взял из numpy.
Тесты сделал по примерам из документации.
# Программирование Python лабораторная работа 4
## Комплект 1
## Комплект 1: Алгоритмы на Python. Начало.
Задачи не потребовали изучения чего-либо нового или каких либо уникальных решений.
## Комплект 2
## Комплект 2: Начало использования библиотечных модулей.
### 2.1 Отправка почты через smtplib
Самым интересным было применение файла .gitignore для хранения логина и пароля от ящика, в остальном, это на 80% пример использования библиотеки.
![Полученное письмо](./2.1 mail.png "Полученное письмо")
### 2.2 Парсинг погоды
Решил парсить с яндекс погоды (тк wttr.in упал), выводится тепература в данный момент и скорость ветра.
### 2.3 Графики с matplotlib
Применил передачу форматов wttr.in. Получение данных в json, парсинг были тривиальными, как и вывод полученных данных на график.
Применил передачу форматов wttr.in. Получение данных в json, парсинг был тривиальными, как и вывод полученных данных на график.
# Программирование Python лабораторная работа 4
# Программирование Python лабораторная работа 5
## Комплект 1
## Комплект 1: Итераторы. Генераторы
Почти все решения задач комплекта 1 были тривиальными изменениями примеров из документации Python.
### 1.4
Для разнообразия решил взять список всех городов, чтобы прасить города и страны от туда, на удивление работает оно достаточно быстро.
Для разнообразия решил взять список всех городов, чтобы прасить города и страны от туда, работает оно достаточно быстро.
Города взяты (отсюда)[https://github.com/datasets/world-cities].
## Комплект 2
### 2.1
## Комплект 2: Менеджеры контекста
Задача сводится к поиску разницы между временем в момент вызова enter и exit.
1_000_000 чисел фибоначи найти не получилось, остановился на 100_000 (за 0.3855c)
......
# Программирование Python лабораторная работа 6
## 1. Анализ мест в коде с исключительными ситуациями
Добавил в калькурятор исключения для:
1. Случая неверной операции
2. Для ошибок в вычислении
В генератор для вычислений из файла:
1. Для открытия файла с выражениями
2. Для ошибки чтения строк
## 2. Модульное тестирование с unittest
Просто по 3 случая для каждой операции с помощью pytest и unittest.
......@@ -44,8 +44,6 @@ def calculate(action, *args, tolerance=1e-6):
result = np.median(args)
elif (action == 'q3'):
result = np.percentile(args, 75)
else:
raise ValueError("Неверная операция")
precision = convert_precision(tolerance)
rounded_result = round(result, precision)
......
# Программирование Python лабораторная работа 7
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment