uk
Feedback
Python для начинающих

Python для начинающих

Відкрити в Telegram

Python для начинающих

Показати більше
1 240
Підписники
Немає даних24 години
+17 днів
+130 день
Архів дописів
Привет! С вами Иван, и сегодня мы отправимся в захватывающее путешествие в мир чат-ботов для Telegram. Если вы хоть раз получали от бота погоду, смешную гифку или уведомление из любимого приложения — поздравляю, вы уже на правильном пути! А теперь давайте посмотрим, как создать своего собственного Telegram-бота на Python с помощью великолепной библиотеки python-telegram-bot. ## Почему именно python-telegram-bot? Библиотека python-telegram-bot — это удобная "обертка" над Telegram Bot API: она избавляет вас от рутины работы с HTTP-запросами, помогает обрабатывать команды, текст, кнопки и много-много всего. ## Первый шаг: заводим бота Создайте нового бота через @BotFather в Telegram — он даст вам токен. Храните его в секрете, иначе ваш бот может стать жертвой хулиганов! ## Установка библиотеки
pip install python-telegram-bot --upgrade
## Простой пример: Эхо-бот Создадим бота, который будет отвечать пользователю тем же текстом:
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Привет! Я эхо-бот. Напиши мне что-нибудь.")

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(update.message.text)

