Код на салфетке
2.25K subscribers
751 photos
15 videos
2 files
793 links
Канал для тех, кому интересно программирование на Python и не только.

Сайт: https://pressanybutton.ru/
Чат: https://t.iss.one/+Li2vbxfWo0Q4ZDk6
Заметки автора: @writeanynotes

Реклама и взаимопиар: @Murzyev1995
Сотрудничество и др.: @proDreams
Download Telegram
Видео-разбор вчерашней задачи.

Посмотреть на YouTube.

Будем благодарны, если вы поставите видео лайк и досмотрите его до конца. Спасибо!

Текстовый разбор будет через час 😉
🔥4
Вчерашняя задача про множества оказалась довольно лёгкой для большинства из вас. Её решило 56%, но мы всё равно её разберём.

Код задачи:
a = {1, 2, 3}
b = {4, 2, 1}

print(a.union(b) - a.intersection(b) - a)



Разбор задачи
Создаём две переменные a и b, в которых находятся два множества чисел.

Затем вызываем функцию print, в которой выполняются операции с множествами.

Первый аргумент объединяет (union) множество a с множеством b. В результате получаем новое множество, содержащее уникальные элементы из обоих множеств: {1, 2, 3, 4}.

Второй аргумент находит пересечение (intersection) двух множеств, то есть оставляет только те элементы, которые есть в обоих множествах: {1, 2}.

Третий аргумент — это изначальное множество a: {1, 2, 3}.

В итоге получаем такое выражение:
print({1, 2, 3, 4} - {1, 2} - {1, 2, 3})


Вычитание в случае с множествами выполняет операцию нахождения разницы (difference) между множествами, то есть из левого операнда убираются все элементы, которые есть в правом операнде:
- Сперва мы ищем разницу между {1, 2, 3, 4} и {1, 2}. Это {3, 4}.
- Затем ищем разницу между {3, 4} и {1, 2, 3}. Это {4}.

Правильный ответ: {4}.
🔥7
Найдите ошибку в коде ниже и исчерпывающим образом объясните ее в комментариях.

И давайте без интерпретаторов, а то не интересно!

#python #код_на_салфетке #найди_ошибку
🔥4
Оглавление со ссылками на задачи "Что выведет этот код?".

1. ЗадачаРазбор
2. ЗадачаРазборВидео
3. ЗадачаРазборВидео
4. ЗадачаРазбор
5. ЗадачаРазбор
6. ЗадачаРазборВидео
7. ЗадачаРазбор
8. ЗадачаРазбор
9. ЗадачаРазбор
10. ЗадачаРазбор
11. ЗадачаРазбор
12. ЗадачаРазборВидео
13. ЗадачаРазбор
14. ЗадачаРазбор
15. ЗадачаРазбор
16. ЗадачаРазбор
17. ЗадачаРазбор
18. ЗадачаРазбор
19. ЗадачаРазбор
20. ЗадачаРазбор
21. ЗадачаРазбор
22. ЗадачаРазбор
23. ЗадачаРазбор
24. ЗадачаРазбор
25. ЗадачаРазбор
26. ЗадачаРазборВидео
27. ЗадачаРазборВидео
28. ЗадачаРазборВидео
29. ЗадачаРазборВидео
30. ЗадачаРазборВидео
31. ЗадачаРазборВидео
32. ЗадачаРазборВидео
33. ЗадачаРазбор
34. ЗадачаРазборВидео
35. ЗадачаРазборВидео
36. ЗадачаРазбор
37. ЗадачаРазбор
38. ЗадачаРазбор
🔥5
Оглавление со ссылками на задачи "Найди ошибку в коде".

1. ЗадачаРазбор
2. ЗадачаРазбор
3. ЗадачаРазборВидео
4. ЗадачаРазборВидео
5. ЗадачаРазбор
🔥5
Оглавление для серии постов рубрики "Сравнение Python и C".

Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.

1. Сравнение типизации Python и C
2. Сравнение интерпретатора Python и компилятора C
3. Сравнение array C и list Python
4. Где применяются Python и C/C++ (часть 1)
5. Сравнение hash map С/C++ с dict Python (часть 1)
6. Сравнение hash map С и C++ с dict Python (часть 2)
🔥5👍2
Приветствую!

