Сообщество - Программирование на python

Программирование на python

929 постов 11 940 подписчиков

Популярные теги в сообществе:

5

Buckshot roulette на питоне

Прикольная темка, да?

Пока что это первая версия. В планах добавить интерфейс и предметы-бонусы. Ну и раунды, но это совсем легко. Раньше не делал ничего такого большого(относительно меня), поэтому я доволен, что оно работает. Без косяков не обошлось. Бот под именем "Игрок 4" как-то восстал из мертвых и захотел угробить первого. Если захотите попробовать этот код у себя, то предварительно в терминале напишите "pip install termcolor"

Python3

Код(молчите про русские названия🤫):

import random

from random import choice

from time import sleep

from termcolor import colored

# предметы=["шоколад", "адреналин", "инвертер", "лупа"]

# import flet as ft

# предметыуигроков={}

количествохп={1:3,2:3,3:3,4:3}

игроки=[1,2,3,4]

next_move=choice([1,2,3,4])

цель=0

def ход():

global next_move

next_move+=1

if next_move not in игроки:

next_move+=1

if next_move>4:

next_move=1

while next_move not in игроки:

next_move+=1

if next_move>4:

next_move=1

while next_move not in игроки:

next_move+=1

if next_move==3:

print(colored("Ходит игрок 3", 'green'))

sleep(1)

игрок()

if next_move!=3:

print(colored(f"Ходит игрок {next_move}", 'blue'))

sleep(1)

боты()

def патроны():

global next_move

if цель in игроки:

патрон=choice(['боевой','боевой','холостой'])

if next_move!=3:

print(colored(f" Игрок {next_move} выбирает игрока {цель}, патрон {патрон}", 'yellow'))

sleep(1)

if next_move==3:

print(colored(f" Игрок 3 выбирает игрока {цель}, патрон {патрон}", 'yellow'))

sleep(1)

if патрон=="боевой":

количествохп[цель]-=1

if количествохп[цель]==0:

print(colored(f"\n Игрок {цель} выбыл\n", 'grey'))

del количествохп[цель]

игроки.remove(цель)

print(f' {количествохп}\n')

sleep(1)

if патрон=='холостой':

print(f' {количествохп}\n')

if цель==next_move:

next_move-=1

def боты():

global цель

цель=choice(игроки)

патроны()

sleep(1.5)

def игрок():

global цель

цель=int(input(colored(' Кого пристрелить?\n ', 'red')))

while цель not in игроки:

цель=int(input(colored(' Введи цель ещё раз\n ', 'light_red')))

патроны()

sleep(1.5)

while True:

ход()

if len(игроки)==1:

print(colored(f'Победил игрок {игроки[0]}', 'magenta'))

exit()

