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

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

Реклама и взаимопиар: @Murzyev1995
Сотрудничество и др.: @proDreams
Download Telegram
Что выведет код с изображения? №36
Anonymous Quiz
25%
3
22%
4
9%
5
28%
TypeError
16%
6
🔥5
Сегодня разберём вчерашнюю задачу, где нам нужно найти пользователей сайта. Верно ответили 17% из 18-ти человек.


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


Условие:
- Первый список содержит идентификаторы пользователей, которые заходили на сайт в первый день.
- Второй список содержит идентификаторы пользователей, которые заходили на сайт во второй день.
- Третий список содержит идентификаторы пользователей, которые заходили на сайт между этими днями.


Код задачи:
day1 = {101, 102, 103, 104, 105, 106}
day2 = {104, 105, 106, 107, 108, 109}
midday = {105, 107, 110}

common = day1 & day2
inactive_in_between = common - midday

day2.add(102)
midday.add(103)

result = len(inactive_in_between |
midday -
day2)
print(result)



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

1. Шаг первый: пересекаем множества day1 и day2 с помощью оператора & (пересечение).
common = day1 & day2


Оператор & находит общие элементы между двумя множествами. В данном случае, мы находим пользователей, которые заходили на сайт в оба дня. Получаем:
common = {104, 105, 106}


2. Шаг второй: вычитаем из этого множества тех, кто был активен в промежуточный день, используя оператор - (разность).
inactive_in_between = common - midday


Оператор - убирает из множества все элементы, которые есть в другом множестве. Здесь мы убираем пользователей, заходивших в промежуток между днями. Остаётся:
inactive_in_between = {104, 106}


3. Шаг третий: добавляем в day2 пользователя 102, а в midday — 103.
day2.add(102)
midday.add(103)


Теперь:
- day2 = {102, 104, 105, 106, 107, 108, 109}
- midday = {103, 105, 107, 110}

4. Шаг четвёртый: финальное выражение.
result = len(inactive_in_between | midday - day2)


Внутри функции len(), мы выполняем две операции: | и -, однако, выполнение идёт не по порядку. В Python приоритет операций с множествами такой, что сначала выполняется операция вычитания (-), а затем объединение (|). Д

- Первым делом выполняется вычитание midday - day2. Убираем всех пользователей, которые были во второй день, из тех, кто заходил между днями:
{103, 105, 107, 110} - {102, 104, 105, 106, 107, 108, 109} = {103, 110}


- Затем выполняется объединение с множеством inactive_in_between. Объединяем множество пользователей, которые были неактивны в промежутке, с теми, кто заходил между днями и не зашёл во второй день:
{104, 106} | {103, 110} = {103, 104, 106, 110}


Теперь в результате остаются пользователи: {103, 104, 106, 110}.

Осталось посчитать количество элементов в этом множестве:
result = len({103, 104, 106, 110}) = 4



Правильный ответ: — 4.
🔥6👍1
Привет, друзья!

Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:

Понедельник (02.09.2024) Дайджест за предыдущую неделю

Вторник (03.09.2024) Tortoise ORM - Простая асинхронная альтернатива SQLAlchemy

Среда (04.09.2024) Опрос

Четверг (05.09.2024) FastAPI 2. Подготовка проекта

Пятница (06.09.2024) Вопросы и ответы и Пятничный кинорелакс

Суббота (07.09.2024) Задача

Воскресенье (08.09.2024) Текстовый разбор задачи


Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
104🔥2
Обновление библиотеки - AIOgram 3.12 и 3.13
Автор: Иван Ашихмин

Вышла новая версия AIOgram 3.12 и 3.13. Список изменений в новых версиях на русском языке.


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

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

#Telegram #Bot_API #список_изменений #aiogram #Telegram_бот #новая_версия #Telegram_Stars #обновление #звёзды #aiogram3 #розыгрыши #платные_меди
🔥5
Сравнение hash map С и C++ с dict Python (часть 2)
Автор: Eugene Kaddo

Данная статья продолжит тему отличия hash table C/C++ от dict Python и способов их реализации.


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

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

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

#Python #Код_на_салфетке #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
10🔥6❤‍🔥1🤯1
Привет, Друзья!

Хотим поздравить всех наших подписчиков с днём программиста!

Желаем всем успехов в развитии навыков, жирных офферов и интересных проектов!

