Python для начинающих
1.06K subscribers
303 photos
3 videos
232 files
62 links
Python для начинающих
Download Telegram
- Как создавать собственные модули и пакеты на Python
Как создавать собственные модули и пакеты на Python

Привет! Сегодня поговорим о том, как создавать собственные модули и пакеты на Python. Если вы когда-нибудь писали полезные функции или классы, которые захотелось переиспользовать, то знание создания модулей и пакетов станет для вас невероятно полезным навыком.

### Что такое модуль?

Модуль — это просто файл с кодом Python, расширение которого — .py. Создание модуля — это самый простой способ организовать код. Представьте, что у вас есть файл math_tools.py с функцией для подсчёта факториала:

def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)


Чтобы использовать этот модуль в другом файле, вам нужно просто импортировать его:

import math_tools

print(math_tools.factorial(5)) # Вывод: 120


📌 Важно: Имя файла (без .py) становится именем модуля.

### Взлетаем выше: что такое пакет?

Пакет в Python — это не просто файл, а целая папка, которая служит контейнером для нескольких модулей и других пакетов. Это удобно, если ваш проект разросся и хочется структурировать код. Внутри такой папки можно собирать модули на схожие темы, а входной точкой пакета служит файл __init__.py.

Давайте создадим структуру для мини-пакета. Например, пакет для работы с числами:

number_utils/
__init__.py
odd_checker.py
prime_checker.py


Вот модуль odd_checker.py:

def is_odd(number):
return number % 2 != 0


А вот модуль prime_checker.py:

def is_prime(number):
if number <= 1:
return False
for i in range(2, int(number ** 0.5) + 1):
if number % i == 0:
return False
return True


Файл __init__.py — это сердце пакета. В самом простом случае он может быть пустым, но лучше использовать его для экспорта функций и классов, чтобы упростить доступ к ним:

from .odd_checker import is_odd
from .prime_checker import is_prime


Теперь пакет готов к использованию:

from number_utils import is_odd, is_prime

print(is_odd(7)) # Вывод: True
print(is_prime(13)) # Вывод: True


### Создаём пакет для публикации

Круто, когда ваш код можете использовать не только вы, но и другие. Разберём, как превратить локальный пакет в полноценный проект для установки через pip.

1. Создайте файл setup.py. Это указания для Python, как «упаковать» ваш проект. Например:

from setuptools import setup, find_packages

setup(
name="number_utils",
version="1.0.0",
description="A small package for number operations",
packages=find_packages(),
install_requires=[],
)


2. Подготовьтесь к публикации. Убедитесь, что в вашем проекте есть структура:

number_utils/
__init__.py
odd_checker.py
prime_checker.py
setup.py
README.md


3. Установите утилиты для публикации:

pip install setuptools wheel twine


4. Создайте дистрибутивы:

python setup.py sdist bdist_wheel