Эх блин, Пикабу убрал табы. Теперь каша какая-то (

Показать полностью

Попытка написать бота для отеля: как я наступил на первые грабли


Решил я тут написать прототип приложения для отелей с обычным, незамысловатым функционалом: список услуг, меню ресторана, админка — ну, думаю, простое же! Сел, начал кодить... И застрял на два дня. 🫠

Оказалось, без чёткого плана я как слепой котёнок: тыкаюсь в код, а что хочу получить — сам не знаю. Решил сменить тактику: бросил код и взялся за диаграммы. Попробовал рисовать структуру в одном из редакторов — но там надо было полдня разбираться, как линии рисовать.

В итоге вернулся к дедовскому методу: листок бумаги и ручка. Накалякал интерфейс, расписал функционал, стрелочками переходы между экранами показал. Теперь сижу, думаю: «А куда эти 150 файлов раскидать? Как они друг с другом общаться будут?».

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

P.S. Если интересно, каково вообще новичку сейчас в айти - вот мой канал 👀

Показать полностью
23

Роадмап изучения Python

Делюсь своим планом изучения Python и смежных технологий. Возможно, кому-то пригодится.

1. Базовый уровень

– Синтаксис Python: переменные, условия, циклы, функции, исключения.
– ООП: классы, наследование, инкапсуляция, полиморфизм.
– Работа с файлами: чтение и запись .txt, .json, .xml.
– Алгоритмы и структуры данных: сортировки, стек, очередь, дерево, графы.
– Шаблоны проектирования: базовые принципы написания поддерживаемого кода.

2. Асинхронное и синхронное программирование

– Разница между потоками, процессами и асинхронностью.
– Библиотеки asyncio, aiohttp.
– Когда использовать асинхронный код.

3. Backend-разработка

– Фреймворки для ботов: Aiogram, Telethon.
– Парсинг и автоматизация: requests, BeautifulSoup, Scrapy, Selenium.
– REST API: запросы GET, POST, авторизация, работа с API.
– Веб-фреймворки: FastAPI, Flask.

4. Работа с базами данных

– SQL: PostgreSQL, SQLite.
– NoSQL: Redis, MongoDB.
– ORM: SQLAlchemy.

5. Деплой и продакшн

– Облачные платформы: AWS, DigitalOcean, Render.
– Docker: контейнеризация приложений.
– CI/CD: автоматизация развертывания.

Кому интересно - присоединяйтесь к моему каналу, рассказываю и показываю каково ныне новичку в айти.

Показать полностью
5

Итераторы: как коты, которые всегда знают, где их миска с едой

Итак, друзья, сегодня мы поговорим о магии итераторов в Python. Если вы только начинаете программировать, то, возможно, слово "итератор" звучит для вас как что-то из мира магии или, может быть, как имя кота из фантастического романа. Но на самом деле итераторы — это просто удобный способ "перебирать" что-то, как кот перебирает лапами, чтобы найти самое мягкое место на диване. 🛋

Давайте разберёмся, что это такое, как это работает и почему это так важно.

О чём речь?

Итераторы — это объекты, которые позволяют вам проходить по элементам коллекции (например, списка, строки или словаря) по одному за раз. Это как если бы вы кормили кота, давая ему по одному кусочку корма, а не высыпали всю пачку сразу. 🐈

Как это работает?

Итераторы в Python работают благодаря двум магическим методам: __iter__() и __next__().

__iter__() делает объект "итерируемым" — это как если бы вы сказали коту: "Эй, вот твоя миска, иди сюда!"

__next__() возвращает следующий элемент из коллекции — это как если бы вы давали коту по одному кусочку еды из миски.

Когда вы используете цикл for, Python автоматически вызывает эти методы за вас. Но вы можете управлять этим процессом вручную, если хотите.

Пример: создаём своего кота-итератора 🐾

Давайте создадим класс, который будет работать как итератор. Представьте, что у нас есть кот, который ест из миски, но только по одному кусочку за раз.

🐾 Кот доволен, а мы научились создавать итераторы!

Зачем это нужно?

Итераторы полезны, когда вы работаете с большими наборами данных или хотите лениво (lazy) обрабатывать элементы. Например:

🐾 Чтение больших файлов: Вместо того чтобы загружать весь файл в память, вы можете читать его построчно.

🐾 Генерация данных на лету: Например, бесконечные последовательности чисел.

🐾 Оптимизация памяти: Итераторы не хранят все элементы в памяти, а создают их по мере необходимости.

Пример: бесконечный генератор чисел (или бесконечная миска корма)

🐾 Кот может есть бесконечно, но мы ограничили его аппетит.

Историческая справка

Итераторы появились в Python 2.2, когда разработчики решили сделать работу с коллекциями более удобной. До этого приходилось использовать индексы и вручную управлять процессом. Итераторы стали частью Python, чтобы сделать код более читаемым и "питоничным". 🐍

Примеры использования в реальной жизни

📂 Чтение файлов:

🧮 Генерация чисел:

🛒 Обход словаря:

Итераторы — это как коты: они делают вашу жизнь проще, но требуют немного внимания и понимания. 🐾 Они позволяют вам работать с данными эффективно и элегантно. Попробуйте создать свои итераторы и поэкспериментировать с ними! Философский вопрос: генератор является частным случаем итератора или наоборот? :)

