Что выведет код с изображения? №29
Anonymous Poll
13%
9
26%
IndexError
0%
3 3
35%
SyntaxError
0%
3 3 3 3
23%
ValueError
3%
27
- Добавлена полная поддержка Bot API 7.6.
- Добавлены классы aiogram.types.paid_media.PaidMedia, aiogram.types.paid_media_info.PaidMediaInfo, aiogram.types.paid_media_preview.PaidMediaPreview, aiogram.types.paid_media_photo.PaidMediaPhoto и aiogram.types.paid_media_video.PaidMediaVideo, содержащие информацию о платных медиа.
- Добавлен метод aiogram.methods.send_paid_media.SendPaidMedia и классы aiogram.types.input_paid_media.InputPaidMedia, aiogram.types.input_paid_media_photo.InputPaidMediaPhoto и aiogram.types.input_paid_media_video.InputPaidMediaVideo для поддержки отправки платных медиа.
- Документировано, что методы aiogram.methods.copy_message.CopyMessage и aiogram.methods.copy_messages.CopyMessages не могут быть использованы для копирования платных медиа.
- Добавлено поле
- Добавлено поле
- Добавлен класс aiogram.types.transaction_partner_telegram_ads.TransactionPartnerTelegramAds, содержащий информацию о транзакциях Telegram Star, связанных с платформой Telegram Ads.
- Добавлено поле
- Изменен режим открытия по умолчанию для Direct Link Mini Apps.
- Добавлена поддержка запуска Web Apps через ссылку t.iss.one в классе aiogram.types.menu_button_web_app.MenuButtonWebApp.
- Добавлено поле
Исправления.
- Исправлено разрешение контекста события для callback-запроса, который поступает от бизнес-аккаунта.
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#перевод #список_изменений #aiogram #telegram #новая_версия #telegram_бот #bot_api #changelog
- Добавлены классы aiogram.types.paid_media.PaidMedia, aiogram.types.paid_media_info.PaidMediaInfo, aiogram.types.paid_media_preview.PaidMediaPreview, aiogram.types.paid_media_photo.PaidMediaPhoto и aiogram.types.paid_media_video.PaidMediaVideo, содержащие информацию о платных медиа.
- Добавлен метод aiogram.methods.send_paid_media.SendPaidMedia и классы aiogram.types.input_paid_media.InputPaidMedia, aiogram.types.input_paid_media_photo.InputPaidMediaPhoto и aiogram.types.input_paid_media_video.InputPaidMediaVideo для поддержки отправки платных медиа.
- Документировано, что методы aiogram.methods.copy_message.CopyMessage и aiogram.methods.copy_messages.CopyMessages не могут быть использованы для копирования платных медиа.
- Добавлено поле
can_send_paid_media в класс aiogram.types.chat_full_info.ChatFullInfo.- Добавлено поле
paid_media в классы aiogram.types.message.Message и aiogram.types.external_reply_info.ExternalReplyInfo.- Добавлен класс aiogram.types.transaction_partner_telegram_ads.TransactionPartnerTelegramAds, содержащий информацию о транзакциях Telegram Star, связанных с платформой Telegram Ads.
- Добавлено поле
invoice_payload в класс aiogram.types.transaction_partner_user.TransactionPartnerUser, содержащее указанный ботом payload счета.- Изменен режим открытия по умолчанию для Direct Link Mini Apps.
- Добавлена поддержка запуска Web Apps через ссылку t.iss.one в классе aiogram.types.menu_button_web_app.MenuButtonWebApp.
- Добавлено поле
section_separator_color в класс ThemeParams.Исправления.
- Исправлено разрешение контекста события для callback-запроса, который поступает от бизнес-аккаунта.
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#перевод #список_изменений #aiogram #telegram #новая_версия #telegram_бот #bot_api #changelog
🔥3
Вчера была достаточно интересная задача. Её решило 38% из 24-х человек (а что так мало участвовавших?).
Код задачи:
Разбор задачи
Объявляем три переменные:
-
-
-
Затем в функции
Очевидно, будет ошибка!
Всё верно. Будет ошибка
В задаче с прошлой субботы, распаковка была в начале выражения, поэтому она сработала корректно, сейчас же она находится внутри выражения и сработать уже не может.
Что будет если убрать ошибку?
Тут есть два варианта развития:
Первый. Если мы просто убёрем распаковку:
То в данном случае третий элемент кортежа
Второй. Если мы хотим умножить именно на значение в кортеже:
То в данном случае получим выражение
Код задачи:
a = 3
b = a,
c = b * a
print(c[2] * *b)
Разбор задачи
Объявляем три переменные:
-
a - Со значением 3.-
b - Кортеж с единственным элементом из переменной a, т.е. 3-
c - С результатом умножения кортежа b на a. Затем в функции
print выводим результат умножения третьего элемента из кортежа c на единственный элемент в кортеже b.Очевидно, будет ошибка!
Всё верно. Будет ошибка
SyntaxError, поскольку нельзя распаковывать коллекцию внутри математической операции. В задаче с прошлой субботы, распаковка была в начале выражения, поэтому она сработала корректно, сейчас же она находится внутри выражения и сработать уже не может.
Что будет если убрать ошибку?
Тут есть два варианта развития:
Первый. Если мы просто убёрем распаковку:
a = 3
b = a,
c = b * a
print(c[2] * b)
То в данном случае третий элемент кортежа
c - 3 будет умножен на кортеж b и мы получим ответ (3, 3, 3).Второй. Если мы хотим умножить именно на значение в кортеже:
a = 3
b = a,
c = b * a
print(c[2] * b[0])
То в данном случае получим выражение
3 * 3 и ответ 9.🤯4
Подготовили разбор задачи на YouTube Shorts!
https://youtube.com/shorts/AX86xkxqGHE?feature=share
В этом видео мы немного изменили формат. Напишите в комментарии как вам?
Будем благодарны за лайк и досмотр видео до конца. Спасибо!
https://youtube.com/shorts/AX86xkxqGHE?feature=share
В этом видео мы немного изменили формат. Напишите в комментарии как вам?
Будем благодарны за лайк и досмотр видео до конца. Спасибо!
👍1🔥1
Код на салфетке
Обновление библиотеки - AIOgram 3.9.0 Автор: Иван Ашихмин Вышла новая версия библиотеки AIOgram 3.9.0. Установить новую версию можно выполнив команду: pip install -U aiogram Главное. - Добавлен инструмент разрешения ChatMember и обновлено руководство по…
Telegram в последнее время активно обновляют свой Bot API, aiogram'у только и остаётся поспевать за ним.
Вышло обновление aiogram 3.10.0. На целый пост не тянет, поэтому просто заметка.
Главное.
- Добавлен класс aiogram.types.refunded_payment.RefundedPayment, содержащий информацию о возвращенном платеже.
- Добавлено поле
Вышло обновление aiogram 3.10.0. На целый пост не тянет, поэтому просто заметка.
Главное.
- Добавлен класс aiogram.types.refunded_payment.RefundedPayment, содержащий информацию о возвращенном платеже.
- Добавлено поле
refunded_payment в класс aiogram.types.message.Message, описывающее служебное сообщение о возвращенном платеже.Приветствуем!
Вот-вот закончится приём работ для конкурса!
Дедлайн сдачи пуллреквестов - 19:00 по МСК!
На данный момент работы сдали четыре участника:
- Виктор Вангели
- Виктор Королев
- Ηe_ΙΙροcΤο_Tακ
- Анастасия Бастрыкина
Торопитесь! Ещё можно успеть!
После окончания приёма работ будет опубликован пост со ссылками на работы и голосованием.
Также. Завтра в 18:00 по МСК будет будет стрим на котором посмотрим на отправленные варианты и разберём их.
Вот-вот закончится приём работ для конкурса!
Дедлайн сдачи пуллреквестов - 19:00 по МСК!
На данный момент работы сдали четыре участника:
- Виктор Вангели
- Виктор Королев
- Ηe_ΙΙροcΤο_Tακ
- Анастасия Бастрыкина
Торопитесь! Ещё можно успеть!
После окончания приёма работ будет опубликован пост со ссылками на работы и голосованием.
Также. Завтра в 18:00 по МСК будет будет стрим на котором посмотрим на отправленные варианты и разберём их.
🔥4👏1
Внезапно у нашего конкурса появился ещё один спонсор — Юрий Б.!
Он предложил интересный дополнительный розыгрыш «Везунчик на салфетке» среди выполнивших задание участников!
Все подробности и сам розыгрыш этого дополнительного приза (или призов?😉) состоится завтра на стриме!
Спешите! До закрытия приёма работ осталось не так много времени!
Он предложил интересный дополнительный розыгрыш «Везунчик на салфетке» среди выполнивших задание участников!
Все подробности и сам розыгрыш этого дополнительного приза (или призов?😉) состоится завтра на стриме!
Спешите! До закрытия приёма работ осталось не так много времени!
🔥6😱1
Приём работ для конкурса ОКОНЧЕН!
Представляю вам конкурсантов:
1. Виктор Вангели - Выполненная работа
2. Виктор Королев - Выполненная работа
3. Александр Вязников - Выполненная работа
4. Анастасия Бастрыкина - Выполненная работа
Проголосуйте за понравившийся вариант решения в опросе ниже!
Завтра в 18:00 на стриме мы разберём решения участников, а также разыграем среди них дополнительный приз 😉
Результаты будут подведены в среду в 19:00. По результатам голосования, победитель получит 2000 рублей!
Вариант от редакции доступен в основной ветке репозитория.
Представляю вам конкурсантов:
1. Виктор Вангели - Выполненная работа
2. Виктор Королев - Выполненная работа
3. Александр Вязников - Выполненная работа
4. Анастасия Бастрыкина - Выполненная работа
Проголосуйте за понравившийся вариант решения в опросе ниже!
Завтра в 18:00 на стриме мы разберём решения участников, а также разыграем среди них дополнительный приз 😉
Результаты будут подведены в среду в 19:00. По результатам голосования, победитель получит 2000 рублей!
Вариант от редакции доступен в основной ветке репозитория.
🔥6👍1👏1
Чьё решение вам понравилось больше?
Anonymous Poll
13%
1. Виктор Вангели
8%
2. Виктор Королев
53%
3. Александр Вязников
27%
4. Анастасия Бастрыкина
🔥15👏2😱1🤩1
Найдите ошибку в коде ниже и исчерпывающим образом объясните ее в комментариях.
#python #код_на_салфетке #найди_ошибку
#python #код_на_салфетке #найди_ошибку
🤯4
Вчера мы опубликовали четвёртую задачу на поиск ошибки в коде. К сожалению, правильного ответа в комментариях не было ☹️
Код задачи:
Разбор задачи.
Сперва разберём что делает код и как устроена задача.
В переменную
В функции
В функции
Затем увеличиваем число на единицу и возвращаем его.
В самом конце выводим результат в консоль.
А где ошибка?
Я думаю, на этапе разбора вы уже догадались, где ошибка. Если нет, то давайте запустим код:
Как видим, выводится ошибка
Всё дело в том, что в функции
Решается это достаточно просто. Необходимо вызвать функцию в блоке
Код задачи:
def get_number(number):
def increment_number():
nonlocal number
number += 1
return number
if number < 10:
return increment_number
return number
result = 12 / get_number(5)
print(result)
Разбор задачи.
Сперва разберём что делает код и как устроена задача.
В переменную
result помещаем результат деления числа 12 на вызов функции get_number с переданным аргументом 5.В функции
get_number в блоке if проверяем, если переданное число меньше 10-ти, возвращаем функцию increment_number, в противном случае возвращаем переданное в функцию число.В функции
increment_number оператором nonlocal открываем доступ к переменной number из внешней области видимости, т.е. из агрумента функции get_number.Затем увеличиваем число на единицу и возвращаем его.
В самом конце выводим результат в консоль.
А где ошибка?
Я думаю, на этапе разбора вы уже догадались, где ошибка. Если нет, то давайте запустим код:
result = 12 / get_number(5)
~~~^~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for /: 'int' and 'function'
Как видим, выводится ошибка
TypeError с сообщением, что делить число на функцию нельзя.Всё дело в том, что в функции
get_number в блоке if мы возвращаем не результат работы функции increment_number, т.е. не вызываем её, а саму функцию, ссылку на объект в памяти.Решается это достаточно просто. Необходимо вызвать функцию в блоке
if:def get_number(number):
def increment_number():
nonlocal number
number += 1
return number
if number < 10:
return increment_number() # <- или вызываем функцию тут
return number
result = 12 / get_number(5)()
print(result)
🔥3
К текстовому разбору подготовили новый Shorts!
https://youtube.com/shorts/9aCoeOe5xm8?feature=share
Будем благодарны, если вы поставите видео лайк и досмотрите его до конца. Спасибо!
https://youtube.com/shorts/9aCoeOe5xm8?feature=share
Будем благодарны, если вы поставите видео лайк и досмотрите его до конца. Спасибо!
🔥4👍2
Приветствуем!
Вот и подошёл к концу наш первый конкурс для начинающих программистов на Python!
За эти полторы недели произошло многое и главным местом событий оказался наш чат: https://t.iss.one/pressanybutton_chat
Мы пронаблюдали все стадии принятия поставленной задачи, обсуждали варианты написания, а потом решения.
Хотим поблагодарить всех участников, включая тех, кто попытался, но не смог найти силы или время для реализации, а также спонсоров этого мероприятия Сергея и Юрия.
Победителем становиться - Александр Вязников! Он получает от нас 2000 рублей!
Ссылки на работы участников доступны в этом посте: https://t.iss.one/press_any_button/790
Нам понравилось проводить подобное мероприятие и наверняка, в будущем будут и другие конкурсы! Как говориться - Stay tuned!
Если у вас есть идеи, предложения или вы хотите проспонсировать что-то подобное - пишите нам, мы открыты к диалогу.
Поддержать канал, чтобы было больше интересного контента и мероприятий можно:
- На нашем Boosty.
- В нашем Telegram-боте.
- Отправив донат в DonationAlerts.
Вот и подошёл к концу наш первый конкурс для начинающих программистов на Python!
За эти полторы недели произошло многое и главным местом событий оказался наш чат: https://t.iss.one/pressanybutton_chat
Мы пронаблюдали все стадии принятия поставленной задачи, обсуждали варианты написания, а потом решения.
Хотим поблагодарить всех участников, включая тех, кто попытался, но не смог найти силы или время для реализации, а также спонсоров этого мероприятия Сергея и Юрия.
Победителем становиться - Александр Вязников! Он получает от нас 2000 рублей!
Ссылки на работы участников доступны в этом посте: https://t.iss.one/press_any_button/790
Нам понравилось проводить подобное мероприятие и наверняка, в будущем будут и другие конкурсы! Как говориться - Stay tuned!
Если у вас есть идеи, предложения или вы хотите проспонсировать что-то подобное - пишите нам, мы открыты к диалогу.
Поддержать канал, чтобы было больше интересного контента и мероприятий можно:
- На нашем Boosty.
- В нашем Telegram-боте.
- Отправив донат в DonationAlerts.
🔥7👍2
Где применяются Python и C/C++ (часть 1)
Автор: Arduinum628
Вступление
Всем доброго дня! Сегодня мы поговорим об области применения Python и C/C++. Тема областей применения очень обширная, поэтому информация будет разделена на несколько статей. Отложите свои IDE, налейте чая, возьмите вкусняшек и расслабьтесь. Ибо код писать мы сегодня не будем =)
Прототипирование
Начнём с нашего высокоуровневого языка Python. Синтаксис языка Python простой как две копейки, что делает его идеальным вариантом для быстрого написания прототипа. Например, мы можем написать на нём прототип веб приложения. Из-за простоты и лаконичности его синтаксиса разрабатывать на нём действительно быстро. Ещё он высокоуровневый, поэтому мы можем сосредоточиться на архитектуре приложения, а не на железе ПК. Языки C/C++ не годятся для этой роли из-за того, что писать код на них гораздо сложнее. Кроме того, из-за их более большого синтаксиса писать на них гораздо дольше.
Автор: Arduinum628
Вступление
Всем доброго дня! Сегодня мы поговорим об области применения Python и C/C++. Тема областей применения очень обширная, поэтому информация будет разделена на несколько статей. Отложите свои IDE, налейте чая, возьмите вкусняшек и расслабьтесь. Ибо код писать мы сегодня не будем =)
Прототипирование
Начнём с нашего высокоуровневого языка Python. Синтаксис языка Python простой как две копейки, что делает его идеальным вариантом для быстрого написания прототипа. Например, мы можем написать на нём прототип веб приложения. Из-за простоты и лаконичности его синтаксиса разрабатывать на нём действительно быстро. Ещё он высокоуровневый, поэтому мы можем сосредоточиться на архитектуре приложения, а не на железе ПК. Языки C/C++ не годятся для этой роли из-за того, что писать код на них гораздо сложнее. Кроме того, из-за их более большого синтаксиса писать на них гораздо дольше.
🔥4
Прототипы нужны для проверки гипотез и идей на практике. Их часто используют на начальной стадии разработки продукта. Они помогают оценить работу и возможности продукта. Прототипы экономят время и ресурсы необходимые для разработки. Также прототип можно использовать для демонстрации работы продукта заказчику.
Прототипирование на Python обычно используют крупные компании такие как Яндекс. Не обязательно, чтобы код на Python был именно прототипом. Иногда спустя время рабочий код тоже могут переписать с Python на C++ для увеличения производительности. Это только пример, ибо Яндекс может писать много на каких языках. Почему же они переписывают код Python на C++? Всё очень просто. Микросервис на C++ работает гораздо быстрее и выдерживает гораздо больше нагрузки. Это делает связку Python и C++ хорошей для веб разработки. Код на C++ пишут, если важна скорость вычислений и количество запросов в секунду rps. Для сравнения: код, написанный на C++, может держать rps в 4 раза больше чем аналогичный на Python. В конце статьи я прикреплю ссылку на видео компании Яндекс с упоминанием об этом (момент на 16м 21с в видео).
Веб приложения это не единственное где вы можете написать прототип на Python, а затем переписать на C++. Также вы можете, например, написать Библиотеку для обработки изображений, алгоритмы машинного обучения, систему управления базой данных и тд. Количество областей для этого очень большое.
Веб приложения
Выше я уже слегка затронул тему веб приложений, а тут я её раскрою и конкретизирую. На Python обычно пишут бэкенд на таких фреймворках как Flask, Django, Fastapi, Streamlit. Затронем вкратце каждый из них чтоб было понятно какой из них выбрать для своей задачи.
Начнём с фреймворка Flask. Это лёгкий и модульный микрофреймворк. Он очень минималистичен и подходит для маленьких сайтов и веб приложений. Также на нём можно писать и большие приложения, где важна гибкость и кастомизация. Хорошая документация, работа с шаблонизатором Jinja2, работа с rest api, возможность использовать много разных библиотек и многое другое. Он подходит как для монолитной, так и для микросервисной архитектуры приложения. Минус его в том что он не поддерживает напрямую асинхронность. Однако есть возможность использовать его с ASGI сервером Uvicorn через адаптер WSGI-to-ASGI. Для работы с ним потребуется библиотека asgiref. Помните, что это не идеальное решение для асинхронности и высокой скорости. Ссылку на неё я оставлю в ссылках к статье.
Следующим на очереди у нас идёт большой фреймворк Django. Данный фреймворк нужен для написания веб сайтов и приложений на монолитной архитектуре. На нём можно быстро поднять стартап. У него есть всё необходимое, чтобы написать веб сайт в кратчайшие сроки. Тут вам и встроенная админка, поддержка orm, поддержка асинхронности и многое другое. Единственное, для чего он не подходит, это микросервисы. Однако к нему можно подключать сторонние микросервисы и боты. Получится монолит + микросервисы.
Далее идёт быстрый фреймворк Fastapi. Его я рекомендую использовать, когда вы хотите разделить свой проект на много микросервисов и когда вам важна скорость. Данный фреймворк начинает набирать популярность в компаниях из-за своей скорости, простоты и асинхронности. Также микросервисы обеспечивают высокую отказоустойчивость и надёжность работы сайтов и веб приложений. Обычно микросервисная архитектура не подходит маленьким проектам из-за сложности проектирования данной архитектуры.
Последним в моём списке популярных микросервисов идёт фреймворк Streamlit. Этот фреймворк хорош в быстром прототипировании сайтов и веб приложений. На нём можно создать простое веб приложение без глубоких познаний в html и css. Также в него можно внедрять и свои html и css как это делается в других фреймворках. У него очень мал порог вхождения поэтому он хорошо подходит начинающим разработчикам. Время, потраченное на разработку сайта на Streamlit, будет меньше в сравнении с другими фреймворками.
Прототипирование на Python обычно используют крупные компании такие как Яндекс. Не обязательно, чтобы код на Python был именно прототипом. Иногда спустя время рабочий код тоже могут переписать с Python на C++ для увеличения производительности. Это только пример, ибо Яндекс может писать много на каких языках. Почему же они переписывают код Python на C++? Всё очень просто. Микросервис на C++ работает гораздо быстрее и выдерживает гораздо больше нагрузки. Это делает связку Python и C++ хорошей для веб разработки. Код на C++ пишут, если важна скорость вычислений и количество запросов в секунду rps. Для сравнения: код, написанный на C++, может держать rps в 4 раза больше чем аналогичный на Python. В конце статьи я прикреплю ссылку на видео компании Яндекс с упоминанием об этом (момент на 16м 21с в видео).
Веб приложения это не единственное где вы можете написать прототип на Python, а затем переписать на C++. Также вы можете, например, написать Библиотеку для обработки изображений, алгоритмы машинного обучения, систему управления базой данных и тд. Количество областей для этого очень большое.
Веб приложения
Выше я уже слегка затронул тему веб приложений, а тут я её раскрою и конкретизирую. На Python обычно пишут бэкенд на таких фреймворках как Flask, Django, Fastapi, Streamlit. Затронем вкратце каждый из них чтоб было понятно какой из них выбрать для своей задачи.
Начнём с фреймворка Flask. Это лёгкий и модульный микрофреймворк. Он очень минималистичен и подходит для маленьких сайтов и веб приложений. Также на нём можно писать и большие приложения, где важна гибкость и кастомизация. Хорошая документация, работа с шаблонизатором Jinja2, работа с rest api, возможность использовать много разных библиотек и многое другое. Он подходит как для монолитной, так и для микросервисной архитектуры приложения. Минус его в том что он не поддерживает напрямую асинхронность. Однако есть возможность использовать его с ASGI сервером Uvicorn через адаптер WSGI-to-ASGI. Для работы с ним потребуется библиотека asgiref. Помните, что это не идеальное решение для асинхронности и высокой скорости. Ссылку на неё я оставлю в ссылках к статье.
Следующим на очереди у нас идёт большой фреймворк Django. Данный фреймворк нужен для написания веб сайтов и приложений на монолитной архитектуре. На нём можно быстро поднять стартап. У него есть всё необходимое, чтобы написать веб сайт в кратчайшие сроки. Тут вам и встроенная админка, поддержка orm, поддержка асинхронности и многое другое. Единственное, для чего он не подходит, это микросервисы. Однако к нему можно подключать сторонние микросервисы и боты. Получится монолит + микросервисы.
Далее идёт быстрый фреймворк Fastapi. Его я рекомендую использовать, когда вы хотите разделить свой проект на много микросервисов и когда вам важна скорость. Данный фреймворк начинает набирать популярность в компаниях из-за своей скорости, простоты и асинхронности. Также микросервисы обеспечивают высокую отказоустойчивость и надёжность работы сайтов и веб приложений. Обычно микросервисная архитектура не подходит маленьким проектам из-за сложности проектирования данной архитектуры.
Последним в моём списке популярных микросервисов идёт фреймворк Streamlit. Этот фреймворк хорош в быстром прототипировании сайтов и веб приложений. На нём можно создать простое веб приложение без глубоких познаний в html и css. Также в него можно внедрять и свои html и css как это делается в других фреймворках. У него очень мал порог вхождения поэтому он хорошо подходит начинающим разработчикам. Время, потраченное на разработку сайта на Streamlit, будет меньше в сравнении с другими фреймворками.
🔥3