5. Загрузите пакет на PyPI (нужно зарегистрироваться на https://pypi.org):

twine upload dist/*


После успешной загрузки ваш пакет можно установить:

pip install number_utils


### Заключение

Создание собственных модулей и пакетов — это первый шаг к организации масштабных проектов. Это позволяет не только переиспользовать код, но и делиться своими наработками с другими. Возможно, вы станете автором популярного модуля, которым будет пользоваться весь мир!

Так что не бойтесь экспериментировать и создавайте что-то крутое. Python — это язык, который предоставляет огромные возможности для творчества, и пакеты — лишь одна из его магических сторон! 🚀
🔥2👍1
- Введение в TDD: как писать тесты прежде чем код
👍2
# Введение в TDD: как писать тесты прежде чем код

Представьте, что вам нужно построить мост. Вы бы начали с бетонных колонн, настила и краски или сначала составили бы план с чертежами? В программировании есть методология, которая похожа на составление плана строительства – это TDD (Test-Driven Development, или разработка через тестирование). Сегодня мы разберемся, как писать тесты до кода и в чем смысл такого подхода.

---

## Что такое TDD?

TDD – это подход к разработке, при котором вы сначала пишете тесты, представляющие, как будет вести себя ваш код, а затем реализуете сам функционал. Суть проста и изящна: вы определяете, какого поведения от программы ожидаете, а уже потом программируете. Это превращает кодирование из некой импровизации в процесс, управляемый четкими целями.

TDD состоит из трёх ключевых шагов, которые повторяются как цикл:

1. Сначала пишем тесты: тесты описывают, что должен делать ваш код (и что делать не должен).
2. Реализуем минимально рабочий код, чтобы тесты прошли.
3. Рефакторим: улучшаем код, не ломая функциональность, при этом тесты гарантируют отсутствие ошибок.

Простая идея, но она совершенно меняет взгляд на разработку, особенно для начинающих.

---

## На практике: простой пример

Допустим, мы пишем функцию для расчета площади прямоугольника. Задача проста, но попробуем написать её через TDD.

1. Шаг 1: Напишем тест заранее

Сначала создадим файл для тестирования test_rectangle.py. Здесь мы будем использовать популярный модуль unittest.

import unittest
from rectangle import calculate_area

class TestRectangleArea(unittest.TestCase):
def test_area(self):
self.assertEqual(calculate_area(2, 3), 6)
self.assertEqual(calculate_area(5, 5), 25)

def test_negative_values(self):
with self.assertRaises(ValueError):
calculate_area(-1, 3)

if __name__ == "__main__":
unittest.main()


Что мы тут сделали:
- Проверили, верно ли функция считает площадь.
- Предусмотрели случай с негативными числами — хотим, чтобы программа выбрасывала ValueError.

Но ведь самой функции calculate_area еще не существует. Что ж, пора её написать!

2. Шаг 2: Сделаем код, который проходит тесты

Теперь напишем файл rectangle.py с базовой реализацией функции:

def calculate_area(width, height):
if width < 0 or height < 0:
raise ValueError("Width and height must be non-negative")
return width * height


Запустим тесты с помощью команды:

python -m unittest test_rectangle.py


Если тесты прошли успешно, мы на верном пути.

3. Шаг 3: Рефакторинг

Если код работает, это не значит, что он идеален. Например, в данном случае функция достаточно проста, и улучшать особо нечего. Но в большом проекте можно было бы оптимизировать алгоритмы или улучшить архитектуру. Главное условие — тесты должны оставаться успешными.

---

## Зачем использовать TDD?

TDD может показаться странным, особенно если вы привыкли сначала писать код, а уже потом проверять его. Но вот несколько причин, почему стоит попробовать:

### 1. Четкое планирование
Когда вы пишете тесты заранее, вы точно знаете, что должен делать ваш код. Это помогает избежать ситуаций, когда вы "раздуваете" функциональность без особой необходимости.

### 2. Меньше багов
Тесты пишутся ещё до реализации, поэтому вы сразу видите, если что-то сломалось. Это особенно полезно при добавлении новых функций или рефакторинге.

### 3. Быстрая обратная связь
Если вы внесли ошибку, тесты сразу это покажут. Вы будете тратить меньше времени на дебаггинг и больше на написание нового функционала.

### 4. Улучшение архитектуры
TDD мотивирует вас на написание чистого, модульного кода, который легко тестировать.

---

## Что понадобится для старта?

Для работы с TDD в Python вам пригодятся стандартные модули, такие как unittest или doctest.
👍2
Если хотите изучить более продвинутые библиотеки, взгляните на pytest, которая предлагает удобный и лаконичный синтаксис.

Чтобы закрепить практику, начните с маленьких задач. Напишите функцию для проверки палиндрома, сортировки списка или создания простого калькулятора. Главное – начните с тестов, и вы быстро увидите, насколько это мощный и интересный инструмент.

---

TDD – это не про "модные методики", это про то, как сделать ваш код надёжнее и избавиться от рутины поиска ошибок. Попробуйте написать пару функций через TDD, и вы удивитесь, каким понятным и структурированным станет ваш процесс разработки. Начните с малого, но дайте шанс этому подходу – результат вас не разочарует!
👍1
- Основа работы с библиотекой NumPy для математических вычислений
Основа работы с библиотекой NumPy для математических вычислений

Привет! Если ты начинающий в программировании на Python, или давно хотел заняться чем-то более серьезным, чем просто "Hello, World" и списки покупок, пора поговорить о настоящем инструменте мощи — библиотеке NumPy. Если бы Python был мультитулом, NumPy стал бы лезвием, которое справляется с любой задачей математических вычислений и эффективной работы с массивами.

---

### Зачем нужен NumPy?

NumPy (Numerical Python) — это библиотека для численных вычислений с поддержкой многомерных массивов. Она создана для того, чтобы решить две проблемы стандартного Python: скорость работы и удобство манипуляций с числами. В основе лежит структура данных ndarray (N-dimensional array), которая позволяет создавать массивы и производить с ними такие операции, как сложение, умножение, транспонирование и всё, что пожелает твоя математическая душа.

---

### Установка

Для начала установим библиотеку (если её у тебя ещё нет). Открывай терминал и введи:

pip install numpy


После установки подключаем её:

import numpy as np


И всё, мы готовы считывать числа, массивы и вычислять!

---

### Пример 1. Первые шаги с массивами

Давай создадим простой массив. В обычном Python ты бы, допустим, сделал это так: [1, 2, 3, 4, 5]. С NumPy можно сделать красивее:

arr = np.array([1, 2, 3, 4, 5])
print(arr)


У тебя будет массив, который ведёт себя как список, но умеет гораздо больше. Например, ты можешь прибавить число ко всем элементам сразу:

arr = arr + 10
print(arr)
# Вывод: [11 12 13 14 15]


Попробуй проделать подобное со стандартным списком Python — и ты столкнёшься с ошибкой.

---

### Пример 2. Генерация данных

NumPy позволяет быстро генерировать массивы без лишней возни. Например, хочешь создать массив из последовательных чисел от 0 до 9? Легко:

seq = np.arange(10) 
print(seq)
# [0 1 2 3 4 5 6 7 8 9]


А если нужен массив из пяти случайных дробей между 0 и 1?

random_values = np.random.rand(5)
print(random_values)


Важно: все операции производятся быстрее, чем с обычными списками Python.

---

### Пример 3. Многомерные массивы

Теперь взглянем на многомерные массивы. В NumPy такие структуры — хлеб с маслом. Создадим 2D-массив (по сути, таблицу):

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)


И вот у тебя уже матрица! Достаём элемент, например, из первой строки и второго столбца:

print(matrix[0, 1])
# Результат: 2


Можно даже легко транспонировать матрицу, если захотелось поменять строки и столбцы местами:

transpose = matrix.T
print(transpose)


---

### Пример 4. Простые вычисления

NumPy создан для математики. Например, ты можешь сложить два массива так же просто, как чай налить:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c) # [5 7 9]


А ещё — умножение:

product = a * b
print(product)
# [4 10 18]


---

### Пример 5. Статистика

NumPy помогает быстро находить среднее, максимум, суммы и многое другое:

data = np.array([1, 2, 3, 4, 5])

print("Mean:", np.mean(data)) # Среднее значение
print("Max:", np.max(data)) # Максимум
print("Sum:", np.sum(data)) # Сумма элементов


---

### Зачем это всё?

NumPy — это не только спортивный интерес. В реальных задачах программирования (особенно, связанных с анализом данных, графикой, машинным обучением) важна работа с массивами и матрицами. NumPy делает это легко и быстро.

Надеюсь, ты вдохновился попробовать эту библиотеку в своих проектах. NumPy — это один из тех инструментов, который сразу показывает, насколько Python бывает "магическим". Попробуй применять его, и очень быстро ты почувствуешь большую разницу в своих возможностях как начинающего программиста.
1👍1
- Работа с многомерными массивами с помощью NumPy
👍1
# Работа с многомерными массивами с помощью NumPy

Если вы только начинаете погружаться в мир Python, то наверняка уже слышали слово "NumPy". Этот модуль — настоящая жемчужина для любой работы с числами и массивами. Обычные Python-списки, конечно, мощны, но если дело касается больших объемов данных, сложных математических операций и многомерных структур, тут они уже пасуют. NumPy – это решение, которое делает такие задачи быстрыми, удобными и не заставляет пыхтеть от излишне громоздкого кода.

Сегодня разберём одну из самых интересных и полезных возможностей NumPy — работу с многомерными массивами.

---

## Что такое многомерный массив?

Многомерный массив — это как электронная таблица, только представьте себе, что её можно растянуть не только в двумерном пространстве (строки и столбцы), но и добавлять сколько угодно измерений. Двумерные массивы (матрицы) мы видим повсюду: это табличные данные, изображения (где каждый пиксель — число), а в трёх измерениях это уже объёмные данные вроде 3D-графики или цветных изображений (RGB). NumPy позволяет с такими массивами работать быстро и без головной боли.

---

## Создаем многомерный массив

Чтобы начать работать с NumPy, убедитесь, что он установлен:
pip install numpy


Теперь создадим первый многомерный массив. Для этого используется функция numpy.array:

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(data)


Здесь мы создали двумерный массив (3x3). Всё просто! NumPy позволяет легко проверять размер массива с помощью свойства .shape:

print(data.shape)  # (3, 3) — это три строки и три столбца


---

## Операции с многомерными массивами

Суть NumPy в том, что все операции происходят одновременно для всего массива. Это называется векторизация. Например, если вы захотите умножить все элементы массива на 2, вы не будете писать цикл for:

result = data * 2
print(result)


Результат будет таким же массивом, но с удвоенными значениями.

---

## Индексация и срезы

Работа с многомерными массивами организована так же, как и со списками, но с дополнительными уровнями. Допустим, вы хотите получить элемент на пересечении второй строки и третьего столбца:

print(data[1, 2])  # Индексация с нуля: результат 6


Или хотите выбрать целую строку (например, первую строку):
print(data[0, :])  # Результат: [1, 2, 3]


Попробуем вырезать подмассив, содержащий центральный блок:
subarray = data[1:3, 1:3]
print(subarray) # [[5, 6], [8, 9]]


Много удобства, согласитесь?

---

## Трансформации массивов

Иногда необходимо изменить форму массива — например, из двумерного сделать одномерный. Тут приходит на помощь метод .reshape:

flat_array = data.reshape(-1)  # "Разворачиваем" массив в одномерный
print(flat_array) # [1, 2, 3, 4, 5, 6, 7, 8, 9]


Можно даже преобразовать его обратно в другой многомерный формат:
reshaped = flat_array.reshape(1, 9)  # Или, например, (9, 1)
print(reshaped)


---

## Мощь в сложных вычислениях

NumPy содержит огромное количество встроенных функций для математических операций, которые работают значительно быстрее, чем написанные вручную циклы. Хотите, например, найти сумму всех элементов массива?

print(data.sum())  # Сумма: 45


Или среднее значение всех элементов:
print(data.mean())  # Среднее: 5.0


Если нужно выполнить операцию по конкретному измерению, например, суммировать значения по строкам:
print(data.sum(axis=1))  # Сумма по каждой строке: [6, 15, 24]


---

## Генерация массивов

Часто при работе с данными нужно создать массивы с конкретными шаблонами.
🤩1
NumPy предоставляет удобные функции для этого:

- Создать массив из нулей:
zeros = np.zeros((3, 3))
print(zeros)


- Создать массив единиц:
ones = np.ones((3, 3))
print(ones)


- Создать массив со случайными числами:
randoms = np.random.rand(3, 3)
print(randoms)


Это лишь малая часть возможностей!

---

## Заключение

NumPy — это инструмент, который сразу вынесет вашу работу с данными на новый уровень. Удобство, скорость и богатый функционал для работы с массивами (и не только) делает его обязательным для изучения. Мы разобрали лишь базовые возможности многомерных массивов, но уже этого достаточно, чтобы существенно упростить вашу жизнь. Не стесняйтесь экспериментировать и пробовать описанные примеры в деле: NumPy — это модуль, который вы точно полюбите!
👍2🤩1
- Создание и развертывание веб-сервисов на AWS с помощью Flask
Создание и развертывание веб-сервисов на AWS с помощью Flask

Привет! Если вы давно хотите попробовать создать свой веб-сервис, но теряетесь в сложных терминах и процессе деплоя, то эта статья специально для вас. Сегодня поговорим о том, как с помощью Python, Flask и AWS можно быстро развернуть работающий веб-сервис. Без лишней "магии", всё будет чётко и пошагово.

### Что такое Flask?

Если вы начинающий разработчик, то, скорее всего, уже слышали о Flask. Это минималистичный веб-фреймворк на Python, который позволяет за короткое время создать работающий веб-сервис. Почему Flask? Потому что он лёгкий, гибкий и идеально подходит для небольших проектов или быстрого прототипирования интерфейсов.

### AWS – облако возможностей

Amazon Web Services (AWS) – это платформа для хостинга приложений, которая предоставляет все необходимые инструменты для развертывания ваших веб-приложений. Мы будем использовать Amazon Elastic Beanstalk (EB), чтобы минимизировать задачи по управлению инфраструктурой – он займётся всем за нас.

Теперь приступим к созданию нашего приложения и его развертыванию на AWS.

---

### 1. Начало: создаём простое Flask-приложение

Для начала нужно установить Flask, если вы этого ещё не сделали:
pip install flask


Создадим файл app.py с простым примером:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
return "Hello, AWS!"

if __name__ == '__main__':
app.run(debug=True)


Запустите этот код локально, и у вас будет базовый веб-сервис, доступный по адресу: http://127.0.0.1:5000. Отлично, первый этап выполнен!

---

### 2. Подготовка к AWS

AWS работает с предварительно упакованными приложениями, поэтому требуется создать файл requirements.txt, чтобы указать зависимости:
flask==2.2.3


Также добавим файл Procfile, чтобы Elastic Beanstalk знал, как запускать наше приложение:
web: python app.py


### 3. Настраиваем AWS

#### 3.1. Создаём аккаунт
Если у вас ещё нет аккаунта AWS, зарегистрируйтесь (понадобится банковская карта, но AWS предоставляет бесплатный пробный период).

#### 3.2. Установка AWS CLI
Для взаимодействия с AWS через командную строку установим AWS CLI:
pip install awscli


И настроим его:
aws configure

Вас попросят ввести access key и secret key (их можно получить в AWS Management Console), а также регион разработки, например, us-east-1.

#### 3.3. Устанавливаем AWS EB CLI
Для работы с Elastic Beanstalk нужно установить его CLI:
pip install awsebcli


---

### 4. Развёртывание приложения

Начнём с инициализации Elastic Beanstalk для нашего проекта:
eb init -p python-3.9 flask-on-aws

Здесь flask-on-aws – это имя вашего приложения. Укажите регион, который вы использовали ранее.

Далее создадим среду приложения:
eb create flask-env


Этот процесс займёт некоторое время, по окончании вы получите URL вашего веб-сервиса (например, http://flask-env.eba-xyz.amazonaws.com). Попробуйте открыть его в браузере – вы увидите знакомое "Hello, AWS!".

---

### 5. Что дальше?

Теперь у вас есть полностью функционирующее Flask-приложение, развернутое в облаке! Вы можете добавлять новые маршруты, подключать базы данных (например, Amazon RDS) или усложнять приложение с помощью API.

AWS облегчает создание сложной инфраструктуры, позволяя вам сосредоточиться на разработке. Например, можно подключить балансировку нагрузки или настроить HTTPS-сертификат через AWS Certificate Manager – всё это можно сделать несколькими кликами или командами.

### Заключение

Мы разобрали базовый процесс создания и развертывания веб-сервиса на AWS в связке Flask и Elastic Beanstalk. Этот подход идеален для быстрых прототипов и небольших веб-приложений. AWS берёт на себя все задачи по масштабированию и управлению, а Flask позволяет вам сосредоточиться на бизнес-логике.

Так что хватит откладывать свои идеи!
👍1
- Основы работы с библиотекой requests для HTTP-запросов
# Основы работы с библиотекой requests для HTTP-запросов

Python — это настоящий швейцарский нож в мире программирования, и количество библиотек, которые делают рутину проще, поражает. Но сегодня я расскажу тебе про одну маленькую, но мощную библиотеку для работы с HTTP-запросами — requests. Если ты хоть раз отправлял запросы в веб-приложение или пытался получать данные с API, то, вероятно, уже встречал её. Requests превращает работу с HTTP во что-то настолько простое, что ты начинаешь получать удовольствие от написания кода.

Давай разбираться, как она работает и как её использовать на практике.

### Что такое requests?

На простом языке, requests позволяет твоему коду общаться с веб-сайтами и сервисами. Ты можешь отправить запрос, получить ответ, прочитать данные и даже загрузить файлы из интернета — и всё это буквально в пару строк. В отличие от стандартных модулей вроде urllib, requests предлагает удобный и лаконичный синтаксис, который особенно радует разработчиков.

Перед началом работы её нужно установить:

pip install requests


Вот и всё, ты готов начинать!

---

### Основные виды запросов

В HTTP есть разные методы запросов: GET, POST, PUT, DELETE и другие. Requests поддерживает их все, но давай начнем с самого популярного — GET.

Работаем с методом GET:

Обычно метод GET используется для получения данных. Например, давай попробуем узнать, сколько сегодня людей находится на МКС, с помощью публичного API Open Notify:

import requests

response = requests.get('http://api.open-notify.org/astros.json')
if response.status_code == 200: # 200 - код успешного ответа
data = response.json() # Преобразуем JSON-ответ в Python-словарь
print(f"Astronauts currently in space: {data['number']}")
else:
print(f"Failed to fetch data. Status code: {response.status_code}")


Просто и удобно. Вместо десятков строк кода ты получаешь готовый JSON в одну команду.

---

### Отправляем данные с POST

Когда ты отправляешь форму на сайте (например, логин и пароль), используется метод POST. Давай отправим данные на сервер:

import requests

url = 'https://httpbin.org/post'
payload = {'name': 'John', 'age': 30}

response = requests.post(url, data=payload)
if response.status_code == 200:
print(response.json())


Этот код отправляет данные на тестовый сервер httpbin, а потом выводит JSON-ответ. Как видишь, всё интуитивно понятно: данные мы передаем через параметр data.

---

### Таймауты и обработка ошибок

Что, если сервер вдруг зависнет или тебе нужно прервать долгое ожидание? Requests позволяет указать таймаут:

import requests

try:
response = requests.get('https://httpbin.org/delay/5', timeout=3) # Ожидание ответа максимум 3 секунды
print(response.text)
except requests.Timeout:
print("The request timed out")


Этот код защитит твою программу от долгих зависаний.

---

### Заголовки и параметры URL

Иногда для общения с API нужно отправить заголовки или параметры в URL. Разберем пример:

import requests

url = 'https://api.github.com/search/repositories'
params = {'q': 'requests+language:python'}

response = requests.get(url, params=params, headers={'Accept': 'application/vnd.github.v3+json'})
if response.status_code == 200:
data = response.json()
print(f"Found {data['total_count']} repositories matching your query.")


Здесь мы передаем параметры через params, а заголовки добавляем с помощью параметра headers.

---

### Загрузка файлов

С Requests можно легко загрузить файл из интернета:

import requests

url = 'https://via.placeholder.com/150'
response = requests.get(url)

if response.status_code == 200:
with open('image.png', 'wb') as file:
file.write(response.content)
print("Image downloaded successfully!")


Файл сохраняется локально, а ты тратишь на это буквально пару строк.

---

### Полезные советы

1.
👍2
Не забывай проверять статус ответа. Используй response.status_code, чтобы убедиться, что запрос прошел успешно.
2. Предпочитай JSON для работы с данными. Метод .json() автоматически преобразует JSON-ответ в Python-словарь.
3. Работай с таймаутами. Это поможет избежать зависания программы.
4. Не передавай пароли и токены в открытом виде. Храни их в переменных окружения или используйте безопасное хранилище.

---

Requests — это действительно одна из тех библиотек, которые "просто работают". Простая, но мощная, она может быть полезна как новичку, так и опытному разработчику. Попробуй поэкспериментировать с реальными API, и ты точно оценишь её удобство.
👍3
- Как строить и решать простые математические модели на Python
👍1
### Как строить и решать простые математические модели на Python

Математические модели — это инструмент, который позволяет описывать, анализировать и прогнозировать процессы в разных областях нашей жизни, будь то физика, экономика, биология или даже игра с домашним питомцем. Python — один из лучших языков для их реализации благодаря своей простоте и широкому набору библиотек. Сегодня мы разберем, как с помощью Python можно быстро построить и решить несколько простых математических моделей.

#### Уравнения и библиотека SymPy

Начнем с типичного сценария — решения уравнений. Допустим, у нас есть линейное уравнение вида:

3x + 5 = 14


Сначала давайте решим его вручную: \(3x = 14 - 5\), далее делим обе стороны на 3, получаем \(x = 3\). Но зачем нам ручная работа, если SymPy сделает это за нас?

from sympy import symbols, Eq, solve

# Задаем переменную
x = symbols('x')

# Определяем уравнение
equation = Eq(3 * x + 5, 14)

# Решение
solution = solve(equation, x)
print(solution) # Вывод: [3]


SymPy великолепно подходит не только для линейных уравнений, но и для систем уравнений или более сложных задач, где вручную вычислять становится утомительно. Например, систему из двух уравнений мы можем решить так:

y = symbols('y')

equation1 = Eq(2 * x + y, 10)
equation2 = Eq(x - y, 2)

solutions = solve((equation1, equation2), (x, y))
print(solutions) # Вывод: {x: 4, y: 2}


Вместо того чтобы «ломать голову» над пересечением линий на графике, вы получаете готовый результат за доли секунды.

#### Прогнозы с помощью библиотеки NumPy

Не будем останавливаться на уравнениях — давайте попробуем построить простую линейную модель и сделать прогноз. Представьте себе, что мы изучаем зависимость между временем выполнения задачи (в часах) и количеством сделанных ошибок. У нас есть следующий набор данных:

Time (часы): [1, 2, 3, 4, 5]
Errors (ошибки): [10, 8, 6, 5, 3]


Мы хотим предсказать, сколько ошибок сделаем при 6 часах работы. Это можно сделать с помощью метода наименьших квадратов из библиотеки NumPy:

import numpy as np

# Исходные данные
time = np.array([1, 2, 3, 4, 5])
errors = np.array([10, 8, 6, 5, 3])

# Коэффициенты линейной регрессии (y = mx + b)
m, b = np.polyfit(time, errors, 1)

# Прогноз
future_time = 6
prediction = m * future_time + b

print(f"При {future_time} часах работы ожидается {prediction:.2f} ошибки.")
# Вывод: При 6 часах работы ожидается 1.40 ошибки.


Эта модель, хоть и примитивна, подходит для понимания базовых принципов. Более сложные задачи можно решать с использованием библиотек вроде Scikit-learn.

#### Моделирование физического процесса (свободное падение)

Представим, что мы хотим смоделировать свободное падение тела с высоты 100 метров и определить, через какое время оно достигнет земли. Для простоты будем считать, что сопротивление воздуха отсутствует, а ускорение свободного падения равно \(9.8 \, м/с^2\). Формула для расчета высоты \(h\) в зависимости от времени \(t\):

h(t) = h_0 - 0.5 * g * t^2


Составим модель:

import math

# Исходные параметры
h0 = 100 # начальная высота, м
g = 9.8 # ускорение свободного падения, м/с^2

# Решаем уравнение h(t) = 0
t = math.sqrt(2 * h0 / g)
print(f"Тело достигнет земли через {t:.2f} секунд.")
# Вывод: Тело достигнет земли через 4.52 секунд.


Здесь мы воспользовались библиотекой math для вычисления квадратного корня. Такой подход применим к множеству задач в физике и инженерии.

#### Визуализация моделей (Matplotlib)

Образы всегда помогают лучше понять, что происходит. На графике можно, например, показать зависимость времени падения от высоты.
👍3
Используем Matplotlib:

import matplotlib.pyplot as plt

# Высоты
heights = np.linspace(10, 200, 50) # Начало, конец, кол-во точек
times = [math.sqrt(2 * h / g) for h in heights]

# Построение графика
plt.plot(heights, times, label='Time vs Height')
plt.xlabel('Высота (м)')
plt.ylabel('Время (с)')
plt.title('Зависимость времени падения от высоты')
plt.legend()
plt.show()


Этот код визуализирует, как время падения увеличивается с ростом высоты.

---

Математическое моделирование на Python — это не только полезно, но и увлекательно! Даже самые простые модели способны дать удивительные результаты. А с таким арсеналом библиотек, как SymPy, NumPy и Matplotlib, реализация любых идей становится быстрой и понятной.
👍2
Как настроить PyCharm для работы с Python.
👍1
# Как настроить PyCharm для работы с Python: инструкция для начинающих

Если вы только начали свой путь в изучении Python и хотите вооружиться современными инструментами, PyCharm — это идеальный выбор. Этот мощный и интуитивно понятный IDE (интегрированная среда разработки) от JetBrains способен не только сделать вашу работу комфортной, но и максимально продуктивной. В этой статье я расскажу, как настроить PyCharm для работы с Python, чтобы вы могли сосредоточиться только на написании кода, не отвлекаясь на мелочи.

---

## Шаг 1. Установка PyCharm

Если PyCharm пока не установлен, скачайте его с официального сайта компании JetBrains (https://www.jetbrains.com/pycharm/). Для начинающих отлично подойдет бесплатная версия — Community Edition.

Убедитесь, что Python установлен на вашем компьютере. Если нет, установите его с сайта https://www.python.org/.

---

## Шаг 2. Первоначальная настройка PyCharm

1. Первый запуск. После установки PyCharm откройте его. На первом экране выберите тему — светлую или тёмную, в зависимости от ваших предпочтений. Например, я использую Darcula, чтобы глаза меньше уставали при длительной работе.

2. Создание нового проекта. Нажмите “New Project” и укажите путь, где будет храниться ваш проект. PyCharm предложит создать виртуальную среду (virtual environment). Рекомендуется выбрать именно этот вариант, чтобы ваши зависимости не мешали другим проектам.

- Убедитесь, что в качестве интерпретатора выбран Python. Если PyCharm не находит Python автоматически, укажите путь к установленному интерпретатору вручную.

---

## Шаг 3. Оптимизация настроек PyCharm

### Настройка горячих клавиш
PyCharm поддерживает множество горячих клавиш, которые значительно ускоряют работу. В меню File > Settings > Keymap вы можете посмотреть или изменить их. Например, привычное автодополнение вызывается клавишей Ctrl + Space.

### Настройка отображения
Чтобы сделать интерфейс удобным, настройте шрифты и размер текста: File > Settings > Editor > Font. Рекомендуется выбрать моноширинный шрифт, например JetBrains Mono.

Также включите отображение номеров строк, чтобы проще ориентироваться в коде: File > Settings > Editor > General > Appearance, отметьте галочку "Show line numbers".

### Настройка автосохранения
Опция автосохранения бывает очень полезна. Перейдите в File > Settings > Appearance & Behavior > System Settings и включите опцию “Save files automatically if the IDE is idle for X seconds”.

---

## Шаг 4. Подключение полезных плагинов

PyCharm позволяет устанавливать плагины, добавляющие функциональность. Вот несколько плагинов, которые могут быть полезны новичку:

1. IdeaVim — если вы хотите изучить основы vim и ускорить работу.
2. Python Integrated Tools — улучшает поддержку Python в IDE.
3. Markdown Support — для работы с файлы .md, что может быть полезно, если вы пишете документацию.

Для их установки перейдите в File > Settings > Plugins, введите название плагина в поисковую строку и установите его.

---

## Шаг 5. Подключение и использование библиотек

PyCharm интегрирован с пакетным менеджером pip, так что вы легко можете установить любые библиотеки. Чтобы добавить библиотеку в проект, следуйте этим шагам:

1. Откройте File > Settings > Project > Python Interpreter.
2. Нажмите на плюс (+) в списке установленных пакетов.
3. Введите название библиотеки. Например, попробуйте установить requests. После нажатия “Install Package” библиотека будет автоматически загружена и установлена.

Для проверки установки введите в консоли:

import requests
print(requests.__version__)


Если всё настроено корректно, вы увидите номер версии библиотеки.

---

## Шаг 6. Советы для улучшения опыта работы с PyCharm

- Используйте встроенный debugger (отладчик).
👍3