А на канале https://t.me/pytonism мы как-раз сейчас рассматриваем генераторы списков (List Comprehensions).

Показать полностью 5
9

Лямбда-функции: как котик ловит мышку

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

О чём речь?

Лямбда-функция — это способ написать функцию в одну строчку. Представь, что ты хочешь дать своему коту команду "лови мышку", но вместо длинного объяснения, как именно это делать, ты просто показываешь пальцем на мышь. Вот так же работает лямбда: коротко, быстро и по делу.

Как работает?

Лямбда-функция — это анонимная функция. Это значит, что у неё нет имени, как у обычных функций, которые мы создаём с помощью def. Она создаётся с помощью ключевого слова lambda, и её можно использовать там, где нужна простая операция.

Синтаксис:

lambda arguments: expression

arguments — это входные данные (например, как корм для кота).

expression — это то, что функция возвращает (например, довольное мурчание кота).

Пример: котик и его любимая еда

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

💡 Объяснение:

  • map применяет лямбда-функцию к каждому элементу списка food.

  • Лямбда берёт длину строки (например, "fish" — 4 буквы) и умножает её на 100 (условные калории).

  • В результате мы получаем список калорий для каждого блюда.

Историческая справка

Лямбда-функции пришли к нам из функционального программирования. Их название происходит от греческой буквы "лямбда" (λ), которая использовалась в математической логике для обозначения анонимных функций. Так что, можно сказать, что лямбда — это древний и мудрый кот, который знает, как делать всё быстро и эффективно. 🐱

Примеры использования в различных ситуациях

🐾 1. Сортировка списка по длине строк:

💡 Объяснение: Лямбда-функция берёт длину каждого слова и использует её для сортировки.

🐾 2. Фильтрация списка:

💡 Объяснение: Лямбда проверяет, делится ли число на 2 без остатка, и оставляет только те, которые подходят.

🐾 3. Комбинация с reduce:

💡 Объяснение: Лямбда берёт два числа, складывает их и передаёт результат дальше.

Когда использовать лямбда, а когда нет?

Лямбда-функции хороши для простых операций, которые можно описать в одну строчку. Но если твоя функция становится сложной, лучше использовать def. Это как с котами: если ты хочешь, чтобы кот просто поймал мышь, достаточно короткой команды. Но если ты хочешь, чтобы он сварил тебе кофе, придётся объяснить подробнее. ☕️

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

А как вам лямбда? Полезно? Напиши в комментариях, где вы уже использовали или планируете использовать лямбда-функции.🐾

Замечу, что на канале https://t.me/pytonism вышла серия постов, подробно раскрывающая тему анонимных функций, с примерами и котиками)

Показать полностью 4
3

Как я борюсь со страхом, что так и не устроюсь в IT1

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

Я не знаю, получится ли у меня. Но вот что помогает не бросить всё прямо сейчас:

1. Я напоминаю себе, почему вообще начал

Даже если IT — сложный путь, альтернатива не лучше. Хочется нормальных условий, роста и интересной работы. Если сдаться, что тогда? Вернуться в прежнюю сферу и жалеть, что не попробовал до конца?

2. Сфокусироваться на том, что в моих руках

Рынок перегрет? Компании заворачивают новичков? Это не то, что я могу изменить. Зато я могу:

Доделать текущий проект.

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

Улучшить портфолио, чтобы выделяться среди других джунов.

3. Не зацикливаться на страхе

Страшно — значит важно. Но если постоянно думать о провале, руки опускаются. Поэтому стараюсь не зависать в мыслях, а просто делать, что могу.

Я ещё не нашёл свою первую работу, но продолжаю учиться и двигаться вперёд. Если тоже учишься и сталкиваешься с такими мыслями, заходи в Telegram — там делюсь своим опытом и тем, как справляюсь.

Показать полностью
Отличная работа, все прочитано!