В длинных постах можно запутаться поэтому, собираю воедино всё, что есть на данный момент.


Оглавления:
Для удобства навигации есть посты с оглавлениями по темам:

"Сайт на Django"
"Telegram-бот на AIOgram3"
"Применение Docker"
"Полезные инструменты"
"Путь в IT."
"Код в мешке"
"Boosty эксклюзив"
"Сравнение Python и C"

Задачи "Что выведет этот код?"
Задачи "Найди ошибку в коде"


Ресурсы канала:

Уютный и немного безумный чат канала.
Бот с материалами к постам
Сайт со всеми постами
Канал в Dzen
Сообщество в VK


Поддержка.

Если вам нравится канал и выходящий материал, поделитесь ссылкой с людьми, кому это тоже может быть интересно.

Также поддержать канал можно:
Подпиской или донатом на Boosty.

Донатом в нашем Telegram-боте.
Отправив донат в DonationAlerts.

Или внеся сайт в исключения вашего блокировщика рекламы.
🔥6👍1
Вчера мы опубликовали пятую задачу на поиск ошибки в коде. Верное решение в комментариях написал Oleg Malakhov.

Код задачи:
user_input = "login password"
user_input = user_input.split()
password, login = user_input.pop(), user_input

credentials = {login: password}

print(credentials)


Разбор задачи.
Создаём переменную user_input, в которую помещаем строку "login password".

Затем в переменную user_input при помощи строкового метода .split() помещаем список из двух строк ["login", "password"].

Далее в две переменные password и login помещаем следующее:
- В переменную password помещаем результат работы метода .pop(), удаляющего и возвращающего последний элемент списка.
- В переменную login помещаем то, что находится в переменной user_input, а именно список с единственным элементом - ["login"]

После этого создаём переменную credentials и инициализируем в ней словарь, используя переменные login и password в качестве ключа и значения, соотвественно.

В конце вызываем функцию print(), которой распечатываем словарь из переменной credentials.

Почему ошибка?
Ошибка заключается в передаче списка в качестве ключа для словаря. Ключом словаря может быть только хешируемые типы данных. Подробнее об этом рассказано в разборе 7-й задачи.

Как можно исправить?
Исправить можно двумя способами:

Первый способ — это распаковать список с одним элементом в переменную:
password, login = user_input.pop(), *user_input


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

Второй способ — это явно указать на то, что нам нужен первый(нулевой) элемент:
password, login = user_input.pop(), user_input[0]


В таком случае гарантированно вернётся первый элемент из списка, а будет он тем, который нужен или нет, — это уже другой вопрос.
🔥4
Django 43. Подключаем Celery и Redis для фоновой отправки почты
Автор: Иван Ашихмин

В этом посте мы добавим поддержку Celery и Redis в наш Django-проект, чтобы отправлять электронную почту в фоновом режиме.


Читать пост в Telegram

Файлы к посту, можно получить в боте по коду: 336244

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Docker #PostgreSQL #Django #Windows #Linux #Код_на_салфетке #Celery #Гайд #Docker_compose #Redis #Celery_Worker #yaml
🔥6
📚Спешим порекомендовать любопытный канал, который ведет опытный разработчик, активный спикер и организатор конференций по Python, ментор и просто интересный автор Евгений Афонасьев.

🤓 Среди постов – отчеты и видео с конференций, воспоминания об опыте разработки в разных компаниях, рекомендации интересных библиотек и многое другое. Встречаются промокоды и розыгрыши билетов на конференции.

Рекомендуем!
🔥3
Приветствуем!

Продолжаем рубрику "Вопросы и ответы"!

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

Ровно через неделю мы подготовим пост с ответами на появившиеся вопросы.

Также у нас есть чат, в котором тоже можно задавать вопросы и просто общаться)
🔥5
Записали разбор задачи со вторника "Найди ошибку в Python коде №5"!

Ссылка на задачу.

Ссылка на видео.

Будем благодарны, если вы поставите видео лайк и досмотрите его до конца. Спасибо!
🔥3
Приветствую!

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

Фильм: Двухсотлетний человек

Год: 1999