С уважением,
Команда канала "Код на салфетке".
1211🔥106🌚3
Привет, Друзья!

Хотим порекомендовать вам авторский канал про веб-разработку и сетевые технологии - "Давайте про IT".

Богдан специалист в Python-разработке и охотно делится со всеми гайдами, а также снимает видео! Сейчас на его канале активно рассказывается про OpenWRT и обходы сами знаете чего 😉

Наверняка вы найдёте много полезного для себя.
🔥8🤡1
Telegram Stars: Подробная инструкция по выводу
Автор: Иван Ашихмин

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


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

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

#Гайды #Telegram_бот #Telegram_Stars #криптовалюта #TON #toncoin #вывод_звёзд #Вывод_ton
22🔥8👍2🤩2
Приветствую, друзья!

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

Устраивайтесь поудобнее и приготовьте что-нибудь вкусное, ведь вас ждет незабываемое киноискусство!

Фильм: Финч

Год: 2021

Постапокалипсис. В Северной Америке бушует радиация, пыльные бури и торнадо. Инженер-робототехник Финч смертельно болен и переживает, что после его смерти некому будет заботиться о его собаке, поэтому собирает для этой цели человекоподобного робота. Узнав, что на местность надвигается супербуря, в которой он не выживет, Финч с собакой и роботами отправляется в Сан-Франциско.

Приятного просмотра!
10🔥6
Что выведет этот код? №37

Задача:
У вас есть функция, которая принимает сумму заказа и разные скидки, которые могут быть применены. Нужно корректно рассчитать итоговую сумму с учётом всех скидок.
🤯3🔥1
Что выведет код с изображения? №37
Anonymous Quiz
14%
90.0 170.0 135.38
16%
90.0 171.0 128.25
43%
90.0 171.0 243.68
16%
90 180 255
11%
TypeError
🤯5🔥1
Сегодня разбираем задачу на работу с аргументами функции. Несмотря на то, что задача не сложная, верно ответили всего 39% из 28 участников.

Задача:
У вас есть функция, которая принимает сумму заказа и разные скидки, которые могут быть применены. Нужно корректно рассчитать итоговую сумму с учётом всех скидок.

Код задачи:
def apply_discounts(total, *discounts):
for discount in discounts:
total -= total * discount
return round(total, 2)

order1 = apply_discounts(100, 0.1)
order2 = apply_discounts(200, 0.05, 0.1)
order3 = apply_discounts(300, 0.05, 0.1, 0.05)

print(order1, order2, order3)


Разбор задачи:

Начнём с определения функции apply_discounts, которая принимает два типа аргументов:
- total — это сумма заказа.
- *discounts — здесь используется синтаксис *, позволяющий передавать произвольное количество скидок в виде кортежа.

def apply_discounts(total, *discounts):


Что значит звёздочка * перед аргументом? Это означает, что в функцию можно передать любое количество дополнительных аргументов после основного — они все будут собраны в кортеж. Например, в вызове apply_discounts(200, 0.05, 0.1), значения 0.05 и 0.1 будут упакованы в кортеж discounts = (0.05, 0.1).

Далее, функция последовательно применяет каждую из скидок. Она проходит по списку переданных скидок и уменьшает total на определённый процент:

for discount in discounts:
total -= total * discount


После того как все скидки применены, результат округляется до двух знаков после запятой:

return round(total, 2)



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

1. Первый заказ:
order1 = apply_discounts(100, 0.1)


На сумму 100 применяем скидку 10% (0.1). Вычисляем:
100 - 100 * 0.1 = 90.0


Значение order1 = 90.0.

2. Второй заказ:
order2 = apply_discounts(200, 0.05, 0.1)


Здесь на сумму 200 применяются две скидки — сначала 5%, потом 10%. Рассчитаем шаг за шагом:
- Применяем 5%:

  200 - 200 * 0.05 = 190.0

- Применяем 10%:

  190 - 190 * 0.1 = 171.0


Значение order2 = 171.0.

3. Третий заказ:
order3 = apply_discounts(300, 0.05, 0.1, 0.05)


Здесь применяются три скидки: 5%, 10% и снова 5%. Рассчитаем шаг за шагом:
- Применяем 5%:

  300 - 300 * 0.05 = 285.0

- Применяем 10%:

  285 - 285 * 0.1 = 256.5

