Python3000
36 subscribers
3 photos
4 files
6 links
Задачи, решения,библиотеки,и т.д.

В комментариях нельзя спамить,флудить,выкладывать рекламу,оскорблять кого либо в комментариях,сдать стикеры плохого характера.За нарушение - сначала предупреждение, потом бан.

Мои соц:
Дзен- dzen.ru/py3000
Download Telegram
Ешо нихто не сдэлал😞
Но я лекцию завтра или сегодня напишу😎
🥰1
Хмм, все же нужно лекции выпускать пожалуй, давайте, когда кто то зделает дз последнее, я постараюсь как можно быстрее выпустить её. А так я сегодня мб по делаю...
🥰1🤯1🌭1🤪1💊1
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжим...

После долгого перерыва, я все же сделаю что-нибудь...

Продолжим последнюю тему, manim позволяет создавать красивые анимации текста, фигур и других объектов, я уже показал, как сделать звезду. Существуют различные анимации появления объектов. Анимация, показанная в последнем примере - это обрисовка объекта по контуру и заполнение его. Но давайте посмотрим на другие анимации появления:
1. FadeIn - просто появление...
from manim import *
class first(Scene) :
    def construct(self) :
        star=Star()
        self.play(fadeIn(star))

Тут все просто
2. add - добавление объекта на сцену без анимации
from manim import *
class first(Scene) :
    def construct(self) :
        star=Star()
        self.add(star)

Существуют remove и fadeOut, они удаляют объекты соответственно...
Также есть всякие growFromCenter, но они очевидно что делают, так что я рассказывать не буду..

Дз:
Сделайте анимацию со всеми этими способами появления, поиграйтесь)))
❤‍🔥1🔥1
Всем дратути....
Я сейчас разрабатываю собственный физический движок для создания игр. Хотите ли вы, чтобы я рассказывал как я его делаю тут?
👎2👍1🥰1🍌1
👎3🍌1
Ухты, кто то канал смотрит), ладно
👎2🔥1🍌1
За целых 15 минут я сделал рабочую анимацию, так то она работает очень просто, в каждом объекте есть функция update куда я передаю количество кадров, и в зависимости от них я прокручиваю кадры)))
🔥2
score - количество кадров с начала работы(понятно что по модулю 10^6)
Сегодня написал скрипт получения горизонтального направления, считывая нажатия стрелочек и добавил классу Sprite(это тот, который отвечает за каринку, соответствующую объекту) функцию, которая разворачивает изображение)
🔥2
Задача:
Аня идет по лестнице, каждый шаг она выбирает действие
1. Если ноги у неё на одной ступеньке, шагнуть левой ногой, сложность шага должна быть не больше l1.
2. Если ноги у неё на одной ступеньке, она может шагнуть правой ногой, сложность шага не должна превышать r1.
3.Если ноги у Ани на разных ступеньках, она может поставить одну ногу рядом с другой.
4. Если ноги у Ани на разных ступеньках, она может шагнуть той ногой, которая ниже, ставит её на ступеньку рядом с предыдущей и шагает не более чем на r2 или l2 для правой и левой ноги соответственно. Это происходит за одно действие

Вам даны высоты ступенек, их количество, l1, r1, l2, r2.
Найдите за какое минимальное число шагов обе ноги окажутся на верхней ступеньке.
Задачу придумал, конечно, не я
Всем здравствуйте, хочу пожелать удачи всем, кто идет сегодня на Олимпиаду по информатике.

Пожалуй один из наиболее обширных алгоритмов - динамика(ну вариаций ±∞) . Мы помним что она бывает двумерной или трёхмерной, а может и одномерной. А так еще важно помнить, что проход по двумерному массиву будет стоить вам произведение его длин, будьте осторожны с двумерной динамикой) Также не забываем про логарифм, это хорошая сложность. Получить её можно, например, используя meet in middle. Ну это как в сортировке слиянием у вас сортируются половинки, а потом их объединение, тут нужно не забыть, что логарифм умножится на сложность на кусочке.

Думаю не нужно объяснять, что писать сортировку на Олимпиаде не нужно, прекрасный c++ умеет сортировать с заданным алгоритмом. В sort есть третий аргумент - функция по которой он определяет что больше другого, она должна принимать два аргумента, возвращать true/false. Хорошо, это неплохо. Замечу, что на Олимпиаде 99% будут графы, DFS и BFS вам в помощь. Это алгоритмы обхода графов, их написание есть тут выше). Не думаю что на муниципе вам попадется Дейкстра какой-нибудь) . Мы не забываем, что существуют жадные алгоритмы, и они иногда работают. Не надо в первой задаче применять три бинпоиска по динамике и после этого получить граф решений по которому надо пройтись.


Даамс, получилось объемнее обычной лекции... Всем удачи)
Расскажите что вам показалось самым сложным, можете ещё что-то рассказать про тур
Всем "Hello". Сегодня я хочу рассказать про то, что все использовали хотя бы раз, но, возможно, не знают что это, и как это работает.

Рассмотрим задачу, мы делаем фреймворк и хотим, чтобы мы могли брать код пользователя и его использовать. Например, хотим взять функцию, которая была им написана, и изменить её так, чтобы к её выводу добавилось её название, список аргументов и что то ещё. С этим нам помогут ДЕКОРАТОРЫ.

Декораторы - просто функции, но они принимают как аргумент функцию и возвращают функцию). Рассмотрим пример(мб понятнее станет).
def dec(f) :
    def newfunk():
        return "Hello from decorator" + f()
# обращу внимание, что тут используется значение функции.
return newfunk

def funk():
    return "Hello from function"

funk = f(funk)
funk()

Вывод:
Hello from decorator Hello from function.