app = Application.builder().token("YOUR_BOT_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()
И всё — у вас уже есть работоспособный бот! Просто вставьте ваш токен и запустите скрипт. ## Добавим команду Чат-боты отлично справляются с различными командами. Например, добавим простую команду /help:
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Напиши что-нибудь, и я повторю это за тобой!")

app.add_handler(CommandHandler("help", help_command))
## Почему это круто? С помощью python-telegram-bot вы можете создавать настоящие мини-приложения в Telegram: интерактивные меню с Inline кнопками, опросы, присылать картинки, аудио, документы — и всё это буквально в пару строк кода. ## Вдохновляйтесь и экспериментируйте! Посмотрите документацию: https://python-telegram-bot.readthedocs.io. Попробуйте добавить обработку фото или кнопки, или присылать случайное число по команде. Создавать Telegram-ботов на Python удобно, весело и весьма полезно для тренировки своих навыков программирования. Удачного кода!

- Разработка чат-ботов с использованием Telegram API и библиотеки python-telegram-bot.
- Разработка чат-ботов с использованием Telegram API и библиотеки python-telegram-bot.

Привет! На связи Иван, и сегодня мы вместе сделаем свой первый REST API на Python с помощью Flask. REST API — это такой способ строительства интерфейса, чтобы разные приложения могли общаться друг с другом по сети на понятном и логичном языке “запрос-ответ”. Flask идеально подходит для начинающих: он легкий, лаконичный и очень “человечный”. ## Установка Flask Начнем с минимума – установка одной командой:
pip install flask
## Скелет приложения Создадим простой API для управления списком книг (CRUD: создать, прочитать, обновить, удалить). Код будет коротким, но покажет основные приёмы.
from flask import Flask, jsonify, request

app = Flask(__name__)

books = [
    {"id": 1, "title": "1984", "author": "George Orwell"},
    {"id": 2, "title": "Brave New World", "author": "Aldous Huxley"}
]
## Выдаём все книги
@app.route('/books', methods=['GET'])
def get_books():
    return jsonify(books)
## Добавляем книгу
@app.route('/books', methods=['POST'])
def add_book():
    data = request.get_json()
    new_book = {
        "id": books[-1]["id"] + 1 if books else 1,
        "title": data["title"],
        "author": data["author"]
    }
    books.append(new_book)
    return jsonify(new_book), 201
## Получить книгу по id
@app.route('/books/<int:book_id>', methods=['GET'])
def get_book(book_id):
    book = next((b for b in books if b['id'] == book_id), None)
    if book:
        return jsonify(book)
    return jsonify({"error": "Not found"}), 404
## Удаление книги
@app.route('/books/<int:book_id>', methods=['DELETE'])
def delete_book(book_id):
    global books
    books = [b for b in books if b['id'] != book_id]
    return '', 204
## Запуск сервера
if __name__ == '__main__':
    app.run(debug=True)
Теперь можно “пощупать” API: проверить через Postman или curl, как он реагирует на разные запросы. ## Итоги С Flask можно за 10 минут сделать работающий API, который примет запросы с любого устройства и вернет аккуратный JSON-ответ. Если чувствуешь вкус к этому — впереди Flask-Restful, JWT, SQLAlchemy и еще гора крутых инструментов. А пока рад, что ты сделал свой первый REST API!

- Создание простого REST API с Flask и Python.
- Создание простого REST API с Flask и Python.

Друзья, всем привет! С вами Иван — и сегодня мы погружаемся в волшебный мир контекстных менеджеров Python. Если вы когда-нибудь открывали файлы с помощью конструкции with, то вы уже их встречали в «дикой природе». Но что, если ваши задачи требуют создать свой собственный менеджер? Давайте разбираться, как это сделать! ### Почему это круто? Контекстные менеджеры позволяют элегантно управлять ресурсами: открытием и закрытием файлов, подключениями к базам данных, блокировкой потоков и даже временными изменениями настроек. Всё это — без лишнего кода, «разруливания» ошибок и необходимости помнить делать "уборку" вручную. ### Пример 1: Файловый менеджер, только свой Ручное открытие файла = шанс забыть его закрыть. А вот так — забудь о заботах:
class CustomFile:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode
        self.file = None

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.file:
            self.file.close()
Используем наш менеджер:
with CustomFile('example.txt', 'w') as file:
    file.write('Hello, context!')
### Пример 2: Управляем ресурсами без классов Иногда нужен менеджер "по-быстрому". Здесь спасает модуль contextlib с его декоратором @contextmanager:
from contextlib import contextmanager

@contextmanager
def temporary_switch(val):
    print('Switch ON')
    yield val
    print('Switch OFF')

with temporary_switch('something'):
    print('Working inside the context')
### Как это работает? - В первом примере __enter__ запускается при входе в блок, возвращая нужный объект (например, сам файл). - __exit__ срабатывает на выходе из блока (даже если случилась ошибка!) и заботится о закрытии или любой другой очистке. - В декораторе всё просто: до yield — вход, после — выход. ### Где применить? От управления файлами и сетевыми соединениями до логирования и даже тестовых изменений глобальных переменных. С контекстными менеджерами ваш код становится безопаснее, аккуратнее и короче. Экспериментируйте! Создайте свой менеджер для каких-нибудь временных изменений или аккуратного подключения к сервису. Ваш Python-код скажет вам за это спасибо.

- Как создавать контекстные менеджеры с использованием ключевого слова with.
- Как создавать контекстные менеджеры с использованием ключевого слова with.

Привет! С вами Иван, и сегодня мы окунёмся в мир хэшей в Python, познакомившись с модулем hashlib. Вопрос безопасности и хранения паролей — один из самых частых на практике, и здесь на помощь приходит этот мощный инструмент. Как именно? Сейчас расскажу! ### Что такое хэш? Хэш-функции преобразуют любые данные в фиксированной длины строку байт (обычно в виде шестнадцатеричной строки). Особенность — малейшее изменение исходных данных радикально меняет результат. Это идеальный способ проверки целостности информации и хранения паролей. ### Быстрый старт с hashlib Модуль hashlib — это стандартная библиотека, никакой установки не требуется. Давайте попробуем посчитать хэш обычной строки:
import hashlib

data = "I love Python!"
hash_object = hashlib.sha256(data.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig)
Вывод — длинная строка из цифр и букв. Это SHA-256 хэш вашей строки. Важно: если вы попробуете изменить хотя бы один символ в исходной строке, результат будет совершенно другим! ### Зачем это нужно? 1. Проверка целостности файлов: скачали файл и хотите убедиться, что он не повреждён? Считайте хэш и сравните. 2. Хранение паролей: сохранять пароли в «чистом» виде — плохая идея! Лучше храните хэши и сравнивайте их при проверке. 3. Генерация уникальных идентификаторов: иногда удобно быстро получить короткий “отпечаток” больших данных. ### Пример: проверка целостности файла
import hashlib

def file_hash(filename):
    hash_md5 = hashlib.md5()
    with open(filename, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

print(file_hash("example.txt"))
### Коротко о популярных алгоритмах - MD5 — быстро, но уже не считается безопасным. - SHA-1 — тоже устарел в плане криптографии. - SHA-256, SHA-512 — намного надёжнее и чаще используются. ### Работа с паролями
import hashlib

def hash_password(password):
    return hashlib.sha256(password.encode()).hexdigest()

# Сохраняем только значение функции hash_password
На этом всё! Применяйте hashlib для защиты своих данных, это просто, быстро и современно.

- Использование модуля hashlib для создания хэшей.
- Использование модуля hashlib для создания хэшей.

Привет, друзья! С вами Иван, и сегодня мы окунемся в захватывающий мир искусственного интеллекта: поговорим о том, как работать с API OpenAI и создавать свой собственный генератор текста на Python. Готовьте свои токены! ## Что такое OpenAI API и зачем он нужен? OpenAI API — это облачный сервис, который позволяет взаимодействовать с моделями семейства GPT напрямую из вашего приложения. С его помощью можно не только генерировать тексты, но и реализовать чат-бота, автодополнение или даже писать стихи по заданной теме! ## Начинаем: регистрация и установка Для начала понадобится API-ключ. Зарегистрируйтесь на platform.openai.com, получите ключ и установите библиотеку:
pip install openai
## Первый пример: переводим идеи в текст Воспользуемся модулем openai и создадим простейшую функцию генерации:
import openai

openai.api_key = "your-api-key-here"

def generate_text(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",     # Бесплатная и шустрая модель
        messages=[{"role": "user", "content": prompt}],
        max_tokens=100             # Ограничим длину ответа
    )
    return response.choices[0].message['content']

output = generate_text("Suggest three creative project ideas for Python beginners.")
print(output)
Этот небольшой скрипт превращает вашу команду (prompt) в связный английский текст. Пример выше попросит ИИ предложить три идеи проектов. ## Немного магии параметров - model — выбирайте актуальную модель (сейчас популярны gpt-3.5-turbo, gpt-4). - messages — можно вести полноценный диалог с ИИ: передавайте цепочку сообщений. - max_tokens — ограничивает длину генерируемого ответа. - temperature (по умолчанию 1) — регулирует креативность: ниже — ответы строже и предсказуемей, выше — более неожиданные. ## Делаем помощника-программиста Как насчёт на лету генерировать сниппеты кода?
query = "Write Python code to print all prime numbers up to 50"
print(generate_text(query))
GPT сам напишет нужный фрагмент — экономьте время и силы! --- Всем успехов в покорении сил мощного искусственного интеллекта. С помощью OpenAI API и Python ваши идеи быстро превратятся в настоящие умные приложения!

- Работа с API OpenAI: основы GPT и генерация текста.
- Работа с API OpenAI: основы GPT и генерация текста.

Привет! С вами Иван, и сегодня мы научимся работать с изображениями в Python, используя библиотеку Pillow. Если вам когда-либо хотелось быстро изменить размер изображения, повернуть его или преобразовать в черно-белое — этот пост для вас! Всё просто, красиво и, конечно, на Python. ### Установка Pillow Для начала поставим Pillow — это «переосмысленный» PIL, классическая библиотека для обработки изображений в Python. Открываем терминал и набираем:
pip install pillow
Вуаля! Теперь у нас есть весь инструментарий для базовых (и не только!) манипуляций с картинками. ### Открываем и сохраняем изображение Сначала посмотрим, как просто загрузить файл:
from PIL import Image

img = Image.open('example.jpg')
img.show()
Метод show() откроет картинку в просмотрщике по умолчанию. Чтобы сохранить копию в другом формате:
img.save('example_copy.png')
### Изменение размера Очень часто нужно «ужать» картинку до нужных размеров. Делается это одной строчкой:
resized_img = img.resize((200, 200))
resized_img.save('resized_example.jpg')
### Поворот изображения А как насчет вращения? Вот так:
rotated_img = img.rotate(90)
rotated_img.save('rotated_example.jpg')
Угол указываем в градусах, против часовой стрелки. ### Перевод в черно-белое Бывает, требуется сделать изображение черно-белым — например, для аватара или стикера.
bw_img = img.convert('L')
bw_img.save('bw_example.jpg')
Аргумент 'L' означает градации серого (8-bit). ### Кадрирование (crop) Хочется урезать лишнее? Используем crop, указав координаты прямоугольника:
cropped_img = img.crop((50, 50, 300, 300))
cropped_img.save('cropped_example.jpg')
### Лёгкая обработка на лету Комбинировать операции легко. Например, уменьшим и повернём картинку:
new_img = img.resize((100, 100)).rotate(45)
new_img.save('combo_example.jpg')
### На заметку Pillow поддерживает множество форматов: JPEG, PNG, BMP, GIF и даже ICO. Всё, о чём мечтал начинающий Python-разработчик-графоман! Главное — не забывайте всегда открывать файлы в режиме чтения байтов, если работаете с потоками или web, но это уже тема для следующего поста. Так что, вооружайтесь Python, пробуйте Pillow и создавайте свои шедевры из любых изображений — быстро и просто. До новых встреч!

- Как установить и использовать библиотеку Pillow для базовой обработки изображений.
- Как установить и использовать библиотеку Pillow для базовой обработки изображений.

Привет, друзья! Меня зовут Иван, и сегодня я расскажу вам, как начать автоматизировать проверку вашего Python-кода с помощью встроенного модуля unittest. Даже если вы только начинаете свой путь в программировании, поверьте — тесты быстро станут вашими лучшими помощниками! ## Зачем нужны автоматические тесты? Пока проект маленький, ошибки найти просто. Но как только код начинает разрастаться, простая проверка глазами становится неэффективной. Тут и приходит на помощь unittest: вы пишете специальные функции, которые автоматически запускаются и проверяют поведение вашего кода. ## Ваш первый тест Допустим, у вас есть функция, которая складывает числа:
def add(a, b):
    return a + b
Напишем к ней тест:
import unittest

class TestAddFunction(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(2, 3), 5)

    def test_add_zero(self):
        self.assertEqual(add(0, 0), 0)

    def test_add_negative(self):
        self.assertEqual(add(-1, -1), -2)

if __name__ == '__main__':
    unittest.main()
Что здесь происходит? Мы наследуемся от unittest.TestCase и определяем методы, начинающиеся с test_. Каждый такой метод — отдельная проверка. Если что-то пошло не так, unittest сразу об этом сообщит. ## Как работает unittest - assertEqual(a, b): проверяет, что a и b равны. - assertTrue(expr): выражение истинно. - assertRaises: ожидается исключение. Давайте добавим пример с ошибкой:
def divide(a, b):
    return a / b

class TestDivideFunction(unittest.TestCase):
    def test_divide_by_zero(self):
        with self.assertRaises(ZeroDivisionError):
            divide(1, 0)
Этот тест пройдет, если функция действительно выбрасывает ZeroDivisionError при делении на ноль. ## Полезные советы - Один тест — одна логика. Это облегчает поиск багов. - Давайте тестам говорящие имена: test_sum_with_zero, test_divide_by_negative. - Запускать тесты можно командой python my_test.py. - Не бойтесь писать тесты даже для простых функций! Автоматическое тестирование — это ваш надежный щит против багов. Начните использовать unittest прямо сегодня и почувствуйте разницу: код становится чище, а жизнь — спокойнее.

- Введение в создание автоматических тестов с использованием unittest.
- Введение в создание автоматических тестов с использованием unittest.

Привет! Я — Иван, и сегодня мы напишем простую, но очень полезную программу: учёт расходов на Python. Вы удивитесь, как здорово совмещаются такие модули, как csv и matplotlib, чтобы автоматизировать ваши финансовые записи и даже видеть их на графике! Первый шаг — научимся сохранять расходы в файле CSV. Это позволит работать с данными в удобном табличном виде.
import csv

def add_expense(category, amount):
    with open('expenses.csv', 'a', newline='') as file:
        writer = csv.writer(file)
        writer.writerow([category, amount])

# Пример использования:
add_expense('Food', 520)
add_expense('Transport', 300)
Теперь, когда у нас есть таблица расходов, пора научиться их читать и анализировать. Допустим, мы хотим подбить итог по категориям и узнать, куда уходит основная часть бюджета.
def read_expenses():
    expenses = {}
    with open('expenses.csv', newline='') as file:
        reader = csv.reader(file)
        for row in reader:
            category, amount = row
            expenses[category] = expenses.get(category, 0) + float(amount)
    return expenses

# Выведем сводку
expenses_summary = read_expenses()
for category, total in expenses_summary.items():
    print(f"{category}: {total}")
А что если визуализировать эти данные? С этим справится всемогущий matplotlib. Построим круговую диаграмму расходов!
import matplotlib.pyplot as plt

def plot_expenses(expenses):
    categories = list(expenses.keys())
    amounts = list(expenses.values())
    plt.pie(amounts, labels=categories, autopct='%1.1f%%')
    plt.title('Expense Breakdown')
    plt.show()

# Вызов функции для построения графика:
plot_expenses(expenses_summary)
Итак, на базе трёх коротких функций мы получаем персональный трекер расходов: сохраняем их, анализируем и наглядно видим, что съедает наш бюджет. Советую поэкспериментировать: добавить даты, поиск по месяцам, экспорт в другие форматы. Python + CSV + matplotlib — это мощный, гибкий и, главное, простой старт для любого, кто хочет автоматизировать свою бытовую жизнь!

- Создание программы для учета расходов: работа с CSV и matplotlib.
- Создание программы для учета расходов: работа с CSV и matplotlib.

Привет! С вами Иван, и сегодня мы поговорим о том, как легко и просто реализовать структуру данных “очередь” и “стек” с помощью модуля collections, а точнее — с использованием класса deque. Если вдруг вы еще не знакомы с этим классом, самое время это исправить! ## Почему именно deque? В Python списки (list) отлично подходят для многих задач, но если вы часто добавляете и убираете элементы с начала, производительность может заметно пострадать. К счастью, есть deque (double-ended queue)! Это двусторонняя очередь, которая реализована на основе связанного списка: вставка и удаление элементов с любого конца происходят за константное время. ## Реализуем очередь Очередь — это структура данных, работающая по принципу FIFO (First-In, First-Out, “первым пришёл — первым ушёл”). Давайте посмотрим, как можно буквально в пару строк сделать простейшую очередь:
from collections import deque

queue = deque()

# Добавляем элементы в конец очереди
queue.append('apple')
queue.append('banana')
queue.append('cherry')

# Удаляем элемент из начала очереди
first = queue.popleft()
print(first)  # apple
Здесь всё интуитивно ясно: append добавляет элемент в конец, а popleft вытаскивает первый элемент. ## А теперь стек А вот стек — это LIFO (Last-In, First-Out, “последним пришёл — первым ушёл”). Реализуется он не менее просто:
from collections import deque

stack = deque()

# Добавляем элементы на вершину стека
stack.append('red')
stack.append('green')
stack.append('blue')

# Удаляем элемент с вершины стека
top = stack.pop()
print(top)  # blue
Для стека используйте методы append и pop. Всё, больше ничего не нужно! ## Немного тонкостей - deque можно использовать и как очередь, и как стек — просто используйте нужные методы: для очереди append и popleft, для стека — append и pop. - Можно задавать максимальную длину очереди (maxlen), и тогда при переполнении старые элементы будут автоматически удаляться. - deque поддерживает перебор циклом, а также методы, похожие на обычные списки: extend, remove, count и другие. ## Итого Использовать стандартный модуль collections и класс deque — отличный способ писать лаконичный, быстрый и читаемый код для очередей и стеков. Основная прелесть — минимум кода и максимум эффективности, а всё самое “магическое” спрятано внутри самой стандартной библиотеки Python. Экспериментируйте с deque — и почувствуйте разницу!

- Как запрограммировать простую очередь или стек с использованием deque из collections.
- Как запрограммировать простую очередь или стек с использованием deque из collections.

Привет, друзья! С вами Иван, и сегодня я расскажу о мощном модуле shutil, который позволяет управлять файлами и папками в Python буквально в пару строк. Готовы почувствовать себя повелителями файловой системы? Тогда поехали! ### Копирование папок и файлов Если вы хотите скопировать файл — используйте shutil.copy, а вот для папок, в том числе с вложенными подкаталогами, пригодится shutil.copytree:
import shutil

# Копирование папки с содержимым
shutil.copytree('source_folder', 'destination_folder')
Стоит учитывать: destination_folder не должен существовать, иначе будет исключение. А вот просто скопировать файл – элементарно:
shutil.copy('original.txt', 'copy.txt')
### Перемещение объектов Иногда нужно не копировать, а переместить файл или целую папку – тут поможет shutil.move. Причём модуль сам определит, файл вы перемещаете или папку.
shutil.move('old_folder', 'new_folder_location/old_folder')
Путь назначения может быть и на другом диске! Всё работает и для Unix, и для Windows. ### Удаление папок Удалять папки вручную – не вариант, если их много. В этом случае shutil.rmtree сотрёт весь каталог с файлами и подпапками:
shutil.rmtree('unnecessary_folder')
ВАЖНО: Эта команда не спрашивает подтверждения — всё удаляется навсегда, так что лучше дважды проверять путь, чтобы затем не восстанавливать данные слезами. ### Быстрый итого - copy — копирует файлы. - copytree — копирует папки (и их содержимое). - move — перемещает любые объекты файловой системы. - rmtree — безжалостно удаляет целые папки. shutil — незаменимый инструмент для данных админ-скриптов, резервного копирования или просто наведения порядка у себя на диске с помощью Python. Простота и мощь – вот почему я обожаю этот модуль! Увидимся в следующих постах, где разберём ещё больше секретных приемов из арсенала Python!

- Работа с файловой системой: копирование, удаление и перемещение папок с shutil.
- Работа с файловой системой: копирование, удаление и перемещение папок с shutil.