- Применяем ещё 5%:

  256.5 - 256.5 * 0.05 = 243.68


Значение order3 = 243.68.

Итог:
Мы получили следующие результаты:
- Первый заказ: 90.0
- Второй заказ: 171.0
- Третий заказ: 243.68

Все числа вычислены корректно, и программа успешно выводит три значения.
Правильный ответ — 3. 90.0 171.0 243.68.

Передача позиционных аргументов:
Стоит отметить, что ключевой элемент задачи — это использование звёздочки *, которая позволяет передавать любое количество скидок в функцию. Это даёт гибкость: вместо создания множества функций для разных наборов скидок, мы можем собрать их все в одном месте и обработать с помощью цикла.
🔥8
Привет, друзья!

Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:

Понедельник (09.09.2024) Дайджест за предыдущую неделю

Вторник (10.09.2024) Обновление библиотеки - AIOgram 3.12 и 3.13

Среда (11.09.2024) Сравнение hash map С и C++ с dict Python (часть 2)

Четверг (12.09.2024)

Пятница (13.09.2024) Telegram Stars: Подробная инструкция по выводу

Пятничный кинорелакс

Суббота (14.09.2024) Задача

Воскресенье (15.09.2024) Текстовый разбор задачи


Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
10🔥4
Обновления на сайте и поиск авторов
Автор: Иван Ашихмин

Мы изменили внешний вид страницы статьи, внесли некоторые изменения, а также ищем новых авторов!


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

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

#новости #Код_на_салфетке #редизайн #авторы #статьи #новый_дизайн #ищем_авторов
10🔥4👍1👏1
Сколько времени вы готовы уделить участию в контесте по программированию?
Anonymous Poll
10%
1 день
17%
2-4 дня
21%
1 неделю
17%
2 недели
24%
3-4 недели
12%
Не готов
🔥4👍1👏1
Привет, друзья!

Мы регулярно проводим разные интерактивы, последним крупным мероприятием был конкурс на создание анти-спама для телеграм-бота на Python.

Конкурсы - безусловно, интересно, но мы решили пойти дальше! В данный момент мы планируем проведение контеста по программированию на Python.

В чём суть контеста?
Это мероприятие, где каждый сможет принять участие по написанию небольшого проекта по техническому заданию (ТЗ).

Какая цель?
Помимо упомянутой выше, мы собираем команду, а-ля гильдию разработчиков! Те, кого мы возьмём в команду, получат возможность участвовать в проектах "Код на салфетке" поначалу в формате мастерской под нашим руководством, а затем в качестве полноценных, самостоятельных разработчиков. Под руководством в данном случае подразумевается:
- работа в команде,
- код-ревью,
- помощь в изучении нового.

Помимо проектов салфетки, мы планируем выйти на рынок выполнения заказов, но об этом как ни будь позже.

Чем можно будет заниматься в команде?
У нас уже есть планы по развитию экосистемы "салфетки". В частности, участникам предстоит познакомиться с библиотекой AIOgram для написания ботов, фреймворками Django и FastAPI для веб-разработки. Помимо прочего, будет использоваться собственный git-сервер, wiki-платформа и task-трекер.

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

Свой ответ оставьте, пожалуйста, в опросе выше.
10🔥9👍3👏2😱1
FastAPI 3. Подключение к SQLAlchemy и генератор сессий
Автор: Иван Ашихмин

В этом посте продолжим изучение FastAPI. Подключим к проекту SQLAlchemy и создадим фабрику сессий.


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

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

#Гайды #FastAPI #SQLAlchemy #PostgresDsn #session_maker #фабрика_сессий #подключение_БД
10🔥63👍2👏1
Приветствую

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

Фильм: Письма мёртвого человека

Год: 1986

Произошёл ядерный взрыв, наступила ядерная зима. Остатки человечества прячутся в подземных бункерах, пытаются выжить и понять, что делать дальше. Пожилой академик Ларсен ухаживает за умирающей от лучевой болезни женой и пишет письма пропавшему без вести сыну Эрику.

Приятного просмотра!
🔥41👏1
Что выведет этот код? №38

Задача:
Реализована функция, которая принимает позиционные, ключевые аргументы, а также *args и **kwargs. Что выведет данный код при вызове функции с указанными аргументами?
🤯5😨1