Так вот, думаю принцип понятен, давайте, для закрепления пару упражнений, и как только кто-то сделает их, я выпускаю следующий блок)

1. Напишите декоратор, который превращает функцию, возвращающую 5, в функцию, возвращающую 6.
2. Пусть есть глобальная строка s. Функция её выводит. Сделайте декоратор, который заставляет печатать s большими буквами.
🔥2🤓1
Всех С Новым годом! Желаю всем удачи, удачной компиляции кода и высоких баллов на олимпиадах)))

Постораюсь в этом году больше лекций писать)
🙏1
Я хочу сделать курс с просто 0 порогом входа, хотите?
Anonymous Poll
81%
Да, я буду читать, даже делать иногда
19%
Нуууу, нет наверно
Чтош... Начнем наш быстрый экскурс по одному из самых известных фреймворков для создания сайтов на python. Django, прошу любить и жаловать. Если вы выберете его, то вы сразу получаете кучу плюсов, а один из самых важных - есть документация. Вы не дружите с английским? Есть на русском.

Хорошо, что мы сделаем(я надеюсь) за это время? Мы напишем небольшой сайт, что-то типа Интернет магазина, список товаров, у каждого есть отзывы и оценка. Конечно, это будет простой монолит с базой данных на основе SQLite. Если вам интересно, какие архитектуры сейчас используются и как они устроены(и почему спор монолит vs микросервисы больше не актуален), то напишите об этом в комментариях.

Хорошо, что-то я вам много наобещал, а мы так и ничего не сделали. Начнем, как и любую библиотеку, нам нужно её установить, пишем:
pip install django

Успех, теперь создадим сам проект, напишем ещё:
django-admin startproject name_of_your_project

Логично, туда нужно подставить название вашего проекта.

После этого у вас создастся папка с названием вашего проекта, а внутри ещё одна и файлик manage.py. Он нам понадобится ещё много раз, например, прямо сейчас.
python manage.py runserver

После выполнения запуститься локальный сервер(это ещё один плюс Джанго), перейдите на адрес, который он вам дал(обычно это localhost:8000). Вы должны увидеть сообщение приветствия. У нас хорошая статистика, пока 0 строчек кода.

На этом пока что хватит, в этом курсе я не буду давать ДЗ, вы можете просто написать, что мол у меня получилось или у меня ошибка.
🔥3
Продолжим, мы создали проект, давайте посмотрим что у нас есть. В файле settings.py, логично, настройки, есть настройки языка, дебаг, настройки каталогов, файл urls.py отвечает за различные страницы сайта. Хорошо, любой сайт состоит из apps(приложений), например, мы можем создать приложение каталога товаров, оформления заказов и панели администратора. Создадим первое приложение.
python manage.py startapp shop

Теперь у вас появилась папка приложения, но мне не очень нравится её расположение, я бы хотел, чтобы она лежала в парке apps, внутри проекта. Перенесем её туда, зайдем в settings.py и создадим переменную
PROJECT_ROOT = os.path.dirname(__file__) 
sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps"))

Вторая строчка просто нужна для расширения среды, не забудьте импортировать sys. Можете запустить сервер и проверить, что никаких ошибок не возникает(кстати, если вы меняете какие-то файлы, то сервер можно не перезапускать, он сам применит изменения).

Отлично, заходим в папку приложения и видим:
1. Папку migrations - папка необходимая для работы с БД.
2. Файл models.py - один из самых важных файлов, про него чуть позже.
3. Файл views.py - тоже очень важно, будет нужен для выдачи ответов.
4. Ещё несколько файлов, которые я пока оставлю без комментариев.

Хорошо, для того, чтобы продолжить маленькая справка по тому, как взаимодействуют хостинг(сайт) и компьютер пользователя. Идете вы, например, смотреть Ютуб, ваш компьютер делает http запрос на сервер, он хочет получить страничку. Такой тип запросов называется GET-запрос. Сервер ищет, что он будет выдавать на этот запрос, а потом отправляет страницу. После нескольких итераций получения всех файлов(например само видео будет передаваться отдельно, как и таблицы стилей). За обработку запроса отвечает как раз файл urls.py. А вот за генерацию ответа - views.py. Давайте научимся отдавать простейшие ответы при заходе в каталог.

Сначала напишем как мы хотим отвечать на запрос. Для этого заходим во views.py, стираем всё и записываем:
from django.http import HttpResponse

def index(request):
return HttpResponse("Тук-тук-тук")

Здесь мы инициализировали просто функции, которые отдают ответ в виде строки.
Но нам также нужно сопоставить путям, которые запрашивает сайт(например https://mysite/page/comments), ответы. Для этого и существует urls.py. Поскольку одна из страниц относится к нашему приложению, то давайте и привязку будем делать в нём.
Создаем в парке приложения файл urls.py и пишем:
from django.urls import path
from . import views

urlpatterns = [
path('', views.index, name = "index")
]

Этим мы сказали, что начальная страница нашего приложения (именно его, мы создадим путь до него, адрес у этой страницы будет типа http://site.ru/shop/) будет возвращать ответ в соответствии с функцией index во views.py.

Осталось только настроить привязки в самом проекте, поэтому находим такой же файл в папке проекта и добавляем:
... 
urlpatterns=[
path("shop/", include("shop.urls")),
#тут строка с админкой
]
...

Не забудьте в импорте кроме path импортировать ещё и include.
В этом фрагменте мы все привязки из приложения shop поставили после пути http://site.ru/shop/. То есть мы как бы задали то, откуда начинается наше приложение.

Теперь, если вы откроете в адресной строке этот путь то вы увидите текст.

Оставлю вас пока с этим, удачи!