Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. исходник: https://dumpz.org/bASGKD8cCFDf
Я туплю нереально, что делаю не так в коде? Учу джанго и ни в какую не грузится изображение для товара. При этом если грузить со страницы админки - проблем нет, грузит в медиарут и все хорошо.
Сейчас наступает 2021 год, я решил начать свой вкат в питон (преимущественно в нейросети, может ещё потом веб) начиная с первого дня нового года упорно заниматся изучением темы.
Подумалось мне, было бы неплохо осуществлять с кем-то совместно вкат, можно вопросы друг-другу задавать, объяснять темы, пилить совместные проекты.
Всё что имею при себе - базовые знания питона и программирования (переменные, циклы, ветвления, списки, словари, исключения вот это всё).
Если кому интересно пишите на фейкомыло johntitor47@yandex.ru
Сейчас наступает 2021 год, я решил начать свой вкат в питон (преимущественно в нейросети, может ещё потом веб) начиная с первого дня нового года упорно заниматся изучением темы.
Подумалось мне, было бы неплохо осуществлять с кем-то совместно вкат, можно вопросы друг-другу задавать, объяснять темы, пилить совместные проекты.
Всё что имею при себе - базовые знания питона и программирования (переменные, циклы, ветвления, списки, словари, исключения вот это всё).
Если кому интересно пишите на фейкомыло johntitor47@yandex.ru
норм ли в питоне считать статистику с очень маленькими числами (там типа 1.23*10^(-456) ) не наебнется ли сильно ничего, не зачмырят ли вообще за использование питона а не R какого-нибудь?
>>1896798 (OP) Что-то я не врубаюсь, каким именно образом в Пистоне реализована асинхронность на коллбэках? Вот скрин из одной небольшой проги-примера которая ходит по нескольким url которые заданы у нас в списке. Я конечно понимаю что на верхнем уровне у нас пиздато исполняется функция http_client.fetch которая ничего не блокирует и ждет получения результата чтобы "выстрелить" коллбек но... как это блин происходит? Если я захочу написать такую же функцию которая работает на коллбеках я тут же упрусь в том что моя функция после вызова заблокируется, "застрянет" и будет ждать исполнения кода прежде чем задействовать коллбек Как это блин работает?
>>1897945 Какое блять "легаси"? Асинхронка на коллбеках это основа основ. Вся асинхронность жс тоже восходит к ним, только вот там ивенты и коллбеки нативно вписаны в движок, поэтому вопросов к работе кода на пикриле не возникает
>>1897943 Хз что там в этом торнадо. Скорее всего fetch ничего не ждёт вообще, эта функция регистрирует коллбэк для соответствующего url А дальше запускается цикл обработки сообщений, который принимает входящее соединение, парсит его, и как распарсит, так вызывает соответствующий URL.
Тут вообще такого настоящего асинхронного нет, асинхронное если есть, то в функции обработки и парсинга входящих соединений.
ps: и да, тебе надо смотреть на асинхронность в asyncio и фреймворки, на нём основанные. Торнадо это уже легаси.
>>1897958 >Тебе дали нативный async/await Ммм, тебе бы на жопаскрипте писать. Дохрена макак сейчас развелось, которые про Промисы не слыхали нинужно жи!, но зато async/await вовсю юзают, правда чуть чего несутся роняя говно к своему сеньору-помидору чтобы пояснил почему их дерьмо вдруг плюется ошибками
>>1897968 >джанга может в async await Норм посмешил. async-await уровня /b просто ты щас кекнешь, но Торнадо асинхронный by design, и поддержка async-await там подрублена начиная с 2015
>>1897964 Джанго это очень серьёзный фреймворк для CRUD серверов. Немного легаси, так как его проектировали синхронным, пытаются добавить асинхронность, но с болью. Но замены ему нет, он единственный в своей нише.
Торнадо асинхронный фреймворк, сделанный ещё до asyncio. Имел своё велосипедное решение для асинхронности. Но вроде поддерживает как-то не очень прямо и asyncio. Тем не менее это тормоз, фреймворк не даёт дополнительных возможностей относительно более новых, которые проектировались под asyncio, при этом проигрывает им в производительности. В общем классическое legacy.
>>1898010 Future это аналог промисов. Это некоторый объект, который может быть в нескольких состояниях, хранит список коллбэков, которые надо вызвать, когда объект будет исполнен.
Task это задача, которая зарегистрирована в цикле обработки событий. Цикл обработки отвечает за то, чтобы периодически переключать исполнение на эту задачу, когда она временно отдаст управление, переключать на следующую.
Менее очевидная разница между корутиной и задачей. Корутина сама по себе в цикле не зарегистрирована и передачи управления на неё не происходит. И если ты в коде напишешь await my_coro() и внутри корутины явно регистрации задачи не происходит, то у тебя выполнение останется полностью синхронным.
>>1898189 >И хочу это сделать с помощью питона. Сложно или невозможно. Просто настрой адблок и будет тебе счастье. Только ты же его сам постоянно отключать будешь.
Иначе тебе нужно делать прокси. Причём или веб прокси, который будет качать сайт и подменять URL, или тебе придётся возиться с сертификатами, делать подмену сертификатов httsp, прописывать в браузер свой сертификат и т.п.
Потому что браузер устанавливает с сайтом защищённое соединение и просто так вторгнуться в него и фильтровать url ты не можешь, максимум ты можешь доступ к доменам ограничивать.
Короче единственный разумный вариант это адблок настроить.
Задам вопрос в этом году. Как с помощью pydantic разобрать такое дерьмо: TaxVAT. Если TaxVat ещё могу превратить в tax_vat, то как быть в первом случае? Даже в headings не превратить
>>1898567 map и другие подобные фичи подходят для прогнать какую-то небольшую операцию для коллекции и получить результат. Ты можешь изъебнуться и заменить ими вообще все форы, но это будет громоздко и неочевидно.
>>1898674 Давайте теперь все говорить как умственно отсталые потому что васе орку который питается стекломоем непонятно. И считать на пальцах и счета с костяшками тоже. Так?
>>1898567 В жс-треде буквально недавно был очередной срач на тему. Какой-то пизданутый ФПшник верещал что обычные циклы нинужны и по возможности надо всего городить map-reduce-filter парашу ибо "так пиздатее" Только вот цикл for максимально нативен и понятен и часто нет нужды городить конструкции из хуй пойми чего лишь бы ублажить ФПшника
>>1898830 Но мап действительно не даёт никаких преимуществ. Давал бы, если бы бы лучше поддержан в языке, если бы можно было бы цепочки вызовов делать my_array.map(foo).map(fuzz).filter(buzz) но в питоне этого нет.
В питоне реализовано так, что никаких преимуществ относительно генераторов списка или генераторных выражений нет. Причём генераторы списков куда более понятные и читаемые.
>>1898884 Цикл целиком слишком громоздкий, map может сократить код.
Но конкретно в питоне есть генераторные выражения, которые фактически один в один транслируются в map, и поэтому map теряет смысл. Хотя вложенные map, наверное, всё-таки более читаемые будут, меньше скобок и символов, больше слов.
Если бы в питоне можно было нативно цепочки из map и других функций делать, был бы смысл. Но этого нет.
>>1898923 В случае если ты один раз в теле цикла используешь t-квадрат да. Но если несколько раз, то в цикле придётся или делать дублирование кода, перемножать каждый раз, или вводить дополнительную переменную.
>>1898929 И в чем проблема? Если у тебя какая-то простая трансформация, то можно обойтись однострочником без переменных, а в форе можно и развернуться.
>>1898943 Для map да, большого профита нет. Одна дополнительная строчка в теле цикла читаемости добавит.
filter может дать куда больше профита, потому что его придётся заменять тем, что в теле цикла вставлять if-continue, что усложняет логику кода и не очень красиво.
А filter дополнительно можно обернуть в enumerate, и тогда уже эквивалентную логику сильно сложнее реализовать.
Вообще смысл в том, что map-filter и т.п. операции по-настоящему стреляют, когда объединяются в цепочки. Но в питоне это не поддержано как следует, а потому неудобно и смысл теряется.
>>1898978 Не знаю, не проглотит ли двач что-нибудь. Пример: with open('file.txt', 'rt', encoding='utf-8') as ff: ____for index, line in enumerate(map(str.rstrip, filter(str.strip, ff))): ________print (index, line)
код, который читает текстовый файл, игнорирует пустые строки (включая состоящие из одних пробелов), и выводит на экран номер строки в отфильтрованной нумерации, с обрезанным заключительным "\n"
Немного громоздко, но во что превратится код, если вот этими трюками не пользоваться? Придётся добавлять в теле цикла проверку на пустоту, заводить свой счётчик строк и инкрементировать его, потом отдельно обрезать.
Не скажу, что это какой-то прямо жизненный пример, чисто иллюстрация идеи.
На практике ограничения на map-filter довольно большие, приучаешься поэтому ими не пользоваться даже тогда, когда было бы с ними лучше.
Разница есть, но треть. И это только потому, что очень примитивные операции, на которых скорость точно не про питон. Под pypy при этом работает раз в 30 быстрее где-то, там другие соотношения, в зависимости от версии, но для объективного результата надо тест-платформу переделывать.
>>1898996 Ну я так понял мапы-фильтры хватанули где-то на старте из других языков, а потом уже допилили свои нативные и более выразительные компрехенсы и генераторные выражения, а эти остались как легаси. Иногда можно ввернуть красиво, не более. Но с условиями реально коряво, ждем когда морж пойдет в люди, уже хоть что-то.
хочу сделать, чтобы на сайте при выборе дат выгружалась таблица из БД. Например, выбираю с 1 по 15 число, выгружается визуально на HTML/CSS таблица с 1 по 15 число с количеством отработанных часов сотрудников. Следовательно, будет 15 столбцов Если выберу с 1 по 10, то 10 столбов. Как это реализовать?
>>1899114 Епт, что за фреймворк у тебя? Не говоря уже о том что это элементарная хуйня уровня sql и postgresql (если выберешь ее), которая трснаслируется в sqlaclhecmy, в пистон и в json
Как билтин ексепшну запретить вызываться? Например мне нужно чтобы TypeError вообще не участвовал в одном блоке, а были только кастомные мои исключения, но в некоторых ситуациях эта хуйня поднимается
Назрел вопрос: насколько важно учить алгоритмы при изучении Питона? Я вот уже какое-то время учу, и вообще ничего по этой теме не смотрел пока. Насколько оно нужно и полезно? Какие есть хорошие книги?
Появился хитрый план сэкономить переменную, но похоже он не увечлся успехом. Я открываю файл, кидаю туда данные и сразу закрываю его, но как я понял, так делать нельзя?
Двощане, я щас минут 30 ебался с pinax потому что понадобилось сделать сайтик с подтверждением по почте, но последнее обновление там было еще в 2016 году и приходится некоторые моменты самому править, типа вместо {% load staticfiles %} писать {% load static %} в файах модуля, хотел поинтересоваться что щас актуально для этой задачи, чтобы костыли не писать свои, а взять отлаженный модуль, либо забить на это и надеяться что позже не встречу критических ошибок в модуле(как я понял он не обновлялся после джанги 1.7)
Не кидайте палками, я только спросить: очередной вкатыш, появилась потребность вывода уведомлений-напоминаний на рабочий стол win 10.
На чем можно реализовать данную вещь без говна и палок? Уровень около-нулевой, поэтому и спрашиваю. Была идея попробовать сделать бота в Телеге для этих целей, но может, есть что-то лучше?
>>1900204 >появилась потребность вывода уведомлений-напоминаний на рабочий стол win 10 Сначала хотел серьезно что-то написать но потом увидел >>1900204 >Уровень около-нулевой >>1900257 >написать это все с нуля
Когда запускаю программу через subprocess в винде, то спавнится черное окно с консолечкой на пол экрана. Это можно пофиксить как-то? Когда делаю то же самое в GNU/Linux, то ничего подобного не происходит. Мне надо сделать, чтобы пользователи моей проги на винде не пугались. Мой код:
Получше нашел кое-что: передать в Popen аргумент startupinfo=si, а перед этим выставить si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
Тогда консолечка не возникает, но фокус у окна куда-то пропадает (как и в случае с shell=True, собственно) Попробую фокус обратно вернуть через какой-нибудь дополнительный вызов.
Может, еще натолкнете на мысль почему continue (в моем понимании) работает не так, как я этого хочу?
Написав строчку if sandwich_order == 'sandwich_pastrami': continue , я предполагал, что цикл начнется по новой и не будет включать сандвичи с пастрами. Что я сделал не так?
есть вопрос по поводу клавиатуры бота в телеграме пишу с помощью telebot, да, знаю, python-telegram-bot или как там его вроде лучше, но этот проще, а я совсем новичок
примерно такой кусочек кода: if message.text == 'сап двач': bot.send_message(message.chat.id, 'пошел нахуй', reply_markup=keyboard_russian)
и если этот бот находится в беседе, то при написании "сап двач" русская клавиатура открывается у всех кто находится в беседе а мне надо чтоб открывалась только у того кто написал "сап двач" как это сделать?
Не понял А что, так низзя? Как мне матчить вот хз какие цифры в ключах словарей? Я конечно понимаю что можно startswith но так получаются длинные конструкции
>>1901041 >>1901057 У тебя неправильно сделано и сравниваешь не то. Надо первой строчкой внутри while сделать pop и результат сравнивать уже, а ты сравниваешь сам список со строкой.
>>1901064 Суть словарей в том, что ты должен знать ключи и использовать их для извлечения значений. В случае твоего наркоманского кейса надо итерировать по наличным ключам и матчить. Но в целом так быть не должно, значит, что ты делаешь что-то не так.
>>1901034 я уже вроде сам разобрался, клавиатурам добавил selective=True а сообщениям, вызывающим эти клавиатуры, добавил reply_to_message_id=message.id надо было просто полистать документацию к апи телегиhttps://core.telegram.org/bots/api
>>1901064 Ты так не только ключи, но и значения не выберешь.
Если тебе такая конструкция нужна постоянно, разумный вариант был бы написать свой класс, похожий за словарь, но поддерживающий дополнительно быструю выборку по подобным ключам.
>Я конечно понимаю что можно startswith но так получаются длинные конструкции Добавлятся всего одна строчка.
Подскажите, решил я воспользоваться модулем allauth для джанги и мне нужно добавить свои поля, поменять формы и т.д для регистрации пользователей, есть ли какое-то правильное решение для этого, чтобы все остальное работало как прежде или нужно лезть в модуль и там вручную менять код, чтобы мои поля были в бд, отображались в формах и т.д? Единственное решение кроме правки кода мне кажется это делать свою модель и коннектить ее один к одному к модели из модуля allauth, но ведь вероятно есть более правильное решение, подскажите плиз
>>1901363 Я полагаю что как-то через наследование можно сделать, но не пойму в каком моменте и как его применять, например я наследуюсь полностью от моделей из модуля, добавляю свои поля, тоже и с формами, как мне потом сделать так, чтобы при запросах у меня отображалась не стандартная форма, а моя кастомная
>>1901418 Я попробовал создать файл, в котором кроме print("hello world") ничего нет. Потом собрал его с помощью pyinstaller. Действительно 20мб получается. Есть ли способы уменьшить размер? Хотя бы до 7 было бы уже классно.
>>1901543 Попробовал собрать с nuitka, после чего запускать под докером для проверки переносимости. Всё под линуксом --standalone --onefile как следует не заработал, то есть собрал в один файл, выкачав какую-то библиотеку appimage с чьего-то гитхаба, локально файл запустился, под докером отказался, хочет библиотеки, как я понимаю, с того же гитхаба. То есть не переносится. А так файл был размером 12.5 Мб.
Если просто --standalone, то создаёт каталог dist размером 30 Мб. Но тоже не идеальная версия. Если я под докером делаю сборку на базе убунты, то в ней нормально всё работает. Если же делаю сборку на базе alpine или scratch, то почему-то не хочет, видимо не хватает библиотек, по ldd много зависимостей.
Попробую минимальную докер scratch сборку сделать со всеми зависимостями, интересно, сколько займёт. И под виндой тоже надо бы потестировать.
Хочу написать программу, которая будет проверять наличие товара в интернет магазине (озон). Первая мысль, которая пришла в глову - просто парсить страницу и смотреть когда продукт появится в наличии, но уверен, что есть более изящный способ. Предполагаю, что можно куда-то отправить запрос и получить необходимые данные. Что можно почитать, чтобы понять откуда сайт узнает сток и как решить мою проблему
Нужна помощь шарящих людей в DRF Пишу тесты, эндпоинт принимает некоторые данные и файл через form-data. В данных есть nested вложенности, которые я обрабатываю в сериализаторе. Но проблема в том что из-за того что реквест идет через format="multipart", вложенности прилетают не как dict, а как str. Сталкивался кто-то с таким, и как можно это пофиксить? Для обработки данных использую MultiPartParser и FormParser парсеры
>>1901722 Я вообще подозреваю, что от системных зависимостей от /lib и /lib64 можно избавиться, пронести каким-то образом флаг -static в gcc, которым всё реально собирается.
Пока не вникал особо, в реальной практике пока nuitka не использовал, ХЗ сколько там подводных камней и какие реальные возможности.
Всем драсте, у меня встал вопрос. Я значит решил с помощью питона связать два компа, чтобы на них можно было играть в пинг понг, ну чтобы мячи через экраны летал. И при попытке передать координаты мяча у меня буфер сокета на сервере забивается из-за того, что на нём висят старые координаты мяча и не удаляюются. Как собственно мне удалить старые координаты мяча из буфера сервера? https://pastebin.com/1hhJ9Hdr - Это правый кусок программы, у левого логика идентична https://pastebin.com/cNVCvWiX - Это сам сервер
>>1902097 Не вникал в твой код, но ошибок там немало.
Ошибка, которая может и не стрельнёт, если пакеты маленькие - ты не можешь гарантировать, что читая из сокета пакет получишь его целиком.
Это актуально, если ты большие пакеты получаешь, которые в один ip пакет не влезают, 1400 байт условно. На пакетах в 500 байт в реальности скорее всего проблему никогда не словишь.
Сетевые программы вообще иначе пишут, через многопоточность и асинхронность. Ты делаешь синхронно, блокируясь на ожидании данных.
Если так, то это грубо и примитивно, но в первом приближении можно.
Попробуй другую схему. В месте, где ты читаешь данные из сокета, читаешь данные до упора в какой-нибудь буфер, может быть там будет один пакет, может ни одного, может пять. Как прочитаешь, игнорируешь все, кроме последнего.
короч, сидел такой в админах, погромировал на пятоне автоматизашку, держал прод в онлайне и тут такое бац, "хош демопс, четко жестко" и дернуло пофлексить немного. ну чё добился, ммм?
>>1902097 знаешь, это типо классно что ты пытаешься понять чому и куда, но правда это не в таком объеме нужно ирл. лучше учи какой-нибудь веб фреймворк, типо классического джанго, либо анинхронщины фласка. больше опыта принесет реального.
When called with -m module-name, the given module is located on the Python module path and executed as a script.
Питон в этом случае вызывает модуль как программу. И соответственно переменная __nam__ имеет значение "__main__", в скрипте активируется код, который не запускается, когда этот скрип подключаешь как модуль.
>Почему py pip istall zalupa не работает ХЗ как там у тебя всё установлено и настроено, ХЗ какая система. Но чтобы работал pip как программа, как минимум он должен быть в системе установлен и доступен не только как модуль, но и как вызываемый скрипт. Что не всегда так, насколько я помню.
команда выглядит как pip install xxxxx или pip3, или может быть pip3.8, но без python Надо при этом проверить, какая версия, соответствует ли версии питона.
>>1902275 Идешь на stepik и проходишь в порядке: биггикс "поколение python" биоинформатика "программирование на python" биоинформатика "Python: основы и применение"
>>1902311 Пс. добавлю что это с моей точки зрения (с точки зрения нищего) и курс по твоей ссылке вполне возможно может быть нормальным, так что это был не ответ на вопрос а просто доп. информация к размышлению.
Как в lxml2 достать определенных потомков из xmlNode?
В xml нашел с помощью xpathEval интересующие меня ноды. Теперь в списке этих нод я хочу найти их потомков по определенному названию. Не могу понять какую команду использовать. Если я использую:
xmlNodeNmae.xpathEval('запрос')
то он опять от корня ищет (зачем так сделано?), а мне надо от этой ноды, от которой запущено.
если что мой уровень: вчера закончил бесплатный курс на степике, т.е. никакой, поэтому сильно не поливайте.
Читаю книгу "Погружение в паттерны проектирования" и столкнулся с непониманием В книге все примеры на псевдокоде. В прикрепленных картинках, говорится о таком понятии как "интерфейс" и я не могу понять, как бы на пайтоне выглядела реализация примера с летательными аппаратами и аэродромом. Что есть интерфейс в данном случае и как это все будет выглядеть в коде? Можно пример пожалуйста
>>1896798 (OP) Хочу с помощью питона сделать лабу, там надо проверить зависимость времени запроса от размера пакета
Скачал либу icmplib, использую там ping но как только размер пакеты превышает 1000 байт он мне выдает: "[WinError 10040] Сообщение, отправленное на сокет датаграмм, было больше, чем буфер внутренних сообщений или был превышен иной сетевой параметр. Также возможно, что буфер для принятия сообщения был меньше, чем размер сообщения" (в обычном терминале все работает нормально)
Есть еще какие-то способы послать icmp-запросы и прочитать метаданные ответа? В терминале ответ он печатает на экране что не очень-то удобно
Пистоны, помогите с такой тривиальной задачей, как сделать диапазон дробных чисел, пожалуйста. Есть ли какая-то встроенная функция, чтобы получить нужное [0, 0.1, 0.2, 0.3, ...]? Использовал list(np.linspace(0,1,11)), так он мне показывает: [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]
>>1903025 Тогда встречный вопрос: как в питоне выполнить команду в терминале (ну допустим это subprocess.call) и что главное - прочитать и сохранить вывод из этого терминала?
Я меня глупый вопрос, прошу не закидывать ссаными тряпками: если я научусь создавать сайты на Django, я смогу зарабатывать на фрилансе? Или для более быстрого вкатывания надо что-то другое учить?
>>1903077 Двачую, сам написал за 70 даларов вебсервис и было предложение для сайта интересного, но потом дядя забил на свою идею, но я хз все еще это мне так повезло или реально в этом потребноть нужна
Такая тема, строю последовательность подобного плана:
Сначала там идут значения (100,200 ... 600) с шагом 100 Затем идут (1000, 3500 ... 11000) с шагом 2500 И потом (20000, 30000 ... 100000) с шагом 10000
Очевидно что это можно вбить и руками, но хотелось бы адекватный алгоритм для подобного. Да, я знаю что можно написать функцию в которой последовательно вызывается несколько циклов for где мы создаем эти значения, но хотелось бы придумать общий итератор, который выдавал бы пары multiplier (множитель, он же "шаг"), count (сколько раз надо пройтись по циклу), start (начальное значение) и который помог бы уменьшить объем кода
>>1903010 Для питона это нетипичный подход, из-а его динамической природы. Создавать отдельную сущность для интерфейса объекта больше подходит для java или C#, потому что у них статическая типизация, т.е. если ты в джаве создашь переменную строкового типа и попробуешь присвоить ей число, компилятор пошлет тебя нахуй, потому что это переменная строкового типа, и она навсегда останется переменной строкового типа, а в питоне пожалуйста, напишешь сначала x = "qwerty", а потом x = 5, питон все схавает. Поэтому в питоне больше в ходу так называемая "утиная типизация", т.е. если что-то выглядит как утка, плавает как утка, и даже крякает как утка, то, скорее всего это и есть утка, ну по крайней мере если надо плавать и крякать она с этим справиться. На практике это выглядит так: если мы ждем, что на вход функции foo подадут объект aircraft, который имеет метод fly(), мы просто берем и без задней мысли вызываем в теле функции aircraft.fly()
def foo(aircraft): ... aircraft.fly() ...
если вдруг, по какой-то причине в функцию подадут объект, у которого нет такого метода, то вылитит исключение, задача тех, кто будет использовать эту функцию проверять, чтобы в функцию попадали нужные объекты, либо обрабатывать соответствующее исключение. При таком подходе не важно, кто родитель используемого класса, важно, что у него есть требуемый метод fly(). Если хочется создать именно интерфейс, как отдельную сущность, как в твоей книжке, это тоже возможно. Можно создать класс FlyingTranspot с одним единственным методом fly(), и не делать для него никаккой реализации, типа
class FlyingTranspot: def fly(self): ...
или даже выбрасывать исключение:
class FlyingTranspot: def fly(self): raise NotImplementedError
Потом все классы, которые будут использовать как летательные средства, делать наследниками FlyingTranspot, и пропиывать свою реализацию fly(). Такой подход, наверное, лучше совмещать с аннотацями типов, аннотации опять таки не к чему не обязывают, их можно проверять с помощью статических анализаторов, чтобы находить потенциальные ощибки у себя, также среды разработки, вроде PyCharm, умеют их анализировать, ну и как дополнительная документация для кода, чтобы лучше понимать, что происходит, но это все актульно для больших проектов.
>>1903020 Да я хотел амбициозно с наскока написать консольную fb2 читалку в качестве практики, с дальнейшими перспективами дальнейшего наращивания функционала. В libxml2 (соответственно и lxml) вроде как есть проверка схемы xsd, что может быть полезным будущем. Пока что у меня получилось написать простенькую косенькую программу, которая выпукивает в консоль текст из текстовых тегов.
>>1903145 Раньше греб в фирме где интерфейсы в пистоне были хорошим тоном (наверно потому что их притащили с фронта фуллстек-разрабы, которые писали на ангуляре и TypeScript)
Это снова я, парень с пинг-понгом, и у меня еще один вопрос Значит у меня два устройства подключаются по s.accept(), как мне обратится к ним по отдельности? Типо выглядит это как conn, addr = s.accept(), и вот как мне обратится к каждому конн по отдельности?
>>1903276 s.accept тебе нужен для того, чтобы принимать входящие соединения. Если ты подключаешься к другому компьютеру, то accept не нужен.
Вообще тебе надо разобраться с архитектутой, кто к кому подключается.
Если у тебя два экземпляра пинг-понга запущены, то один из них должен быть сервером, принимать соединения, а другой или другие должны быть клиентами.
Возможны и более хитрые схемы.
То есть, одна программа слушает какой-нибудь порт, а другая подключается к первой программе.
Вообще ты лезешь в довольно квалифицированную область, к которой пока не очень готов. Я бы советовал сначала поиграть отдельно с сетевыми функциями, чтобы свободно в них себя чувствовать, все эти установки соедениний, пересылка данных, обработка обрывов соединений и т.п. А потом уже совмещать это с игрушкой.
Реально тебе ещё и важно с многопоточностью разобраться, чтобы один поток обрабатывал сеть, а другой саму игру, но это сложная тема. Или с асинхронностью, но это тоже сложно и ещё сложно дружить с графикой при этом.
Иначе ты просто предсказуемо утонешь в проблемах и напорешься просто на лес граблей.
Есть базовые системные либы, про которые надо знать json, pickle os, os.path, sys, time, glob re, itertools, random argparse какой-нибудь
Есть либы, за которыми стоят целые технологии программирования, то есть тут вопрос не либу изучить, а именно с технологиями разобраться threading, asyncio
Есть индустриальные либы, для промышленного программирования typing logging dataclasses pytest (последняя сторонняя либа, вместо штатной unittest)
Есть масса либ, которые нужны, если ты занимаешься конкретными направлениями, и не нужны в других случаях. В принципе про половину там можно сказать.
Что-то там какая-то экзотика, что-то легаси, что-то просто развлекуха.
>>1903418 1. актёрам трудно на сцене без декораций. они могут заблудиться 2. зрители не поймут, почему билет так дорого стоит. разве ты пришёл посмотреть на нихуя? а тут - хуяк! и декорации
>>1898567 current_h, pad = 5, 3 for line in win_text: ____w, h = draw.textsize(line, font=TEXT_FONT) ____draw.text(((MAX_W - w) / 2, current_h), line, fill=TEXT_COLOR, font=TEXT_FONT) ____current_h += h + pad
>>1903564 Нах мне объяснять? Я и сам тебе объясню, сопляку. Ты за слова свои ответь. То есть, приведи аналог на своём map для такого цикла for, как я привёл.
>>1903314 Ты не понял, у меня есть сервер, к которому подключается два компа, оба компа к серверу подключаются по conn, addr = s.accept(), как мне обратится к одному из этих компов?
Хочу отрисовать график "свечек", только это не обычный финансовый график где показано открытие/закрытие торгов, минимум и максимум, а свечка где есть только: минимум, максимум и среднее значение. Как такое сделать с помощью matplotlib?
>>1903321 Всяких разных библиртек и фреймворков просто дохуя, и они плодятся и развиваются, что конкретно учить, это все сильно зависит от твоих интересов. Для веба будет свой список актуальных либ, для датасайнса свой, и так далее. Есть много разных списков популярных либ. Например, https://github.com/vinta/awesome-python
У меня такое чувство, что тебе рановато о таком думать.
А у кого-нибудь есть опыт коммерческого использования монги с джангой? Мне нужно с геоданными работать, монга из коробки это имеет охуенно, и с помощью mongoengine я уже весь функционал запилил. Но не кринжово ли монгу с жангой использовать?
Немного не по теме но думаю питон мастера по умолчанию могут в регулярки. Есть куча информации вида:
<tag value="to4tomnenyjno_so_skobkami"/>
Есть регулярное выражение:
(<tag value=)(".*") 1 2
1, 2 это, как вы поняли группы которое мне возвращает через re.findall список кортежей вида [(1, 2)...(1, 2)] Можно через регулярки сделать чтобы оно сразу мне выдавало только вторую группу? Что-то вроде ^(начало слова), но в качестве начала слова принимать то что в первой группе.
>>1903765 >Так убери скобки из первой части. Спасибо, не знал что это так работает. На regex101.com подсвечивалось все и я думал оно мне будет засылать fullmatch т.е. и все вместе.
>>1903331 Спасибо, интересно было узнать именно базовые системные либы. Хороший, развернутый ответ. Что значит промышленное, индустриальное программирование? Я просто программист АСУТП (на заводах программирую)
>>1903367 Во, я это и хотел. Только думал мне накидают либы, а я буду документацию смотреть бегло
>>1903791 >Что значит промышленное, индустриальное программирование? Я просто программист АСУТП (на заводах программирую) Индустриальное, значит в индустрии программирования, когда ты работаешь над большими программами, с большим кодом, с долгим циклом поддержки, когда ты сам забываешь, что и зачем писал, когда несколько человек работает над кодом и т.п.
Когда ты делаешь лабы, олимпиады, литкод и т.п., это одна история, там тебе надо знать библиотеки вот для этого, всякие re, itertools, collections, может понадобиться что-нибудь вроде heapq и др. Чтобы компактно реализовывать разные алгоритмы.
Есть технологические либы вроде asyncio/threading. За ними стоят технологии программирования, ты не сможешь их изучить просто как библиотеки. Ты не сможешь ничего адекватно сделать, пока с технологиями не разберёшься, тебе придётся сначала конкретно сломать мозги, что довольно мучительно.
А есть просто "индустриальные". Они не дают каких-то дополнительных возможностей особых, можно обходиться и без них. Они в принципе не нужны, если ты делаешь программы для условных литкодов/кодеварс, они не нужны, если ты делаешь небольшие утилиты для своих нужд.
Но количество переходит в качество, и когда код большой и сложный, без этих инструментов становится сложно и они становятся действительно нужными. В общем это то, что нужно для работы, а не just for fun.
Ну и дальше есть масса библиотек и модулей для конкретных задач. Если ты ими занимаешься, они нужны. Если это задачи не трогаешь, то совсем не нужны.
>>1903843 Как я понимаю python это не про индустриальное программирование. На нем же QA-макаки, дата саентологи, девопсы с небольшим вкраплением джанго пишут. А это все не про долгоиграющие/тяжелые проекты.
Есть список кортежей. Типичный кортеж состоит из четырёх элементов. [(2, 4.3, 0.5), (1, 5.66, 9), (3, 0.4, 0)...] Самих же элементов в списке сотни. Как выбрать 5 элементов-кортежей, где второе значение кортежа, например, минимально?
>>1903856 Если мне нужен 1 элемент, у которого второе значение минимально, я просто делаю min(data, key = lambda t: t[1]) А мне надо 5 элементов выбрать, у которых вторые значения минимальны во всём списке.
>>1903855 >>1903854 У меня после it-бороды сложилось впечатление, что если писать что-то неимоверно сложное, то берут java, для среднего node.js, а для остальной херни wordpress
>>1903870 Глупости, на питоне 3.6+ версии очень легко писать крупные и средние проекты. Есть нормальная асинхронность, проверка типов и интерфейсов, легко подключить библиотеки на С или С++. Если нужна максимальная производительность, то лучше брать раст или го, они будут производительней джавы. Сейчас же монолиты не пишут, все дробят на сервисы.
>>1903870 В энтерпрайз секторе своя логика, там правят бал Java/C++/C#, это и традиции, и кодовая база, и куча разных решений, и разработчики с нужным опытом.
А вот в средних проектах, которые уже делают на чём-то более современном и гибком, у питона хорошие позиции и перспективы.
Нода зашла в сектор раньше, когда питон был в плачевном состоянии, в кризисе из-за неграмотной миграции с 2 в 3, без поддержки современных технологий.
Начиная с 3.5 ситуация стала меняться. Появляются asyncio, typing и другое. На третью ветку уже все библиотеки перекатили.
В то время как нода стала тонуть в болоте. Сам JS как язык жутко кривой и напрочь сливает питону во всём, по структурам данных, языковым конструкциям и т.п. Только callback функции удобнее писать, на что питон не рассчитан из-за отступов.
Помимо JS, в ноде смешиваются парадигмы, основные библиотеки построены на callback-based подходе, против современных async-await, основанных на промисах. Нужно криво стыковать. npm превратился в откровенное болото, с хипстерскими поделками, троянами и кодом, который должен работать и на морально устраревших браузерах, когда тебе реально нужна только работа на современных версиях ноды.
В общем сейчас выбор ноды для бэкенда не очень разумен. Он был понятен и разумен 5+ лет назад, но не сейчас.
>>1904165 Это ты где такой высер прочитал? Пыхтон пыхтит как пых на бэкэнде, нода говно. На бэке из скриптовых perl пиздец с какой натяжкой и изъёбкой, либо на FastCGI писать апликуху — c, c++, java, c#, но последнее весьма спорно.
Пыхтон на бэкэ это как та пикча про буханку-троллейбус.
Посмотрел базовый туториал по Си. https://youtu.be/oF6gZG6rFmQ?t=511 И что-то охуел от наличия УКАЗАТЕЛЕЙ. Неужели нельзя было реализовать язык с дефолтным поведением, чтобы любое повторное действие с переменными было бы через указатели?
>>1905053 указатели в си это такой кал, от которого в с++ поспешили избавиться путем ООП+RAII. Каждый класс в STL держит свои указатели при себе и не выдает это дерьмо наружу. А в си оно торчит и вызывает только одни проблемы.
>>1905053 Алсо, когда ты в пистоне передаешь объекты в функцию, они фактически тоже по ссылке/указателю передаются. Там нет копирования, пока ты сам не попросишь, сделав что-то вроде new = Obj(old)
Специфика указателей в Си это адресная арифметика, когда ты указатель можешь двигать вперёд-назад, когда ты можешь передать в функцию указатель не на массив целиком, а на произвольную часть внутри. Причём можешь выбраться и за пределы, попав в соседний массив (хрен отловишь) или вообще в левую область памяти (это проще ловится).
Вторая специфика в отсутствии контроля, в питоне у тебя у каждого объекта есть счётчик ссылок, то есть если ты где-то сохранил ссылку на объект, то об этом будет известно. А в Си такого контроля нет, и ты тупо не знаешь, используется объект или нет, можно его удалять или нет.
Но указатели в Си прикольная тема. Там кстати записи m[a] и a[m] эквивалентны, как и m[1] и 1[m] и другая подобная магия встречается.
уже в момент условно парсинга происходит исполнение вида foo = count(foo) декоратор именно это значит. В этом момент вызывается функция foo, которая создаёт функцию wrapper, но не исполняет её. Но объект-функция уже есть. Дальше своёство count этого объекта создаётся и присваивается значение 0, и этот объект-функция возвращается
после чего foo это объект-функция wrapper со свойством count=0. А уже когда ты его вызываешь, счётчик увеличивается.
>>1905275 Функции это объекты, у которых можно читать и писать аттрибуты. Хранятся в __dict__. Хуй знает, зачем это нужно, конкретных применений я не знаю. В случае с твоим примером это могло быть сделано замыканием вместо этой фичи.
>>1905282 >В случае с твоим примером это могло быть сделано замыканием вместо этой фичи Если подумать, то тут тоже замыкания, в примере связывание идёт с переменной wrapper, которая снаружи не существует.
>>1905292 В принципе, через замыкание не совсем так получится, потому что извне не достанешь потом. Точнее достанешь, но через жопу. Так что таки вот одно из применений.
>>1905303 Замыкание есть и в этом примере, можно сделать print(foo.__closure__), там будет два значения, их можно посмотреть
for x in foo.__closure__: ____print(x.cell_contents)
Это будет функция func и wrapper. Здесь используется wrapper, код замкнут на него.
На самом деле замыкания это почти как синтаксический сахар. Хотя они поддержаны в языке, то есть там механика исполнения другая, именно через замыкания.
Но схожую идею можно реализовать и традиционными ООП методами. На скрине пример.
То есть принципиально других возможностей, которые нельзя реализовать традиционными инструментами, замыкания не дают.
Но тем не менее это чуть более прямой подход к решению задач. Хотя вариант с callable классом свои плюсы имеет, не в этой задаче, а в каких-то других, более сложных.
И ради интереса посмотрел, вариант с замыканием работает быстрее, чем вариант с классом, примерно на 20% разница.
Python смотрит на and Потом смотрит на 1, Потом смотрит на 2 Ну и думает почему бы не вернуть просто 2, ведь так можно сэкономить на операции bool Я прав?
>>1897528 Глубочайше надеюсь, что питон это не первый твой язык программирования, ибо если ты хочешь вкатиться с нуля в питон и прыгаешь сразу в самую огромную, блять, бездну под названием нейросети, то ты очень и очень глуп и безнадежен.
>>1905355 Ну давай покажи закон логики по которому логическое и возвращает первое ложное утверждение или последнее истинное, а логическое или возвращает первое истинное или последнее ложное
>>1905279 Вот как раз с исполнением не могу понять Ломает мозг то что мы сначала изменяем wrapper.count и лишь потом мы только его пишем что он равен нулю
>>1905232 >адресная арифметика, когда ты указатель можешь двигать вперёд-назад, когда ты можешь передать в функцию указатель не на массив целиком, а на произвольную часть внутри. Причём можешь выбраться и за пределы, попав в соседний массив (хрен отловишь) или вообще в левую область памяти (это проще ловится). Это есть. Но можно, например, передать вектор по ссылке и получить все те же плюсы. От ошибок ты защищен, все инкапсулировано, но работает так же быстро.
>Вторая специфика в отсутствии контроля, в питоне у тебя у каждого объекта есть счётчик ссылок, то есть если ты где-то сохранил ссылку на объект, то об этом будет известно. А в Си такого контроля нет, и ты тупо не знаешь, используется объект или нет, можно его удалять или нет. Да, поэтому придуман RAII. Объект внутри себя занимается своей памятью, а пользователю об этом думать не нужно.
>>1896798 (OP) Посоветуйте какие-нибудь advanced курсы/уроки по Django/DRF. Основными штуками умею пользоваться, а вот если нужно что-то выходящее за туториал начинаю писать какой-то придуманный костыльный код, не зная что тоже самое можно было написать готовыми способами. Можно даже платные
Сап двач, есть массив с кучей чисел. Нужно пройтись по каждому элементу, но последовательно. [0][0], [1][0] [2][0] [0][1] [1][1] и тд. Как это можно сделать? А то уже голова не варит совсем
>>1905353 Не слушай дегенерата выше. Питон просто кривой язык с кучей тупых моментов. Начинается все с единицы. Путхон видит AND (если не знаешь - тру только когда оба значения равны), соответственно единица (любое число кроме 0) это true, поэтому путхон идёт проверять второй оператор (2 OR 3). OR это когда хоть один из них тру. Путхон видит, что 2 - тру и не идёт дальше проверять ибо нахуй надо, выражение и так тру. Соответственно возвращает последнее на котором путхон понял, что все выражение тру(2).
>>1906465 Почему тогда можно задать свое поведение для with as через __enter__ и __exit__ также как и задать свое поведение операторам через свои дандер методы?
>>1906473 Потому что можно, это стандартный способ реализации всяких кастомных штук в питоне. Или ты хотел чтобы везде всё разное было для интересности?
>>1906531 Боже, поставь ты VSCode, он тебе прямо подчеркнёт красным эту скобку. В каком говне ты код пишешь? Что это за доисторическое говно, нотепад++?
Помогите позязя, дают задания по пайтону, вроде понимаю что и к чему, но код не пишется, вообще не пойму что к чему. def, while Создать цикл, который будет делать следующую операцию:
До тех пор, пока А меньше Б, прибавлять к а В и сравнивать с Б. Если после прибавления, А все еще меньше Б - повторить предыдущее действие. Результат каждого сравнения должен выводиться в консоль в формате "Значение А" + "Пока что нет".
В момент, когда А станет больше Б - вывести "Дождались!" + "Финальный А"
наверное 100 раз спрашивают тут, но я повторюсь. А с чего собственно лучше начинать обучение? я тут в книгу залип про укус питона, но чем дальше тем меньше я понимаю, откуда отталкиваться подскажите.
Неправильно. А что тебе нужно сообщать когда А == Б? У тебя while выйдет после тога как А станет равным Б, если надо именно больше, то переделай условие на меньше или равно.
def func(): ����a=1 ����b=10
����while a <= b: ��������print("a все еще не равно b") ��������a = a+ 1 ��������print("A + 1 =", a) ����print("сравнение закончили") ����print('a больше b')
>>1906806 Пиздец у тебя задачки простые, напиши мне лучше код под сабж В одну транспортную компанию поступил заказ на перевозку двух ящиков из одного города в другой. Для перевозки ящики решено было упаковать в специальный контейнер.
Ящики и контейнер имеют вид прямоугольных параллелепипедов. Длина, ширина и высота первого ящика — l₁,w₁ и h₁, соответствующие размеры второго ящика – l₂,w₂ и h₂. Контейнер имеет длину, ширину и высоту lc,wc и hc.
Поскольку ящики содержат хрупкое оборудование, после упаковки в контейнер каждый из них должен остаться в строго вертикальном положении. Таким образом, ящики можно разместить рядом или один на другом. Для надежного закрепления в контейнере стороны ящиков должны быть параллельны его сторонам. Иначе говоря, если исходно ящики были расположены так, что все их стороны параллельны соответствующим сторонам контейнера, то каждый из них разрешается перемещать и поворачивать относительно вертикальной оси на угол, кратный 90 градусам (относительно горизонтальной оси ни контейнер, ни ящики поворачивать нельзя).
Разумеется, после упаковки оба ящика должны полностью находиться внутри контейнера и не должны пересекаться.
Выясните, можно ли поместить ящики в контейнер с соблюдением указанных условий.
Формат ввода
Во входных данных записаны числа l₁, w₁, h₁, l₂,w₂, h₂, lc, wc и hc. Все размеры — целые положительные числа, не превышающие 1000. Числа в строках разделены пробелами.
Сначала проверить, влезают ли ящики по-отдельности, потом можно ли один поставить на другой, потом можно ли их поставить рядом (4 варианта тупым перебором).
>>1906980 А вообще, если ты хочешь научиться программировать, то представь, как ты бы решал эту задачу сам, руками. Вот тебе дали конкретные числа, на бумажке, и спросили бы, помещаются ящики или нет.
А потом всю эту логику просто надо закодировать на питоне.
>>1906988 Брат, я это понимаю. Кстати скажи, почему такие задачи часто дают решать на курсах? Например дается задача где нужно написать всего несколько переменных и принт, но блядь для правильного вывода нужно запидорить эти переменные в лютую формулу. Это же чистая математика, нахуй это задавать? То есть такие задачи можно решить, но нужно тратить время и навыку программирования это слабо поможет
>>1906993 Вроде да, есть формула даже на вики статья есть про такого рода задачи. формула фибодроччи - дристунни >>1907013 Это можно, это классика. Нужно представить в голове и если что написать на бумаге. Придется заморочиться.
>>1907088 Какая это математика? Тут только операции сложения двух чисел и сравнение. Это где-то 3-5 класс, так как числа дробные.
Задачка исключительно на то, чтобы закодировать эту тривиальную логику сравнений. Нормальная для тех, кто только начинает разбираться с программированием, на первую неделю.
>>1907090 >Вроде да, есть формула даже на вики статья есть про такого рода задачи. >формула фибодроччи - дристунни Друзья, ну вы чего? Какой в жопу фибоначи?
Сказано, всего два (!) ящика. Не два типа ящиков, а просто два ящика. Которые могут быть повёрнутыми двумя способами. Всё, 4 варианта расположения в один уровень.
>>1907069 у машин двоичная система счисления и там точно так же почему у человека в десятичкой системе счисления 1 / 3 = 3.333333333(3) , короче ну ты понял надеюсь
>>1907094 Программа получает на ввод совершенно разные размеры ящиков каждый раз .они произвольные. как и размеры контейнера так что там может быть не два ящика, а 100500 вариантов
l1 = int(input()) w1 = int(input()) h1 = int(input()) l1 = max(l1, w1) w1 = min(l1, w1) l2 = int(input()) w2 = int(input()) h2 = int(input()) l2 = max(l2, w2) w2 = min(l2, w2) lc = int(input()) wc = int(input()) hc = int(input()) lc = max(lc, wc) wc = min(lc, wc) if h1 + h2 <= hc and l1 <= lc and w1 <= wc \ and l2 <= lc and w2 <= wc: print("YES") elif l1 <= lc and w1 <= wc and l2 <= lc \ and w2 <= wc and h1 <= hc and h2 <= hc: if l1 <= lc and w1 <= wc: if (l2 <= wc - w1 and w2 <= lc) \ or (w2 <= wc - w1 and l2 <= lc) \ or (l2 <= lc - l1 and w2 <= wc) \ or (w2 <= lc - l1 and l2 <= wc): print("YES") elif w1 <= lc and l1 <= wc: if (l2 <= wc - l1 and w2 <= lc) \ or (l2 <= lc and w2 <= wc - l1) \ or (l2 <= lc - w1 and w2 <= wc) \ or (w2 <= lc - w1 and l2 <= wc): print("YES") else: print("NO") else: print("NO") else: print("NO") else: print("NO")
>>1907116 >так что там может быть не два ящика, а 100500 вариантов Нет, ящика только два.
Зачем ты так код постишь? Во-первых зачем под спойлером, во-вторых используй сервисы для расшаривания, ссылки есть в шапке. Разбираться со съехавшими пробелами желания нет.
Но тут всего два ящика. Хотя аналогичная задача может быть на много ящиков. Например N ящиков, но двух типов. Либо N ящиков произвольного вида. Но это уже реально сложные задачи, особенно 3d вариант, когда все ящики разные.
Возможно вопрос чуть не по теме но все же.... Кароче я хочу написать программу маленькую так как я заебался только обучаться, что можно сделать интересное, но не особо сложное чтоб еще и заодно закрепить умения знания и все такое?
почему 5 строчка не работает так как нужно? реально нельзя переводить математические выражения из str в int ? https://pastebin.com/PzhNEtBL если что я 3 дня изучаю питон я дурак не оскорбляйте пж
>>1908051 Можно использовать когда пользователь точно никак не может влиять на объект который евалят, ну максимум можно чтобы пользователь выбирал из списка, но никак не мог выбрать что-то что не задумано программистом, т.е нет в этом списке
>>1908083 Это какая-то спамерская хуйня, вполне возможно что там намеренно добавлены простенькие ошибки, чтобы вот такие левые хуи просто так не пользовались, лол. Да и смысла ему что-то подсказывать нет.
Смотрю тут один курс который я честно купил в магазине доминика торетте. Вроде теория нормаль - функции там, библиотеки. Теория начинается нормально, но внезапно начинается логика бота с кучей илиесли которую препод быстро фигачит с минмальными пояснениями. Код с классами, обращениями, словарями, препод такой каноничный ботан в очках и рубашке, видно что опытный прогер. Голова лопается. Поэтому вопрос. Как разумить неразумимое? Наливать кофе-чай и по частям разбирать код ? Есть ли какие-то лайвхаки помимо подсветки синтаксиса? Может какой-то софт или библиотеки облегчающие понимание чужого кода? Знаю что в иде есть проверка грамматики, и есть бибилиотеки проверяющие пеп8 но это не совсем то что нужно.
>>1908439 Скилбоксовский. Апи вкудахта. >может он подразумевает, что ты уже знаком с питоном Поясню. Вот ты знаешь про свеклу, про мясо, про лук, про овощи там тебе рассказали про них по отдельности. И тут тебе показывают как с этого можно сварить борщ при этом быстро и с минимальными пояснениями. Там это называется курсовая работа, пишут её какие-то опытный челики.
Анонсы, кто разбирался с отправкой геолокации в aiogram? Не могу понять, какой фильтр надо поставить, чтобы отловить эту геолокацию. Сорян за скриншот.
Расскажите, пожалусто, как найти все возможные произведения в массиве из n элементов...
Сейчас вот поставил себе задачу, вдохновляясь первым заданием с "Project Euler" https://projecteuler.net/problem=1 , найти сумму всех чисел, меньших X, которые делятся на хотя-бы одно из введенного набора чисел <X.
Как посчитать сумму чисел, меньших Х и кратных определенному числу, я придумал, пикрил (не берите в голову, наверное можно было менее запутанно придумать). Пользуясь этим, решить для двух, например, делителей достаточно легко - f(делитель1) + f(делитель2) - f(делитель1*делитель2). Для 3 тоже несложно, ручками. И так далее. А вот как решить эту задачу для ЛЮБЫХ Х и для любого набора делителей (меньших Х конечно) - хз. На ум приходит только найти все возможные произведения среди делителей (вроде 2^z - (z+1) произведений получится, где z - число делителей) и вычесть сумму f от каждого из этих произведений из суммы f(делитель1) + ... f(делитель z).
>>1908859 Забыл кринжовые инты убрать.тут есть тред, где просто задачи решают от скуки, с нулевым знанием синтаксиса и проч., а не вкатываются? а то я тут лишний наверное
>>1908859 Кстати, задачу стоит упростить таким образом, чтобы речь шла только о делителях, являющихся простыми числами. Иначе вообще муть какая-то, и логика, представленная в моем посте, не очень работает. никто не желает решить с любыми делителями? было бы интересно посмотреть...
>>1908871 >>1908860 >>1908859 Так, я пошёл спать, давно пора ха-ха. Тут и с простыми делителями эта логика не работает. Так что попытка сэкономить время не удалась - наверное надо просто в лоб сделать. Но узнать, как > найти все возможные произведения в массиве из n элементов, всё равно хотелось бы.
Стоит ли начинать читать про Flask/Django (я даже хз если они одного сорта фреймворки) если я вообще не разбираюсь во всех этих портах, серверах, протоколах и прочем? Или стоит с каких-то книг про эти основы начинать?
>>1908945 ... 1. Как мне в этот event loop добавить любой произвольный коллбек? 2. Это че на тредах пилить придется? Потому что иначе все будет блокировать к херам 3. Без создания кастомного говноняного event loop не работает что ли? В asyncio этого нет?
Аноны, на вход - последовательность N + 1 чисел у1, у2, ... yN, X ; строкой. Нужно найти сумму всех чисел, меньших X, которые делятся на любой из y. Сделал спросонья в лоб (https://pastebin.com/9z0eqgap) - и теперь интересно, нельзя ли сделать решение более экономным по времени? Может есть какие-то полезные математические факты/теоремы? У меня есть функция, которая быренько ищет сумму чисел, меньших с и делящихся на а, пикрил, но от неё толку мало, когда слишком много делителей - много чисел от 2 до Х посчитается повторно, а как их исключить - не очень понятно.
>>1909057 Ну что ты начинаешь... Мне просто интересно, как именно математически можно увеличить скорость вычисления, в рамках одного и того же языка, в данном случае - питона.
>>1909049 Так, мне пока что лень что-то писать, я не выспался нихрена, но есть одна идея, правда не принципиальная - надо сначала проверить все делители (у1, ... yN) на взаимную простоту, если НЕ взаимно просты, то большее число можно просто отбросить.
>>1909092 Подождите, не на взаимную простоту, а на наличие общих кратных. Если, например, есть число 63 и число 3, то большее, 63, надо отбросить. Вот.
>>1909095 >>1909092 Не-не, глупость. Контрпример сразу придумал - 57 и 63, ни одно из них не надо отбрасывать. По-другому - если один делитель нацело делится на другой делитель, то больший надо отбросить, вот.
>>1909168 Ну вот, нужно найти сумму чисел, которые меньше 20 и делятся на хотя-бы один из (2, 5, 8, 14). То есть, 2 + 4 + 5 + 6 + 8 + 10 + 12 + 14 + 15 + 16 + 18.
Посоветуйте какой-нибудь учебник по статистике, можно англоязычный. Почему заинтересовало - сейчас наткнулся на разговоры об избыточной смертности от короны - и чисто интуитивно понятно, что если мы посмотрим среднюю смертность за последние несколько лет, а после на смертность в этом году, и увидим разницу в 300к чел., то скорее всего примерно столько, плюс-минус несколько тыщ, смертей и обусловлено короной. Вот хотелось бы увидеть математическое доказательство работоспособности подобных методов.
>>1908861 Я кстати решил вместо дроча задачек, изучить основу работы интернетов и прочие фундаментальные принципы. Думаю это будет полезней чем решать задачи которые можно нагуглить. Конечно это качает моск, но нахуя мне тратить на это время, если я могу изучать основы!
Привет я занимаюсь питоном 5 день я даун дурачок у меня есть вопрос. Кароче я заебался от просто питона слегка и решил освоить tkinter вот для первой программы я решил выбрать калькулятор, а теперь сам вопрос: возможно ли сделать так чтоб человек нажал на кнопку и в поле ввода добавился текст?
Аноны, хелп Не могу никак найти источник, где объясняют ВСЁ ПОДРОБНО, почему-то все каналы для начинающих рассчитаны на тех, у кого уже есть какие-то знания, а вся литература даёт только слишком базовые знания. Ещё нужно понять, что именно и в каком порядке изучать в питоне, я уже знаю: - переменные и их типы - if/else - списки и циклы - буфером обмена - файлы, запись, чтение - функции - регулярные выражения ВСЁ, дальше хотел разобраться в библиотеке requests и ОХУЕЛ ОТ ТОГО, ЧТО НИКТО НЕ МОЖЕТ ОБЪЯСНИТЬ ВНЯТНО И ПОДРОБНО, а рассказывают так, как будто я блять всю жизнь писал на С++ и решил освоить питон. Перебрал уже 50+ источников. СУКА, помогите, умоляю, двач - последний рубеж надежды
>>1896798 (OP) Всем здравия. Порекомендуйте книжку для вкатывания в питон. Лучше на английском.
Опыт программирования у меня есть, закончил колледж на программиста, писал активно на C++ да и на Python тоже. Но давно уже не программировал(месяца три может), так как не могу сейчас работать по профилю. Хочу структурировать свои знания по питону. Когда писал на нём, изучал его по принципу хочу сделать N, запрос в гугл "How to do N in Python".
Почитал шапку, но гайд 2015, кидает на статью на хабре 2012, которая кидает на книгу 2010, 2010, Карл!. А в превой ссылке на книжки просто свалка книг. Поэтому что читать не понятно.
>>1909327 Ну, вот, например: 5-я строка непонятна вообще, что такое search_query? Это ключ и значение? 6-я строка, непонятна конструкция url,data=query, что она делает? Почему именно так? Что такое response? Когда применяется? 13-я строка: что конкретно он хочет получить этим?
Пиздец, в институте где работаю требуют учить питон или АР (хуй знает что это даже) от всего химбио штата, типа будет перепрофилирование. В связи с этим вопрос – мне нахуй увольняться сразу или это не так страшно?
Посоны, а каково мнение русских реперов по данному вопросу?
raise Fault(self._stack[0]) xmlrpc.client.Fault: <Fault -32500: "RuntimeError: PyPI's XMLRPC API has been temporarily disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.">
Заебало. Весь pip теперь не работает из дудоса? и это навсегда?
>>1909623 >такой манерой Какой? >подходу к новому У меня отличное отношение к новому. Я просто оцениваю свои силы реалистично. Я биолог, не математик. Я чисто физически не смогу работать с, например, линейной алгеброй на уровне специалиста, потому что эти знания остались на первом курсе института в угоду клеточной биологии и молекулярной химии.
>>1909784 да тебе не надо с алгеброй ней работать. R - высокоуровневый. посмотри еще такую программу Orange. Хотя в ML-треде ее регулярно обоссывают DL-зумеры, она представляет собой значительный прорыв в науке. Очень нравится таким как ты.
>>1909788 ютубе есть неплохой русскоязычный курc по Orange . Ученым он даже возможно слишком простым покажется. Если вы в своем пердежном институте даже классический statistical learning не применяете, Orange - это пиздец, прорыв. Но для использования актуальнейших алгоритмов там нет ничего. Вот тут нужен питон.
Есть какое-то простое решение для кеширования? У меня на одну строчку внешний сервер возвращает большую структуру данных, я её просто складываю в словарь и по нужде проверяю. Но надолго же не оставишь, память пожрётся, нужна какая-то ротация кэша с учётом частоты использования.
Народ, кое-что в вашем языке пиздатом мне совершенно не ясно В си-подобных языках совершенно понятно, как передается тип переменной в функцию (по значению или по ссылке) В питоне, в целом то, тоже ок.Однако я не могу никак найти вразумительный ответ на тему того, как в функцию передается класс. Подскажите плес
>>1909989 >>1910003 Это язык для скриптов, макросов и дата саенс. Про фреймворки это куски питона торчат в структуре проектов, но додики их тащат в свою стату
>>1910032 И советую установить jupyter notebook Это такая хуйня, которая будет в браузере запускаться и там ты можешь писать код. Но фишка в том, что можно всяко изучать переменные и данные без пердолинга(как это в специальных текстовых редакторах которые созданы для написания проектов).
Из минусов, это немного тормознутое автодополнение.
>>1910043 не ставь. это вредно. это испортит становление тебя как классического программиста и только лишь приведет тебя к запутанным багам из-за разного порядка выполнения
Ноутбуки нужны датасаентистам, потому что результат их работы - Решение Проблемы, а не макакичный код.
>>1910037 >И советую установить jupyter notebook >>1910130 >Ноутбуки нужны датасаентистам, потому что результат их работы - Решение Проблемы, а не макакичный код. Автокомплит плохой, ошибки не подсвечиваются, разбить код на несколько файлов нельзя, использовать гит нельзя. Основную фишку - интерактивную консоль с возможностью запуска произвольных кусков кода - завезли в пайчарм (в VS код скорее всего тоже, но я не проверял). Изучать переменные и данные в жупитере можно только через print, что крайне неудобно. В общем, ноутбуки - хуйня без задач, включая датасаенс.
Анон, есть ли в питоне способ вывести одной переменной несколько объектов на разных строках? То есть чтобы при print(x) переменная выводила результаты не в строку, а каждый результат с новой строки? Заранее спасибо.
Пиздец, у меня в городе полторы вакансии на джуна на питоне. Ебаная корона+зима. Поэтому вопрос — реально ли выйти на фриланс джуну и если да, то на каких платформах? Чисто ради пары лишних тысяч в месяц и хоть какого-то опыта.
обясните дауну в двух словах если ввообще возможно. Попробовал скачать с хаба готовый проект (так вроде лучше всего учить, не?), так вот когда пишет Using the below command you can generate a video >python3 __init__.py face ben.jpg morgan.jpg 5 25 example.mp4 Я хоть туда ввожу? Или как это вообще работает? Или я че-то не правильно установил...? или надо обратить внимание на warning вверзху?
>>1910385 Чтобы ты понял уровень абсурда ситуации приведу аналогию. Вот есть такая строчка "Чтобы перезапустить роутер нажмите на кнопку On/Off, подождите 5 сек и нажмите на кнопку On/Off еще раз". Ты нашел кнопку на клавиатуре, написал на ней фломастером On/Off, жмякаешь на нее и спрашиваешь что пошло не так. Попробуй начать с чего-то более простого, скачай питон с офсайта, там идет IDLE в комплекте. Найди любую книжку по питону в интернете и там чисто все по порядку делай. >>1910372 Что такое дс проект? Ты тоже джун?
>>1909213 Я подумал, что можно воспользоваться формулой вычисления членов арифметической прогрессии. Потом закинуть эти числа в множество, повторить на остальных элементах списка и проделать операцию объединения множеств. Но! Почему-то у меня в множество попадает и последнее число. Например, из списка sample = [x for x in range(3, 21)] для 4 последнее число 20. Я не очень силен пока в кодинге и не могу побороть это.
def get_sum(a1: int, sample: list) -> set: ....limit = (sample[-1] // a1) ....s1 = [a1 + (i-1)*a1 for i in range(limit+1)] ....return set(s1)
Объясните тупому. Есть в меня ЕС2 сервак с обычным убунту на нем. Для того чтобы ранить авто тесты (ЮИ) на питоне, нужен ли мне докер контейнер или докер компос? Или можно просто ранить на этом сервере? В чем мулька иметь докер или нужен ли он в данном случае. Тестов очень много, будут гоняться раз в три дня кучей.
>>1910457 >? В чем мулька иметь докер Докер не нужен. Профиты от него: 1. Один раз собрал контейнер (имеется ввиду написание докер файла) и дальше используешь где хочешь. Без него тебе прийдется поддерживать твой ЕС2 сервак в определенном состоянии (установленые пакеты, версии пакетов, версия ОС), тогда как с докером тебе нужно только чтобы на твоем сервере работал докер и все. 2. Все гавно запускается и убивается одной командой. Без докера тебе нужно самому будет запускать и останавливать все нужные сервисы. Конечно это автоматизируется скриптами, но с локером как-то попроще. 3. Моджный, молодежный.
>>1910372 >мне предлагали 8к + проездной за ведение полноценного дс проекта Нечему удивляться. Нейронки умеют только в игры играть и генерировать шизофазию. Есть конечно компьютерное зрение, чтобы распознават либерастов на митингах, но для него питон - узкое место и его обычно меняют на плюсы.
В джанге есть модель пользователя, у пользователя есть атрибут is_blocked. Мне нужна кнопка в админке - "BAN", которая меняет это поле с Fasle на True. Как это реализовать?
>>1910464 Ну вот мне нужно как и для моей машины только поставить гит, чтобы тянуть код оттуда или как я его закину с гитхаба в докер? Потом мне нужная всякая ботва типа анаконды для среды в котором это все будет ранится. Как мне все это организовать? Спасибо.
подскажите плиз какой нибудь способ / библиотеку чтоб сделать удобный cli для своего скрипта. click и fire дают только запустить. А я хочу в реальном времени писать команды.
>>1910372 > полноценного дс проекта трансформация данных из экселей это не дс-проект. Хотя многие в дс вынуждены этим заниматься, они то знают свою конечную цель. тебе просто предложили простую и грязную часть DS.
Можете подсказать, чем отличается raise от except? При except мы просто ловим исключения, а при raise сами прикручиваем описание? raise тип исключения('<описание проблемы>') ?
>>1910544 С точки зрения вкатывальщика-работяги любой из трех: пхп, ява, дотнет. Это не значит что они лучше, но таков рыночек легаси и грязной работы.
>>1910666 Самое говно перечислил, лучше знать вторым языком го если чистый бэк, либо тс + ангуляр если фулл стек. Самые жирные и интересные вакансии на таком стеке.
>>1910724 Уже начал курсы проходить, правда всё ещё колеблюсь между R и питоном, ибо мне про оранж выше сказали. Но по питону как-то в мириады раз выше информации будет. Про перекатиться не знаю, я математикой не владею на нужном уровне, а питон, как я понял, требует огромного знания высших математических дисциплин. Но вообще интересно.
Мля кто шарит... Что где надо поменять чтобы убрать ебаную сетку? Там вроде всего 9 файлов но не могу найти. Это вообще здесь менять или где-то в ебенях opencv? https://github.com/Azmarie/Face-Morphing/find/master
>>1910970 >Ничего никто не требует Кукарекнул джун с 10к зп в душном опенспейсе. А настоящие сеньоры-мужики естесна знают вообще всё, топологию, линал, функциональный анализ, теорию автоматов и так далее. Поэтому этот залетный долбоеб-вкатыш естесна не осилит.
Я ебал ваш питон и ваши курсы. Дана последовательность из 2020 натуральных чисел. Требуется возвести каждое из них в степень, после чего определить какие из полученных результатов кратны 4, не кратны 8, кратны 22 и не кратны 189. Выведите сумму этих чисел. Вводится 2020 натуральных чисел.
>>1910590 >С чего вдруг? В этом и суть что не фига не через принт. >>1910594 Это по сути тоже самое. В жупитере нет отдельного окошка с переменными, как в пайчарме и вс коде.
>>1910986 полностю согласен я пока докторскую по функциональному анализу и топологию не защитил, даже мидлом не брали слава богу, поступил в мфти третий раз (ну третий дисерт же. конечно три высших еще маловато до сеньора, но все же) и взяли мидлом за 30к рублей - еще пару научных степеней - и можно будет попробовать пойти куда-то дальше технического писателя
>>1896798 (OP) Поясните должен ли django раздавать статику? или это должен делать nginx? у меня по сути есть сингл пейдж приложение и я index.html и js и css закинул в /var/www/static/ и по сути статику раздает nginx а api уже обрабатывает джаного, но т.к у меня SPA приложение то джанго у меня ловит все урлы которые не относятся к API и возвращает index.html который лежит в templates/myproject/index.html . но этот собственно index.html это копия из /var/www/static/ . и получается так что у меня на хостинге лежит просто приложение которые лежит по адресу / раздаёт ngnix а если надо роут которые прописан в конфиге vue-router то получается это запрос уже обрабатывает джанго. КАКАЯ ТО ХУЙНЯ ВЫШЛА. что делать? у меня нет в джанго юрлс ардресс / ничего не обрабатывает, это делает nginx. Я слышал что типо нельзя статику джангой раздавать потому что это всё качается через 1 процесс и если у клиента супер медленный интернет и таких клиетов много то кончатся все процессы нах в системе, разъясните этот момент ПЛЗ
>>1911383 nginx стоит жопой в интернет и обслуживает всех клиентов, всё что может раздает сам, а динамику передает жанге. Больше тебе ничего знать не надо.
>>1911386 у меня джанго раздает только index.html если надо облуслужить путь который прописан в vue-router. а если надо просто выплюнуть / то это делает nginx. Похуй что джанго отдает 1 страничку всего?
>>1911388 у меня таких нет всё рисует джава скрипт из данных которые приходят через django rest framework
>>1911391 а как мне например обработать site.com/user/1 так чтобы этот адрес отдавал не джанго? у меня есть в url такая штука
url(r'^.*$', TemplateView.as_view(template_name="index.html")) и это прописано в самом конце urls, смысл в том чтобы все урлы которые не отностся к api обрабатывал vue-router, а без этой сточки он не обрабатывает, а с этой строчкой получается что django отдаёт страчку вместо nginx
>>1911401 Получается всё что не /api должно редиректится на index.html ? потому что у меня типо роутер на фронте сам этот вопросик решает, правильно понял?
Решил разделить программу на пару файлов. В первом есть базовый класс, во втором импортируется этот класс (from module1 import myClassName) и на его базе делается еще один класс. Почему python мне говорит что не может найти myClassName? Так и пишет: no name 'myClassName' in module 'module1'
>>1910516 Спасибо! Ну вот я и планировал использовать анаконду для тестов. А как-то можно гитэаб настроить или гит чтобы он сам пулил код с общего репа? Или просто заходить и пул делать самому?
Можно ли сервер настроить так, чтобы на нем тесты гонялись сами по себе скажем раз в день? Чтобы я даже не заходил в него запускать их?
>>1910998 result = [i2 for i in range(1, 2020) if not i 2 % 4 if i2 % 8 if not i2 % 22 if i2 % 189]
Тоже мимо вкатываюсь, изучаю джанго, пока скучновато. Поясните, питонисты, в конструкции написанной выше же не будет каждый раз число возводиться в квадрат? Он же зарезервирует i2 в память и будет обращаться как к ссылке?