Начало нового тысячелетия; происходит прорыв в глобальных технологиях. Люди уже не заводят дома собак и кошек: они покупают себе роботов. Вот и семья Мартинов приобретает себе необычный подарок: робота нового поколения NDR-114, а в обычной жизни просто Эндрю. Купленный как прибор, запрограммированный для выполнения домашней работы, Эндрю вдруг начинает испытывать странные ощущения. Он еще не знает, что это называется чувствами.

https://www.sspoisk.ru/film/7640/

Приятного просмотра!
🔥3
В посте "AIOgram3 13. Прогноз погоды в боте - OpenWeatherMap" мы с вами добавили прогноз погоды к боту, просто так, что бы был. С тех пор "много воды утекло" и я хочу осовременить код, добавить валидацию получаемых данных и удобный к ним доступ.

Без лишних слов:

1. Создаём Pydantic-модели на основе полученного JSON:
class WeatherDescription(BaseModel):  
description: str


class WeatherMainInfo(BaseModel):
temp: float
feels_like: float
pressure: float
humidity: int


class WeatherWindInfo(BaseModel):
speed: float


class WeatherData(BaseModel):
main: WeatherMainInfo
wind: WeatherWindInfo
rain: dict | None = None
snow: dict | None = None
weather: list[WeatherDescription]


class WeatherResponse(BaseModel):
count: int
list: list[WeatherData]


2. В функции request_weather() создаём объект модели:
# ...код функции
if result.get("count"):
weather_response = WeatherResponse(**result)
return generate_result(weather_response, city)


3. Переписываем функцию generate_result() для получения данных из объекта модели:
def generate_result(data: WeatherResponse, city: str) -> str:  
weather_data = data.list[0]
rain = ("ожидается", "не ожидается")[weather_data.rain is None]
snow = ("ожидается", "не ожидается")[weather_data.snow is None]
return f"""
<b>Прогноз погоды в городе {city}</b>

Сейчас температура {weather_data.main.temp}°C
Ощущается как {weather_data.main.feels_like}°
⛅️{weather_data.weather[0].description}⛅️
💨 Скорость ветра {weather_data.wind.speed}м/с 💨
Давление {weather_data.main.pressure * 0.75} мм рт.ст.
Влажность {weather_data.main.humidity}%
💦 Дождь {rain}
❄️ Снег {snow}
"""


Полный код бота доступен в нашем репозитории для подписчиков Boosty.
🔥5👍2
Недавно познакомились с автором оригинального канала IT-Хасслер. Дима – веб-разработчик с большим стажем, всю свою карьеру активно работает над собственными пет-проектами, поэтому практикует абсолютно всё: и бэк (PHP, Node.JS, Python), и фронт (Angular, React, React Native), и даже UI/UX-дизайн.

У себя он делится собственным опытом, ошибками и лайфхаками, к примеру:

⚰️ Как он потерял два своих успешных проекта: один и второй

🧎Как лишился работы, пробовал монетизировать опыт, но ничего не получилось

😎 Как его пытались развести, но вместо этого он получил 700р

Очень рекомендуем подписаться, таких каналов сейчас крайне мало 👉 IT-Хасслер
🔥4
Django 44. Отправка электронной почты в фоновом режиме
Автор: Иван Ашихмин

В этом посте мы используем подключенный в прошлом посте Celery для отправки письма со ссылкой подтверждения регистрации в фоновом режиме.


Читать пост в Telegram

Файлы к посту, можно получить в боте по коду: 413358

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Django #Гайды #Представления #Код_на_салфетке #Celery #Redis #Шаблоны #Отправка_почты
🔥5
Привет всем!

23-го июля исполнилось ровно два года как я поступил в GeekBrains и пол года как выпустился из него. Именно с этого момента можно считать начало пути по изучению программирования, поскольку до этого были лишь мелкие, лишенные мотивации попытки.

За два года изменилось многое. По началу были прям амбиции, что вот вот, спустя всего пол года обучения, не зная ровным счётом ничего, меня возьмут работать если не в Google, то как минимум в Яндекс.

Реальность куда прозаичнее - опыт уже есть, а стабильной работы нет. Делаешь проекты, много знаешь и умеешь учиться новому, но в глазах работодателей ты зелёный джун, а им нужен "over qualified" специалист по цене интерна. И я такой не один.

Чтож, как говориться "нет худа без добра". Есть и куда двигаться, развиваться и к чему стремиться.
🔥5😭3