Приветствую, друзья!
Снова пятница, а это значит, что пришло время отдохнуть от дел и немного отвлечься. Давайте воспользуемся этим моментом и как следует отдохнём, наслаждаясь просмотром отличного фильма. Запаситесь чем-нибудь аппетитным под ваш любимый напиток, расслабьтесь, очистите голову от мыслей и приготовьтесь к приятному времяпрепровождению.
Фильм: Первый отряд
Год: 2009
1942 год. Отряд пионеров-героев вступает в схватку с фашистскими оккупантами и призраками рыцарей Ливонского ордена, вызванными из загробного мира нацистскими магами из печально известной организации Аненербе. Разумеется, главные герои - не простые пионеры. Они прошли обучение в Шестом отделе управления военной разведки, который занимается парапсихологией и оккультизмом. И теперь они готовы защищать Родину на невидимом для простых смертных фронте.
https://www.sspoisk.ru/film/392521/
Приятного просмотра
Снова пятница, а это значит, что пришло время отдохнуть от дел и немного отвлечься. Давайте воспользуемся этим моментом и как следует отдохнём, наслаждаясь просмотром отличного фильма. Запаситесь чем-нибудь аппетитным под ваш любимый напиток, расслабьтесь, очистите голову от мыслей и приготовьтесь к приятному времяпрепровождению.
Фильм: Первый отряд
Год: 2009
1942 год. Отряд пионеров-героев вступает в схватку с фашистскими оккупантами и призраками рыцарей Ливонского ордена, вызванными из загробного мира нацистскими магами из печально известной организации Аненербе. Разумеется, главные герои - не простые пионеры. Они прошли обучение в Шестом отделе управления военной разведки, который занимается парапсихологией и оккультизмом. И теперь они готовы защищать Родину на невидимом для простых смертных фронте.
https://www.sspoisk.ru/film/392521/
Приятного просмотра
🔥2
В субботу мы опубликовали задачу с нестандартным выбором вариантов ответа. Судя по количеству голосов, формат вам не приглянулся. Обидненько. Тем не менее, среди тех, кто ответил, количество верных составляет 72%.
Код задачи:
Разбор задачи.
Задача может показаться большой и сложной, но на деле она просто большая.
Создаём первый класс
- Конструктор класса
- Метод
Создаём второй класс
Создаём третий класс
В нём переопределяем
И определяем метод
Основа готова, перейдём к вызовам.
Создаём три экземпляра класса:
-
-
-
Далее заменяем содержимое переменной
И, поочерёдно вызывая методы принт у созданных экземпляров классов, получаем следующий вывод:
-
-
-
В конце вызываем функцию
Код задачи:
class A:
def __init__(self, x, y):
self.x = x
self.y = y
def print(self):
print(self.x, self.y)
class B(A):
def print(self):
print(self.y, self.x)
class C(B):
def __init__(self, x, y, z):
super().__init__(x, y)
self.z = z
def __str__(self):
return str(self.x + self.z)
a = A(2, 4)
b = B(4, 2)
c = C(2, 4, 7)
c.x = c.z
a.print()
b.print()
c.print()
print(c)
Разбор задачи.
Задача может показаться большой и сложной, но на деле она просто большая.
Создаём первый класс
A с двумя методами:- Конструктор класса
__init__, принимающий помимо себя, ещё x и y. - Метод
print (не путать с функцией print()!), выводящий на экран значения x и y.Создаём второй класс
B, унаследованный от класса A, с переопределённым методом print. В методе также выводим значения x и y, но поменяв их местами.Создаём третий класс
C, унаследованный от класса B. В нём переопределяем
__init__, в котором дополнительно принимаем аргумент z.И определяем метод
__str__, возвращающий сумму значений x и z.Основа готова, перейдём к вызовам.
Создаём три экземпляра класса:
-
a = A(2, 4) - x=2, y=4-
b = B(4, 2) - x=4, y=2-
c = C(2, 4, 7) - x=2, y=4, z=7Далее заменяем содержимое переменной
x в классе C на значение переменной z:c.x = c.z - x=7, y=4, z=7И, поочерёдно вызывая методы принт у созданных экземпляров классов, получаем следующий вывод:
-
a.print() = 2 4-
b.print() = 2 4-
c.print() = 4 7В конце вызываем функцию
print(), выводящую метод __str__ у экземпляра класса C:print(c) = 14.👍3🔥1
Всем привет!
Сегодня мы собрались здесь, чтобы вместе окунуться в удивительный мир кинематографа и насладиться просмотром потрясающего фильма. Давайте забудем о повседневных заботах и проблемах и полностью погрузимся в атмосферу кино. Пусть этот вечер станет для нас возможностью отдохнуть, расслабиться и насладиться качественным киноискусством.
Фильм: Донни Дарко
Год: 2001
Донни Дарко — обычный старшеклассник, живет с родителями и двумя сестрами. Однажды он встречает человека в костюме кролика, который сообщает парню, что через 28 дней, 6 часов, 42 минуты и 12 секунд наступит конец света.
https://www.kinopoisk.ru/film/410/
https://www.sspoisk.ru/film/410/
Приятного просмотра
Сегодня мы собрались здесь, чтобы вместе окунуться в удивительный мир кинематографа и насладиться просмотром потрясающего фильма. Давайте забудем о повседневных заботах и проблемах и полностью погрузимся в атмосферу кино. Пусть этот вечер станет для нас возможностью отдохнуть, расслабиться и насладиться качественным киноискусством.
Фильм: Донни Дарко
Год: 2001
Донни Дарко — обычный старшеклассник, живет с родителями и двумя сестрами. Однажды он встречает человека в костюме кролика, который сообщает парню, что через 28 дней, 6 часов, 42 минуты и 12 секунд наступит конец света.
https://www.kinopoisk.ru/film/410/
https://www.sspoisk.ru/film/410/
Приятного просмотра
❤1🔥1
🔥3👍1
Вчера мы опубликовали непростую, на первый взгляд, задачу, но если посмотреть внимательнее, всё становится понятно. Отгадало задачу 11 человек, это 44% из 25-ти участвовавших.
Код задачи:
Разбор задачи.
Функция в функции в цикле 🤯. Звучит и выглядит непонятно. Давайте разбираться.
Начнём с функций.
Определяем функцию
В теле функции
К содержимому функции
Далее в функции
Понятнее не становится? Сейчас станет.
После определения функций создаём цикл, итерируемый по одному элементу -
Внутри цикла создаём переменную
Поскольку мы в функции
Вызываем
Внутри функции
Далее просто выводим полученный результат на экран при помощи функции
Вот и всё)
Что тут произошло?
Мы создали функцию, вложенную в другую функцию, и использовали переменную для доступа к вложенной функции. Примерно таким образом работают декораторы, о чём вы можете прочесть в посте "Декораторы в питоне".
Код задачи:
def x(z):
def q(x, y):
x = y + z + x
print(x)
return q
for i in range(1):
func = x(i)
func(i, i - 1)
Разбор задачи.
Функция в функции в цикле 🤯. Звучит и выглядит непонятно. Давайте разбираться.
Начнём с функций.
Определяем функцию
x, принимающую аргумент z.В теле функции
x определяем вложенную функцию q, принимающую аргументы x и y. Не путать аргумент x и функцию x. Имена совпадают, но области видимости у них разные.К содержимому функции
q вернёмся чуть позже. Далее в функции
x делаем возврат функции q.Понятнее не становится? Сейчас станет.
После определения функций создаём цикл, итерируемый по одному элементу -
0. Таким в образом, цикл сработает всего раз, а i будет равно 0.Внутри цикла создаём переменную
func, в которой вызываем функцию x, передавая в неё значение i.Поскольку мы в функции
x возвращаем функцию q, то переменная func теперь хранит в себе ссылку на функцию q, которая может быть вызвана с передаваемыми в неё аргументами.Вызываем
func (она же q), передавая в неё i и i - 1, т.е. 0 и -1.Внутри функции
q, переопределяя переменную x, мы складываем ранее переданные аргументы x и y, а также, благодаря замыканию, нам доступен аргумент z. Получается так: x = -1 + 0 + 0.Далее просто выводим полученный результат на экран при помощи функции
print.Вот и всё)
Что тут произошло?
Мы создали функцию, вложенную в другую функцию, и использовали переменную для доступа к вложенной функции. Примерно таким образом работают декораторы, о чём вы можете прочесть в посте "Декораторы в питоне".
🔥6
Рад снова приветствовать вас, друзья!
Пятница вернулась, и это повод отдохнуть от суеты и отвлечься. Давайте воспользуемся этой возможностью и насладимся просмотром прекрасного фильма. Готовьте закуски и напитки, располагайтесь поудобнее и наслаждайтесь просмотром!
Фильм: Всё везде и сразу
Год: 2022
Представьте, что существуют альтернативные варианты нашей реальности, где вы — совершенно другой человек. В этом лично убеждается Эвелин (Мишель Йео), получив доступ к воспоминаниям, эмоциям и невероятным способностям других версий себя. Теперь Эвелин может прожить тысячи жизней и быть кем угодно — известной актрисой, мастером боевых искусств, оперной дивой и даже небесным божеством. Но всем мультивселенным угрожает таинственная сущность, с которой Эвелин предстоит сразиться. Как знать, возможно, заодно она разберётся и с самым страшным злом — своими налогами.
https://www.kinopoisk.ru/film/1322324/
https://www.sspoisk.ru/film/1322324/
Приятного просмотра!
Пятница вернулась, и это повод отдохнуть от суеты и отвлечься. Давайте воспользуемся этой возможностью и насладимся просмотром прекрасного фильма. Готовьте закуски и напитки, располагайтесь поудобнее и наслаждайтесь просмотром!
Фильм: Всё везде и сразу
Год: 2022
Представьте, что существуют альтернативные варианты нашей реальности, где вы — совершенно другой человек. В этом лично убеждается Эвелин (Мишель Йео), получив доступ к воспоминаниям, эмоциям и невероятным способностям других версий себя. Теперь Эвелин может прожить тысячи жизней и быть кем угодно — известной актрисой, мастером боевых искусств, оперной дивой и даже небесным божеством. Но всем мультивселенным угрожает таинственная сущность, с которой Эвелин предстоит сразиться. Как знать, возможно, заодно она разберётся и с самым страшным злом — своими налогами.
https://www.kinopoisk.ru/film/1322324/
https://www.sspoisk.ru/film/1322324/
Приятного просмотра!
🔥6❤🔥1
Что выведет код с изображения ниже? №22
Anonymous Quiz
0%
b c d
17%
['b', 'c', 'd']
7%
TypeError
76%
c d e
🔥3
Вчера мы опубликовали достаточно простую задачку, с которой справилось большинство - 71%!
Код задачи:
Разбор задачи.
Задача намеренно написана в одну строку для усложнения восприятия. Давайте упростим для разбора:
В переменной
В нашем случае мы проходим по списку
В
Поскольку результат работы функции
В конце, используя распаковку списка, выводим результат в консоль.
Код задачи:
print(*list(map(lambda x: chr(ord(x) + 2), ['a', 'b', 'c'])))
Разбор задачи.
Задача намеренно написана в одну строку для усложнения восприятия. Давайте упростим для разбора:
char_map = map(lambda x: chr(ord(x) + 2), ['a', 'b', 'c'])
char_list = list(char_map)
print(*char_list)
В переменной
char_map выполняем функцию map. Функция map итерируется по переданному вторым аргументом итератору и применяет к каждому элементу, указанную первым элементом функцию.В нашем случае мы проходим по списку
['a', 'b', 'c'] и применяем к нему lambda-функцию.В
lambda-функции мы получаем в переменную x букву из списка. Затем получаем порядковый номер буквы в таблице кодировки и увеличиваем его на два. Затем получаем букву по получившемуся номеру. Выходит своеобразный Шифр Цезаря.Поскольку результат работы функции
map – это генератор, то в переменной char_list приводим его к списку.В конце, используя распаковку списка, выводим результат в консоль.
🔥3
Бот-автоответчик с ChatGPT для Бизнес-аккаунта в Telegram на Aiogram 3
Автор: Иван Ашихмин
Не так давно в Telegram вышло большое обновление - "Telegram для бизнеса". В данный момент оно доступно для Premium-пользователей, а в будущем, вероятно, станет отдельным режимом.
"Telegram для бизнеса" предоставляет собой новый способ взаимодействия с клиентами через Telegram, вводя для этого новые функции:
- Адрес - Позволяет указать адрес и геопозицию в профиле.
- Часы работы - Позволяет указать график работы бизнеса.
- Быстрые ответы - Позволяет создать набор "шаблонных" ответов.
- Приветствия - Позволяет установить автоматическое приветствие для новых клиентов.
- "Нет на месте" - Позволяет отправлять автоматические ответы, в нерабочее время.
- Ссылки на чат - Позволяет кастомизировать ссылки на чат с вами.
- Вид нового чата - Позволяет кастомизировать вид чата для клиента, который открыл чат с вами, но ещё не написал сообщение.
Автор: Иван Ашихмин
Не так давно в Telegram вышло большое обновление - "Telegram для бизнеса". В данный момент оно доступно для Premium-пользователей, а в будущем, вероятно, станет отдельным режимом.
"Telegram для бизнеса" предоставляет собой новый способ взаимодействия с клиентами через Telegram, вводя для этого новые функции:
- Адрес - Позволяет указать адрес и геопозицию в профиле.
- Часы работы - Позволяет указать график работы бизнеса.
- Быстрые ответы - Позволяет создать набор "шаблонных" ответов.
- Приветствия - Позволяет установить автоматическое приветствие для новых клиентов.
- "Нет на месте" - Позволяет отправлять автоматические ответы, в нерабочее время.
- Ссылки на чат - Позволяет кастомизировать ссылки на чат с вами.
- Вид нового чата - Позволяет кастомизировать вид чата для клиента, который открыл чат с вами, но ещё не написал сообщение.
🔥4👍1
- Чат-боты - Позволяет подключить к учётной записи бота для взаимодействия с клиентами в личных чатах.
Из всего этого набора нас интересует только два пункта: Чат-боты и Часы работы.
Что мы с вами сделаем?
В этом посте мы создадим Telegram-бота, который будет принимать личные сообщения только в нерабочее время и для ответа использовать ChatGPT от OpenAI.
Поскольку OpenAI недоступен на территории РФ, вместо него будем использовать сервис NeuroAPI. Он предоставляет доступ к OpenAI из России и СНГ по более низким ценам.
Как это можно использовать?
Описанный в посте бот можно будет использовать как частному лицу, сделав личного ассистента на время отсутствия в сети, так и бизнесу для взаимодействия с клиентами в нерабочее время.
Главная сложность будет заключаться в составлении грамотного "системного промта", покрывающего ваши потребности.
Подключение бота в профиле.
Для проекта вам нужен бот, как его создать рассказано в посте "AIOgram3 1.5. Регистрация бота"
После создания бота и получения токена, в интерфейсе
Выберите нужного бота.
Затем в открывшемся меню выберите пункт "Bot Settings".
В следующем меню выберите пункт "Business Mode".
Включите бизнес режим.
После того, как включили бизнес режим для бота, откройте настройки Telegram и выберите пункт "Telegram для бизнеса", а в нём пункт "Чат-боты".
В открывшемся окне в первое поле пропишите ссылку на бота
Готово.
Подготовка проекта.
Создайте новый проект в удобной для вас IDE и активируйте виртуальное окружение.
Если вы пользуетесь PyCharm, то виртуальное окружение создаст IDE для нового проекта.
Если вы пользуетесь VSCode, то его придётся создать вручную, выполнив следующие команды:
В проекте используются следующие библиотеки:
-
-
-
-
-
-
Установите их, выполнив команду:
Создайте файл
Далее создайте файл
Необходимы следующие переменные:
-
-
-
-
-
-
Пример:
Также создайте файл
Файл конфигурации.
Из всего этого набора нас интересует только два пункта: Чат-боты и Часы работы.
Что мы с вами сделаем?
В этом посте мы создадим Telegram-бота, который будет принимать личные сообщения только в нерабочее время и для ответа использовать ChatGPT от OpenAI.
Поскольку OpenAI недоступен на территории РФ, вместо него будем использовать сервис NeuroAPI. Он предоставляет доступ к OpenAI из России и СНГ по более низким ценам.
Как это можно использовать?
Описанный в посте бот можно будет использовать как частному лицу, сделав личного ассистента на время отсутствия в сети, так и бизнесу для взаимодействия с клиентами в нерабочее время.
Главная сложность будет заключаться в составлении грамотного "системного промта", покрывающего ваши потребности.
Подключение бота в профиле.
Для проекта вам нужен бот, как его создать рассказано в посте "AIOgram3 1.5. Регистрация бота"
После создания бота и получения токена, в интерфейсе
BotFather, выполните команду /mybots для вывода списка всех ботов.Выберите нужного бота.
Затем в открывшемся меню выберите пункт "Bot Settings".
В следующем меню выберите пункт "Business Mode".
Включите бизнес режим.
После того, как включили бизнес режим для бота, откройте настройки Telegram и выберите пункт "Telegram для бизнеса", а в нём пункт "Чат-боты".
В открывшемся окне в первое поле пропишите ссылку на бота
t.iss.one/mybot или его имя @mybot.Готово.
Подготовка проекта.
Создайте новый проект в удобной для вас IDE и активируйте виртуальное окружение.
Если вы пользуетесь PyCharm, то виртуальное окружение создаст IDE для нового проекта.
Если вы пользуетесь VSCode, то его придётся создать вручную, выполнив следующие команды:
python -m venv .venv
# для Windows
venv\Scripts\activate.ps1 или venv\Scripts\activate.bat
# для *NIX-систем
source venv/bin/activate
В проекте используются следующие библиотеки:
-
aiogram - Фреймворк для бота.-
pydantic-settings - Библиотека для создания классов конфигураций.-
openai - Официальная библиотека OpenAI для Python.-
pytz - Библиотека для работы с часовыми поясами.-
httpx - Современная библиотека для создания синхронных/асинхронных запросов.-
redis - Библиотека для подключения к Redis.Установите их, выполнив команду:
pip install -U aiogram pydantic-settings openai pytz httpx redis
Создайте файл
requirements.txt и внесите в него установленные библиотеки:aiogram3.6.0
pydantic-settings2.2.1
openai1.29.0
pytz2024.1
httpx0.27.0
redis5.0.4
Далее создайте файл
.env для хранения переменных окружения.Необходимы следующие переменные:
-
token - Токен бота, полученный от BotFather.-
admin_id - Telegram-id администратора.-
openai_key - API-ключ полученный на сайте NeuroAPI или OpenAI.-
openai_base_url - Адрес прокси-сервера для OpenAI.-
redis_host - Хост для подключения к Redis. В нашем случае используется Docker compose, поэтому прописываем имя сервиса - redis.-
delay - Задержка между ответами в минутах. Об этом ниже.Пример:
token=12345:abcd
admin_id=123456789
openai_key=sk-abcd
openai_base_url=https://lk.neuroapi.host/v1
redis_host=redis
delay=10
Также создайте файл
main.py и пакет (Python package) app.Файл конфигурации.
🔥4👍1
