Если работаешь над несколькими проектами — всегда используй
venv!python -m venv venv
source venv/bin/activate # для Linux/macOS
venv\Scripts\activate # для Windows
Это изолирует библиотеки и избавит от конфликтов между проектами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодняшний "заказчик" сразу написал в личку Telegram. Предложение на бирже в основном однотипное: массовая скупка ботов/скриптов, ТЗ не соответствовало заказу на Kwork.
В сообщениях виднеется попытка манипуляции. Одна из таких звучит примерно как: Я тебя выбрал из 40 других, тебе повезло
Обыкновенный "чёрный" спам-бизнес: массовое добавление тг пользователей в каналы/группы и реклама либо СКАМ проектов, либо чего похуже.
#ПроСКАМ #Фриланс
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯6 5 3
👋 Сегодня разберём интересный и очень практичный кейс по ООП — мини-боёвку, где персонажи разных рас сражаются между собой. Код работает как маленькая RPG: есть маги, эльфы, гномы, орки, люди — и у каждого свой стиль атаки, защита и реплики.
Почему этот проект полезен?
Потому что он показывает реальное применение ООП, а не абстрактные «фрукты» и «животных».
Здесь задействованы:
Проект запускается через интерактивный выбор персонажей — после чего все герои поочерёдно нападают друг на друга, пока не останется один победитель.
В этом посте разберём основу — базовый класс Hero и архитектуру проекта.
Hero — это фундамент. Он задаёт общую структуру для всех персонажей.
name — имя героя
type — раса
hp — текущее здоровье
hp_default — максимальное здоровье (для отображения)
damage — базовый урон
id — уникальный ID (нужен, чтобы герой не атаковал сам себя)
Дальше идут методы, которые должны существовать у каждого героя, но в базовом классе они не реализованы:
☀️ attack☀️ set_damage☀️ speak
То есть базовый класс — чистый шаблон, который говорит:
"Вот что должен уметь любой герой. А как именно — решай в дочернем классе."
Это и есть идея полиморфизма.
Потому что дальше все расы (маг, эльф, орк…) наследуют от Hero и просто переопределяют нужное поведение:
Каждый класс — своя мини-механика.
В следующем посте мы разберём каждый тип персонажа и их уникальные способности — это самая «вкусная» часть проекта❗️
А после этого, в посте №3 — посмотрим, как работает сама битва и игровой цикл.
Продолжение скоро!👨💻
#КейсыPython #ООП #CodeShadow
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4 4 3
📚 Микро-скрипт: автоматическая нумерация файлов
Если в папке куча файлов, добавь им номера в названиях:
Отлично подходит для сортировки фотографий, документов или лабораторных.
Если в папке куча файлов, добавь им номера в названиях:
code
import os
for i, file in enumerate(os.listdir(".")):
os.rename(file, f"{i+1}_{file}")
Отлично подходит для сортировки фотографий, документов или лабораторных.
Media is too big
VIEW IN TELEGRAM
Кейс: РПГ с применением ООП Python.
Завтра выходит пост с исходником игры, а сегодня в 20:00 по МСК выйдет пост по библиотеке rich! Ставьте на заметку✔️
Завтра выходит пост с исходником игры, а сегодня в 20:00 по МСК выйдет пост по библиотеке rich! Ставьте на заметку
Please open Telegram to view this post
VIEW IN TELEGRAM
Если ты делаешь консольный проект, ты наверняка сталкивался с тем, что он выглядит… скучно.
Текст выводится сухо, всё статично, атмосферы — ноль.
Когда я делал свою мини-RPG, хотелось добавить хоть немного "магии":💃
чтобы битва ощущалась, а не просто печаталась как список чисел.
И тут на сцену выходит rich — библиотека, которая превращает обычную консоль в стильный интерфейс почти без усилий.
В моём проекте она отвечает за два эффекта:
1. Анимация боя — прогресс-бар, который создаёт ощущение хода битвы
2. Анимация удаления павших героев — небольшая «чистка поля», тоже через прогресс-бар
И самое главное — rich позволяет делать это буквально в несколько строк.
Вот пример:
from rich.progress import Progress
def start_animation():
with Progress() as battle:
task = battle.add_task("[red]Идёт битва...", total=5)
while not battle.finished:
battle.update(task, advance=0.3)
Это всё.
И уже есть красивая анимация!
──────────────────
В файле animation_battle.py два ключевых метода:
Эти анимации запускаются прямо посреди игрового цикла, и благодаря им:
Rich — это как спецэффекты в кино: сюжет тот же, но ощущения другие.
Если ты работаешь с консолью и хочешь сделать интерфейс:
💻 красивым💻 читаемым💻 выразительным💻 динамичным
…rich — идеальный вариант.
Это один из тех инструментов, которые дают много «вау-эффекта» при минимуме кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем наше погружение в ООП-битву ⚔️
В прошлом посте мы рассмотрели основу — базовый класс Hero.
Теперь самое интересное — классы персонажей, каждый со своим характером и механикой.
Маг — самый «умный» герой. Он не просто атакует, он ещё кастует защиту, которая уменьшает входящий урон.
Уникальное в классе:
Маг — сбалансированный герой: всегда бьёт одинаково, но защищается непредсказуемо.
🧝 Эльф (Elf)
Эльф — герой точности. Он может нанести критический урон, если ему «повезёт».
Уникальное:
Эльф — герой про «когда повезёт — больно».
🪓 Гном (Dwarf)
Гном — настоящий танк. Он может… получить дополнительный урон.
Да-да, у гнома пассивка работает против гнома.
Passive ≠ buff
Passive = иногда усиливает входящий урон
Но иногда именно этот «каменный рандом» делает игру интересной.
Человек — самый простой и честный герой. Но у него есть козырь: уклонение.
Орк живёт ради ярости.
У него есть шанс получить +2…+10 к своей атаке.
Если ярость не прокнула — обычный удар.
Орк — герой про минимальную стабильность и максимальный риск.
Очень важный навык ООП-разработчика — уметь создавать дерево наследования, где каждый класс — самостоятельный персонаж с поведением.
Здесь:
В скором будущем мы разберём как работает игровой цикл, система атак, выживание, удаление павших и подключение анимаций из файла animation_battle.py.
Продолжение очень скоро ⚔️
ОСНОВНОЙ КОД ИГРЫ
#КейсыPython #ООП #CodeShadow
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4 3 2 1 1
💬 Мотивация: цени прогресс, а не результат
Ты не обязан писать идеальный код с первого раза. Главное — каждый день понимать Python чуть лучше, чем вчера.
И если сегодня ты понял, как работаетlambda— это уже шаг вперёд.
Сегодня посмотрим, как герои атакуют, умирают, удаляются из игры и как всё это двигает основной игровой цикл.
Главная функция — main_game().
Она делает 4 вещи:
1. спрашивает у пользователя, сколько будет героев
2. создаёт героев выбранных типов
3. запускает цикл боя
4. выводит победителя
После создания персонажей начинается:
Игровой цикл:
1. Все персонажи атакуют друг друга по очереди
2. Мы проверяем, кто ещё жив
3. Убитые удаляются
4. Если остался один — он победил
⚔️ Функция start_game
Здесь происходит сама битва:
1. герой выбирает цель
2. вызывает свой attack()
3. цель вызывает свой set_damage()
Благодаря полиморфизму:
То есть одна и та же строка кода работает по-разному в зависимости от типа героя.
Это и есть мощь ООП.
После раунда вызывается:
clear_death()
Это анимация, созданная в файле animation_battle.py, при помощи библиотеки rich.
Она показывает прогресс-бар «чистки трупов» — это просто эстетика, но очень добавляет атмосферы.
После анимации:
if death.hp <= 0:
del list_heroes[index]
Герой исчезает из списка — он официально мёртв.
Когда в списке остаётся 1 герой:
Победа за ... !
Вот и всё — мини-боевая система завершена.
☀️ понимание архитектуры в стиле «каждый объект — самостоятельный»☀️ работу с полиморфизмом☀️ обработку событий и случайностей☀️ построение игрового цикла☀️ работу с внешними файлами и анимациями☀️ практику структурирования большого кода
Это отличный учебный кейс, который можно расширять:
#КейсыPython #ООП #CodeShadow
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Python: от новичка до профи вместе с сообществом!
Привет-привет! 👋 Сегодня поговорим про удивительный мир Python — простого, мощного и невероятно популярного языка программирования. Ты уже слышал, что Python любят разработчики всего мира? 😉
Почему именно Python?
✅ Легкий синтаксис — писать код приятно и удобно (даже котики понимают!)
✅ Подходит для множества задач: веб-разработка, машинное обучение, автоматизация, наука о данных... В общем, всё-всё-всё!
✅ Большое активное сообщество, которое поможет тебе разобраться даже в самых сложных вопросах ☺️
🌟 С чего начать изучение?
✨ Онлайн-курсы и туториалы (например, Codecademy, Coursera)
📚 Книги («Автоматизация рутинных задач», «Изучаем Python»)
🎯 Практика, практика и еще раз практика!
🔥 Где найти помощь и поддержку?
💬 Форумы вроде StackOverflow и Reddit
🖥 Сообщества в соцсетях (Telegram-группы, чаты Discord)
🧑🤝🧑 Общение с единомышленниками на хакатонах и митапах
🗣 Какое будущее у Python?
Несмотря на конкуренцию с JavaScript, Go и Rust, Python уверенно держится среди лидеров. Его используют гиганты IT-индустрии типа Google, Netflix, Instagram и Яндекс. 🛠
Так что вперед, друзья! Не бойтесь экспериментировать, учиться новому и развиваться дальше! А мы будем рядом, чтобы поддержать вас на пути к успеху! 🚀
#python #it #программирование #обучение #сообщество
Привет-привет! 👋 Сегодня поговорим про удивительный мир Python — простого, мощного и невероятно популярного языка программирования. Ты уже слышал, что Python любят разработчики всего мира? 😉
Почему именно Python?
✅ Легкий синтаксис — писать код приятно и удобно (даже котики понимают!)
✅ Подходит для множества задач: веб-разработка, машинное обучение, автоматизация, наука о данных... В общем, всё-всё-всё!
✅ Большое активное сообщество, которое поможет тебе разобраться даже в самых сложных вопросах ☺️
🌟 С чего начать изучение?
✨ Онлайн-курсы и туториалы (например, Codecademy, Coursera)
📚 Книги («Автоматизация рутинных задач», «Изучаем Python»)
🎯 Практика, практика и еще раз практика!
🔥 Где найти помощь и поддержку?
💬 Форумы вроде StackOverflow и Reddit
🖥 Сообщества в соцсетях (Telegram-группы, чаты Discord)
🧑🤝🧑 Общение с единомышленниками на хакатонах и митапах
🗣 Какое будущее у Python?
Несмотря на конкуренцию с JavaScript, Go и Rust, Python уверенно держится среди лидеров. Его используют гиганты IT-индустрии типа Google, Netflix, Instagram и Яндекс. 🛠
Так что вперед, друзья! Не бойтесь экспериментировать, учиться новому и развиваться дальше! А мы будем рядом, чтобы поддержать вас на пути к успеху! 🚀
#python #it #программирование #обучение #сообщество
👏6 2 2
Forwarded from INNOPROG — здесь об IT
Часто у начинающих специалистов возникает вопрос: «Вот я отучусь на программиста, и что тогда?»
или «Как мне сразу применить свои знания и монетизировать их?».
Сегодня разберем все по полочкам вместе с преподавателем нашей школы Артемием!
Если эти вопросы вам хоть немного близки, то этот пост для вас! 🙌
Учёба, сессии, ЕГЭ, практикумы… всё вокруг твердит, что без этого никуда. Говорят, что у человека нет перспектив, если он не сможет отучиться...
Эти примеры показывают, что образование приносит пользу только тогда, когда начинаешь видеть в нём смысл.
Вовсе необязательно быть Марком или Ларри, чтобы стать успешным.
🧐А что может стать для вас стартом?
Для большинства таких начинающих есть фриланс-биржи, где можно получить свой первый коммерческий проект или заказ на написание скрипта для автоматизации.
Из популярных бирж в России и СНГ –Kwork, YouDo, даже Авито. Вам достаточно зарегистрироваться, заполнить профиль и разместить свои услуги.
На биржах можно искать заказы, которые публикуют покупатели. Да, конкуренция есть, но со временем вы сможете собрать отзывы и приобрести важный опыт.
👇Пишите в комментариях, если хотите получить практикум по составлению качественного профиля на бирже!
или «Как мне сразу применить свои знания и монетизировать их?».
Сегодня разберем все по полочкам вместе с преподавателем нашей школы Артемием!
Если эти вопросы вам хоть немного близки, то этот пост для вас! 🙌
Учёба, сессии, ЕГЭ, практикумы… всё вокруг твердит, что без этого никуда. Говорят, что у человека нет перспектив, если он не сможет отучиться...
Ларри Пейдж и Сергей Брин (основатели Google) создавали своё дело ещё учась в университете. Марк Цукерберг, основатель Facebook, разработал социальную сеть, будучи студентом, в своей комнате в общежитии, а потом бросил Гарвардский университет.
Эти примеры показывают, что образование приносит пользу только тогда, когда начинаешь видеть в нём смысл.
Вовсе необязательно быть Марком или Ларри, чтобы стать успешным.
Достаточно применять свои навыки прямо сейчас, без ожидания «идеального» или «правильного» момента.
🧐А что может стать для вас стартом?
Для большинства таких начинающих есть фриланс-биржи, где можно получить свой первый коммерческий проект или заказ на написание скрипта для автоматизации.
Из популярных бирж в России и СНГ –
На биржах можно искать заказы, которые публикуют покупатели. Да, конкуренция есть, но со временем вы сможете собрать отзывы и приобрести важный опыт.
👇Пишите в комментариях, если хотите получить практикум по составлению качественного профиля на бирже!
🔥 Приветствуем всех любителей программирования! 💻
✨ В нашем канале «CodeShadow | Кодим вместе» ты найдешь:
✅ Полезный код и готовые решения для твоих проектов
⚡ Обучение Python от начинающих до профи
🎯 Буткемпы интересных проектов, где прокачаешь скиллы
😄 Веселые истории и интересные факты про IT
👉 Подписывайся — стань частью нашего дружного сообщества программистов!
#codeshadow #python #программирование #it #разработка
✨ В нашем канале «CodeShadow | Кодим вместе» ты найдешь:
✅ Полезный код и готовые решения для твоих проектов
⚡ Обучение Python от начинающих до профи
🎯 Буткемпы интересных проектов, где прокачаешь скиллы
😄 Веселые истории и интересные факты про IT
👉 Подписывайся — стань частью нашего дружного сообщества программистов!
#codeshadow #python #программирование #it #разработка
👀3 2
Начинаем: создаём простейшего Telegram-бота, который умеет отправлять сообщения
🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠
Начнём максимально просто — создадим бота, который может отправить сообщение в твой канал.
Что понадобится:
— токен бота (через BotFather)
— Python
— библиотека aiogram
Вот базовый шаблон:
Продолжение скоро🔥
Привет!👋
Сегодня покажу мини-кейс из трёх частей: мы соберём самый простой автопостер для Telegram, а в конце добавим нейросеть GigaChat, чтобы бот сам генерировал посты.
Начнём максимально просто — создадим бота, который может отправить сообщение в твой канал.
Что понадобится:
— токен бота (через BotFather)
— Python
— библиотека aiogram
Вот базовый шаблон:
from aiogram import Bot, Dispatcher
import asyncio
TOKEN = "Твой_токен_бота"
bot = Bot(token=TOKEN)
dp = Dispatcher()
CHANNEL_ID = "@название_канала"
async def simple_post():
await bot.send_message(CHANNEL_ID, "Бот работает! 🚀")
async def main():
await simple_post()
if __name__ == "__main__":
asyncio.run(main())
Запускаешь — и бот сам публикует сообщение.
Это основа будущего автопостера.🥃
В следующем посте сделаем очередь постов, возможность читать их из файла и публиковать автоматически.
Продолжение скоро
Please open Telegram to view this post
VIEW IN TELEGRAM
Делаем автопостер: очередь постов + файл с контентом
🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠
Теперь превращаем нашего бота в простой автопостер.
👨💻 Идея такая:
1. У нас есть файл posts.txt
2. Посты разделены строкой *****
3. Бот по очереди публикует каждый пост
4. Между публикациями — пауза
Создаём файл:
Теперь код:
Теперь превращаем нашего бота в простой автопостер.
1. У нас есть файл posts.txt
2. Посты разделены строкой *****
3. Бот по очереди публикует каждый пост
4. Между публикациями — пауза
Создаём файл:
Первый пост
*****
Второй пост
*****
Третий пост
Теперь код:
import asyncio
from aiogram import Bot, Dispatcher
TOKEN = "Твой_токен"
bot = Bot(token=TOKEN)
dp = Dispatcher()
CHANNEL_ID = "@твой_канал"
POST_INTERVAL = 60 # интервал между постами
def load_posts():
with open("posts.txt", "r", encoding="utf-8") as f:
content = f.read()
return [p.strip() for p in content.split("*****") if p.strip()]
async def auto_post():
posts = load_posts()
for post in posts:
await bot.send_message(CHANNEL_ID, post)
await asyncio.sleep(POST_INTERVAL)
async def main():
await auto_post()
if __name__ == "__main__":
asyncio.run(main())
Теперь бот сам по очереди отправляет сообщения из файла.
В следующем посте подключим GigaChat — бот будет генерировать новые посты, если файл закончился✨
Please open Telegram to view this post
VIEW IN TELEGRAM
Иногда нам нужно быстро проверить работу какого-то участка кода — есть ли повторяющиеся элементы в списке, корректность строковых значений и многое другое. В таком случае полезно иметь небольшой универсальный скрипт, выполняющий частозатребованные операции.
Сегодня покажу простой пример функции, проверяющий наличие дубликатов в списке:
python
def has_duplicates(lst):
"""
Проверяет список на наличие дублирующихся элементов.
Параметры:
lst (list): Список для проверки.
Возвращает:
bool: True, если дубликаты найдены, False иначе.
"""
return len(lst) != len(set(lst))
Как работает этот код?
Мы передаем функцию has_duplicates любой список (lst), который хотим проверить.
Затем функция преобразует список в set (тип данных множества), который автоматически удаляет все дублирующие значения.
Если длина исходного списка отличается от длины полученного множества, значит, дубликаты были обнаружены.
Пример использования:
python
my_list = [1, 2, 3, 4, 5]
print(has_duplicates(my_list)) # Выведет False
my_list_with_dups = [1, 2, 3, 4, 4]
print(has_duplicates(my_list_with_dups)) # Выведет True
Этот простой подход помогает сэкономить время при проверке списков на дублирование!
✨ Используй такие полезные мелочи в своих проектах! ✨
Please open Telegram to view this post
VIEW IN TELEGRAM
Подключаем GigaChat: бот сам придумывает посты, если очередь пустая
🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠 🔠
Используем библиотеку:
Настройка GigaChat:👨💻
Интеграция в автопостер:
Что теперь умеет бот:
Это минимальный, но рабочий кейс автопостера с нейросетью.🤩
Теперь самое интересное:
научим автопостер генерировать новые посты через GigaChat, если в файле посты закончились.
Используем библиотеку:
from gigachat import GigaChat
Настройка GigaChat:
from gigachat import GigaChat
giga = GigaChat(
credentials="Твой_API_ключ",
verify_ssl_certs=False,
model="GigaChat-2-Max"
)
def gen_post():
prompt = "Создай интересный и полезный пост про Python. Пиши легко и человечно."
response = giga.chat(prompt)
return response.choices[0].message.content.strip()
Интеграция в автопостер:
async def auto_post():
posts = load_posts()
while True:
if posts:
post = posts.pop(0)
else:
post = gen_post() # Генерация нового поста нейросетью
await bot.send_message(CHANNEL_ID, post)
await asyncio.sleep(POST_INTERVAL)
Что теперь умеет бот:
✔️ публикует посты из файла
✔️ если файл пуст — сам пишет статью
✔️ работает в бесконечном цикле
✔️ полностью автономен
Это минимальный, но рабочий кейс автопостера с нейросетью.
Please open Telegram to view this post
VIEW IN TELEGRAM