Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
Посмотрел в решениях у других, челики рили такое решают в одну строчку. Я еще сидел экспереминтировал в ипутоне больше часа. Хоноры дали, но слишком долго и многословно что то. Как прокачаться и начать мыслить быстрее? Много времени уходит на приведение одного типа в другой и обратно, то ли понимания нету то ли опыт то ли хз.
>>1835868 Решил твою задачку за минуту: "".join(["0" if int(x) < 5 else "1" for x in list(digits)]). Также можно решить при помощи регурярки >>1835870 но этот вариант лучше. >Как научиться составлять однострочники все таки, что эта опыт? Чисто опыт. Необходимо не только писать код, но и постоянно читать туториалы/документацию. Иначе про некоторые полезные вещи вообще никогда не узнаешь.
>>1835872 Да, такое решение у анонов с кодворза. Ну есть к чему стремится. Я зацилен на переменных как у лутца) и на приведение типа. Но в целом, логика такая же как и в одну строчку, с проверкой и созданием нового списка.
Вопрос про ботов в телеграме. Хочу отправить пачку фоток через их URL, есть структура данных (?) InputMediaPhoto. Как скастить в этот формат список URL?
Объясните, нужно ли писать object в декларации класса? Типа class A(object) В книге, которую я читал, говорили, что нужно. Это отличие между старыми классами и новыми. Но когда я начал смотреть видосы этого года, то никто не пишет object. Как правильно и почему?
>>1836097 Когда ты пишешь в декларации класса что-то в скобках - ты наследуешься от этого класса в скобках, хз как раньше, но сейчас все классы наследуются от object, писать этого не надо, если не хочешь наследоваться от его-либо специально(например хочешь свою убер строку сделать с каким-то методом)
>>1835577 (OP) Я нашел для себя решение в изучении чего-то нового. Решил поучить Python и вроде помогает, реально отпускать стало. Но вот в чем беда, я скачал учебник чуть ли не по первой ссылке, поставил PyCharm, анаконду3, питон 3.9, но, сука, чем ближе я был к 10-ой главе, тем больше у меня вопросов появлялось "а это тут, блядь, откуда?". В седьмом уроке используют лямбда-функцию и сразу же говорят, мол, что такое лямбда-функция вы узнаете в 10.4. То есть просто пустой пример, который я просто понять не смогу на 100% потому как нихуя еще не объяснили. Сейчас дошел до десятого урока с функциями и ебался полчаса с фибоначчи. Дело в том, что нигде не сказано что и как и где использовать - то есть если я в командной строке вбиваю, то там заебывает отступы делать, а в PyCharm, естественно, приходится создавать переменную для ввода (а ведь нигде мне этого не говорят, пришлось самому дойти). Там вообще автор внутри функции расчет двух ближайших чисел делает, сука, опять же с функцией и у него зачем-то сделано так fibb(n - 1) + fibb(n - 2), в самом начале есть проверка на ноль, единицу и двойку, но, блядь, получается что вот это ELSE еще и внутри скобок проверяет что написано. Ввел просто return n + (n - 1) и все заработало как часы. Но, блядь, я тут не ради бугурта. Хотел спросить - есть прям для отбитых ебланов вроде меня учебники, чтобы там все последовательно объясняли в примерах? Я же ебнусь. Вон уже в лямбда-функции этот даун какой то prod = 1 пишет, а я не ебу что это.
>>1836134 Где там конкретика? Нет там такого запроса "учебник для отбитых ебланов". Вот и ебись перелистывая все что нарыли за столько лет. Я тут у людей с опытом спрашиваю, ибо то что я сейчас читал - пиздец.
>>1836133 Это не учебник, это конспект какой-то. "Вот есть такая штука как функция. А вот хвостовая рекурсия. А теперь следующая тема", как ты ещё держишься после такого. >>1836138 [z for x in lan for y in x for z in y]
>>1836146 >"Вот есть такая штука как функция. А вот хвостовая рекурсия. А теперь следующая тема", как ты ещё держишься после такого. Я чет подумал сначала что просто недостаточно внимательно читаю, поэтому начал уже в интернете смотреть, но да, дошел до момента когда просто уже не понимаю что хочет автор донести и решил прям совсем для начинающих учебник найти.
Срочно хелп, написал скрипт небольшой, писал на линуксе и теперь пытаюсь запустить его на винде, проблема в том что pip не устанавливается с питоном(в cmd pip help и остальные команды не работают), что делать у меня сроки горят щас, в чем может быть проблема, мне надо написать инструкцию по установке скрипта на виндус, помогите пожалуйста
>>1836154 Пиздец, у меня из cmd пишет что даже python нет команды, при установке нажимал кнопку добавить в path, почему на винде вообще люди сидят я не понимаю
>>1836148 Ничего не могу посоветовать, те книги, что совсем для новичков, максимально скучные, когда дойдешь до чего-то интересного, уже силы на исходе. Я бы лучше выбрал совсем маленькую задачу для решения и уже по ней читал что необходимо. Хоть понятно что зачем нужно. >>1836154 Если десятка, то из магазина приложений скачай и не страдай. И попробуй в powershell команду выполнить (get-command python).path
>>1836187 Когда начинал изуть по укусу тоже было непонятно некоторое как и анону выше, автор что-то рассказывает про цифры, а потом начинает какие-то строковые методы юзать и ты читаешь думая что ты что-то пропустил
Какой самый продвинутый opensource фреймворк для создания ботов? Очень интересует общий интерфейс для нескольких чат платформ и возможность написания своих адаптеров
>>1836231 Есть подозрение, что раз множество - хэш таблица, а хэш числа почему-то равен самому числу (1).__hash__() == 1, то поэтому цифры идут нормально. >>1836245 экранированием?
>>1836231 Потому что от множеств не требуется порядок, их делают для упрощения операции проверки вхождения.
Ах да, охуительный момент: порядок элементов множества меняется от запуска интрепретатора к запуску интерпретатора, потому что там используются рандомизированные хэш-таблицы. А в дикте гарантируют сохранение порядка добавления ключей.
Начал тут изучай питон. (Раньше я только с вашей помощью "допесывал" чужой код под свои нужды) Ну и начал с основ. Тем более у вас под любую хуету есть функции, методы. Охуенно. Полез на кодварс и сижу кайфую.
Обьясните дегенерату. Почему 1 не работает адекватно, и не находит длину кратчайшего слова, а второе нормально работает? По сути нет разницы ведь. Элька только потом, после всех слов должна выйти из цикла и ретурнутся. А по итогу она находит первое же слово меньше 10(Потом сменил на 99 чтобы наверняка) и идет радовать проверку. ЧЗХ?
>>1836420 Потому что первая функция возвращает последнее слово, длинна которого меньше 10, а вторая находит слину первого слова, если 2-е будет короче, то запишет в а переменную длину 2-го и так пока не надет самое короткое
Я не понел. Я ебанул у себя на компе лист из 1910 чисел. (i3, и 4гб оперативы) Вмиг выполнилось. А тут видите ли таймаут. Кто-нибудь может попробовать ради досуга выполнить этот тест и сказать что все окей? Или просто создатель теста пидор и поломал проверку? https://www.codewars.com/kata/5ce399e0047a45001c853c2b
>>1836540 Лист с 60000 цифрами таки уводит питон в даун. Он ОЧЕНЬ долго обрабатывает. Но каким макаром я должен написать прогу так чтобы медленный питон смог обработать такой лист за 12000мс?
>>1836583 Но там же меняется список. Там нужно первые части списка удалять за прокрут, пока их не останется. Сумма по итогу будет меняться. Как мы один раз за вызов обращаться будем?
Бляяяяя. Ведь можно удалять передние и тупо вычитать из суммы. Щас. Погоди.
Зачем постоянно дрочить добавление/удаление? Это хуевоскпзывается на скорости. Просто создай второй список с нулями на один больше первого и проитерируйся с предпоследнего элемента, присваивая list2 = list2[i+1]+list1
В 3.8 лучше вот такой однострочечник делать, используя стандартную библиотеку
В 3.8 добавили в itertools.accumulate параметр initial, без него сложнее, надо уже более извращённую функцию самописную подставлять, что менее читаемо и медленней.
>>1836630 Хотя вру, в старых версиях питона ничуть не сложнее, но надо на вход другой подать список, где первым будет инициализирующее значение. Чуть менее наглядно просто
>>1836655 >Нахуя они вам сдались? Есть ли аргументы в их пользу? Однострочники нужно писать когда они выполняют понятное действие, которое можно описать одним предложением. Хорошо написанные однострочники читаются легче, чем говнокод с циклами. Вдобавок, код получается компактнее без ущерба читаемости, а значит его легче поддерживать.
Однострочники не нужно писать исключительно ради запихивания кучи кода в одну строку. Не можешь коротко описать что делает строка - не пиши однострочник. Но и говнокод вроде этого >>1836589>>1836587 писать тоже не нужно.
>>1836682 Ты проходишь по списку попутно удаляя из него элементы, не надо так делать. range(len(array)) - тоже делать не надо, есть enumerate. Попробуй сделать с помощью filter или list comprehension. Или обожди немного, тебе однострочник принесут.
Вообще, глянь на модуль random, и функции оттуда вроде random.shuffle и random.choices. Возможно они делают то, что ты хочешь сделать сам, при этом не самым оптимальным образом.
Ещё у тебя не питон-стиль кода. Вместо for i in range(len(xxx)): ____print("{}-value is {}".format(i, xxx)
лучше делать for i, x in enumerate(xxx) ____print("{}-value is {}".format(i, x])
>>1836714 >random_array слово, каждая буква которого это элемент массива. dash это прочерки. нужно просто сделать, если элемент уже был использован, чтобы он не использовался снова, хотел его из массива удалить, но ошибка. делал через set, оно удалялось, но через сет позиция элементов была не верной и это не имело смысла
Актуален ли Python в вебе? Нравится изучать Django и пилить с помощью него сайты, но вот инфа в интернете сбивает с толку, что лучше "КО-КО-КО Интерпрайз, больше работы, Java, больше работы" и типа Python больше для машинного обучения юзается.
>>1836746 Стандартную библиотеку очень полезно знать, дурной стиль её не знать.
На практике, впрочем, ты пишешь отдельную функцию, внутри которой или пять строк, или одна, называешь понятно, и потом просто пользуешься, не заглядывая внутрь.
Однострочечники нужны скорее для рутины, чтобы меньше воды в коде было и он понятнее был. Те же генераторы списков и словарей великая вещь, благодаря своей компактности.
Не могу сообразить. Как впихнуть счетчик в строку? Чтобы число в строке увеличивалось на 1, n +1. Типо так "1table2table3table" Юзал f'' но там впихивается например весь список. Хз как сделать, сломал голову уже. И вайл пробовал и списки и генераторы и range.
Снова выхожу на связь. Вроде разобрался как с БД работать. Суть в том что у меня есть эксел файл куда я вписываю каждый месяц сколько у меня денег в трёх разных заначках. Решил сделать телеграм бота, который делает тоже самое.
У меня нет второго акка в телене, так что не знаю на сколько успешно бот работает с несколькими юзерами, возможно он сразу упадёт.
Все что требуется, это потыкать пару раз /add и /show можете еще перед этим фейковые данные вставить /fill
На чем лучше писать алгоритмы из линейной алгебры? Numpy норм или есть что-то более специализированное? Или вообще все хуйня и писать на C++ std::vector?
Как сделать проверку по трем массивам? Вот у нас есть три ренжа, как написать if zalupa == range1 or zalupa == range2 or zalupa range3: do something pizdets.
Как в питоне впихивают код С и явы для ускорения? Это сильно сложно, напр если написать что-то на С, как можно это реализовать или интегрировать с питоном.
И если питон такой крутой, расширеямый и тд, то почему он не намбер ван пока? Ведь рили, он может все, что могут другие, при том проще в разц и понятнее, а главное порог - практичеки нулевой. Не считая знания высших математик и алгортитмов. Но если не изобретать велосипедов, но способов метамыслить от силы 7 не более, простая логика. А?
>>1837354 Вот тут ты ошибаешься если не троллишь) Наоборот, после укуса питона, онли кодворз и практика. Только так, знал бы раньше не потратил 3 года впустую давно бы уже кодил и мб даже наашел работку.
>>1837353 Ну реально. Пишу код. 10 строчек. По итогу. В решениях ровно одна строка которая является функцией, что исполняет саму задачу. Или всякие константы которые на нет сводят мою еблю с проверкой через циклы. return pizdets is ascii И все ебать. Да, по скорости одинаково ибо в этих функциях все такие же проверки через циклы.
>>1837358 стандартная библиотека питона в помощь, вместо дрочки на ночь, читаешь про 2-3 метода. На практике их повертишь , в голову отложится, что такая еба есть и реализовывать ее с нуля не надо.
>>1836630 > Ваш однострочник говно > Вот мой однострочник, импортирующий 2 либы для того же самого - заебись С какими, блять, шизоидами я тут сижу. У одного, блять, читаемость хуевая, другой это делает. Боже.
>>1837347 Яву в питон? Нахуя? 1) питон медленнее Java, C++, C# 2) про расширения есть в документации 3) питон около интерпрайз. В плане функционального языка его потеснил Go, для крудхуяков есть Spring. Сам не рад, но такая ситуация. Например в ДИТ стэк Spring/Angular и вряд ли ситуация изменится. Никто не хочет отходить от SOA к микросервисам. Это накладные расходы. Питон кстати в плане оверхеда тот ещё пиздец. В одно рыло написать код куда ещё не шло, а вот по ресурсам он очень прожорлив. 3.9 кстати медленнее 3.8 и в релизе так и не решили проблему с многопоточностью. Может 3.10 будет поживее. Алсо, если в шарпе и Яве ещё нужны все алгоритмы от gang of four, то это не про питон. Тут все проще и не надо изобретать велосипед. Код понятнее, абстракции реже встречаются. Опять же, в плане расширения хуже.
>>1837356 Чем кодварс помогает на практике? Я понемногу вкатываюсь в эти ваши генераторы и т.д, но чтобы написать большую часть простой хуйни сложные решения и не нужны, да и код проще поспринимать как по мне без генераторов с лямбдой на 100 символов, уж лучше написать нормальный цикл и четко прописать что с чем происходит
>>1837423 Тем что я практикуюсь, а так я прочитал книгу и сижу. А по итогу, если суть да дело - я нихуя не смогу, а так я уже хоть что-то делаю, читаю ту же книгу, но просто по гуглу) и пишу код, хотя бы так, пока бесплатно.
>>1837424 То что я узнал, я постоянно закрепляю, копаюсь в гугле, изучаю и перечитыавю. Где-то углубляюсь. Так что польза есть, это практика. Качаю стандартную либу и тд и тп. Надеюсь поможет. Это лучше чем ничего.
>>1837423 >да и код проще поспринимать как по мне без генераторов с лямбдой на 100 символов, уж лучше написать нормальный цикл и четко прописать что с чем происходит Это сейчас проще, но через два-три года тебя заебет постоянно писать циклы.
Как пофиксить если вылазиет KeyError 2 Дело вот функция возращает ключ, те аргумент функции - это ключ. Трабла если не ключ а просто число например, если число надо написать строчку. Как пофиксить?
Если столько еботы на кодворзе, то сколько ее будет в офисе? Например, если я туплю уже второй день, и если так будет в офисе, то что будет? Просто хз, есть сложные вопросы, если я их не смогу решить, то... меня тупо дропнут? Или помогут?
>>1837423 >уж лучше написать нормальный цикл и четко прописать что с чем происходит Ты молодой-зеленый, поэтому не понимаешь чем императивное программирование сосёт в 2к20.
asw=string.translate(None, 'aeiouAEIOU') Бля, в интернете пишут как убрать гласные. А компилятор пишет что транслейт жрет только один аргумент. При создании тейбла низя выбрать пустую строку, или none. Нужно одинаковый размер. re.sub какую-то хуйню пишет. Строки в питоне не изменяются и ебануть цикл аля С низя, или я тупой(Охуенное решение, ога, сделать строки неизменяемыми) Бля, я не понимать.
>>1837596 Программисты, которые ничего не умеют, не нужны, даже бесплатно.
Могут быть нужны сотрудники другого профиля, которым нужно немного уметь программировать для своей основной занятости - там какие-нибудь скрипты для автоматизации слепить, что-нибудь для сайта, данные откуда-нибудь спарсить, посчитать что-нибудь и т.п.
>>1837712 Ну там в решениях написано два аргумента. Значит у них это работает. А если скопирую решение то оно не запустится. Как это? Баги в Кате? (По итогу решил с помощью создания таблицы которая оказывается может принимать три аргумента. И последний аргумент это символы которые надо удалить) За второе спасибо. Неплохо выглядит. Надо почитать join.
>When parse_args() is called, optional arguments will be identified by the - prefix, and the remaining arguments will be assumed to be positional: >ValueError: invalid option string 'PATH_UNPACKED': must start with a character '-' Тупое говно тупого говна
А вообще стало получаться, и так проще рили double_char = lambda s: ''.join([x+x for x in s]) И читается вроде норм и что делает тоже понятно. И в одну строчку. Буду качать дальше.
>>1837879 Каталог, какие книжки есть, а какие надо бы спиздить. Можно опционально добавить парсинг всяких амазонов или каталогов на предмет обложечек-категорий и сканирование локальных пдфок. Сам всё хочу сделать, но лень.
Кто-нибудь юзаете graphene? Как-то херово его pycharm поддерживает. Может надо что донастроить? Там, вообще нет никаких по полям, при написании запросов не подхватывает - грусть. На js как-то веселее было.
>>1835577 (OP) Друзья, здравствуйте. Нужно для пары олимпиады выучить на базовом уровне данный чудо язык, особо дел с ним не имел, в основном всякие паскали, с, баши итд.
Какую книжку выбрать чтобы за пару дней вникнуть максимально кратно, но понятно?
>>1837920 Спасибо за ответ, но я уже всё пофиксил. Документация плоховато сделана. Реально можно делать позиционный аргумент опциональным через nargs='?', но это ещё прочитать надо.
Что-то мне кажется что тут без сторонних библиотек не обойтись. Ибо писать самому простенькое, но все же решение уравнения с неизвестным количеством переменных прям как-то сложновато. Кроме как нахуярить огромное количество ифок. Но это будет сложно. Видимо не время для 4 уровня.
>>1838212 9 вариантов если корень один(3 оператора*3 варианта)+еще 9 если корней два. Учитывая что там какой-то ебанутый выбор если корней два и так как они представлены областью(самое меньшее число нужно отдать.) (Единичка в нижние тесты тоже лезет, но там двойка. Как бля?) Еще и корней может не быть, да и корни должны быть подходящей длины, и не являться флоатом. Я охуею это все ифать.
def solve_runes(runes): for x in range(10): try: if (str(x) not in runes) and not(x==0 and '=??' in runes) and eval(runes.replace('?', str(x)).replace('=','==')): return x except: continue return -1
>>1838212 Решать такие задачки не имеет никакого смысла.
Все эти задачи можно условно поделать на три категории: легкие, продвинутые и олимпиадные. Легкие можно решать для вката в программирование - при помощи них хорошо практиковать выбранный язык. Средние хороши для опытных программистов чтобы оттачивать навыки и искать красивые / эффективные решения. Такие задачки также помогут для подготовки к собеседованию в FAANG или похожие российские конторы. Олимпиадные задачи - говно без задач. Они не имеют ничего общего с программированием и их не спрашивают ни на каких собеседованиях.
Конкретно эта по сложности относится к продвинутым, но по идиотизму аналогична олимпиадным.
Мы тупо ставим цифры от 1 до 10 и проверяем выражение пока не прокнет? А если не подходит то возвращаем -1 по требованию задания? Как я не додумался что цифра на вопросиках то одинаковая. А я собирался уравнение решать. Блееее я тупой. Кстати, где эта проверка результата? Я не вижу. Можно строчку вбить и питон сам решит?
Охуенный язык, блеее. Любую хуйню можно сделать в 1-2 строчки. Хочется так же.
Спасибо :3 (Я тем временем разбивал уравнение на 5 составляющих в листе и сидел тупил. Хотя и так наверняка можно было тупо пройтись по листу просто перебирая варианты.) >>1838259 Ну вроде только 4 уровень, типо смотрю как высоко можно поднятся без знания языка. (Я максимум в универе на си пишу, и то понабрал кучу долгов и собираюсь в академ ибо не могу нормально спрограммировать все эти охуенные ссылки которые непонятно как работают в кодах всяких стеков и прочего) Хотя я не вижу связи между этим и программированием приложений. Почитаю книжку которую советовали другому анону, может поклацаю.
>>1838261 >Ну вроде только 4 уровень, типо смотрю как высоко можно поднятся без знания языка. Если твоя цель выучить питон - читай документацию, она у питона просто охуенная. За неделю поймешь все основные аспекты.
Если хочешь научиться подобные задачи вплоть до самого сложного уровня (но зачем?), тогда начни с изучения computer science. Ищи программу топового вуза вроде стенфорда, выбирай оттуда курсы по теории и алгоритмам и ищи материалы по этим курсам.
>>1838310 ну если вопрос стоит по ram то метров 800 желательно иметь только для него, тоесть не включая те обьекты которые будут создаваться в петухоне, по поводу проца, ну в простое практически ничего не жрет,
вприцнипе смотря что еще считаешь старым, впринципе и под десяткой в 4 гб рам работать можо, но надо еще понимать что будешь скорей всего в браузер лазать, а они тоже любят ресы хыч хыч коксал боба
>>1838310 По памяти норм, а в целом так неторопливо работает по сравнению с десктопом. Надо будет ебануть какой-то халявный проект и взять что-то на новой мобильной рязани, вроде очень хороша она.
>>1835577 (OP) Как в питоне объявлять анонимные объекты, которые можно передавать в качестве параметра options в метод tkinter,filedialog.askopenfilename и asksaveasfilename? Хочу вместо перечисления всех параметров вынести дефолтную часть в отдельную переменную
>>1838907 Если я правильно понял, что ты хочешь сделать, то тут 2 варианта: 1) Написать свою обертку под этот метод, где ты вызываешь дефолтные параметны 2) Сделать словарик и распаковывать через kwargs
>>1838916 Мне надо вызывать либо askopenfilename либо asksavefilename в if-elif. 3 параметра одинаковые - расширения, initialdir, типы файлов, разный только промпт. Хочу 3 общих параметра в переменную над ифом, промпт отдельно пропихивать. В js например можно в блоке ифа было бы делать типа fileDialogParams.title = "Open file", а в elif fileDialogParams.title = "Enter new file name"
>>1838242 Там все вопросики это одна цифра. Пишешь функцию, которая делит выражение на a, b c и оператор, преобрзуешь их в инт, проверяет истинность, и в цикле заменяешь вопросики на цифру от 0 до 9 по очереди и вызываешь для получившегося выражения функцию. Если тру, то печатаешь текущую цифру, если цикл кончился, тру не было -1
>>1838923 В общем то попробовал вообще этот askopenfilename, он порождает окно пустое от ttk. Есть какой нибудь более вменяемый способ в консоли вызывать open/save file dialog без оверхеда в виде окон? Я пока просто учусь, так что не надо говорить что типа консолька и эти окна это тупо и всё такое
>>1838963 >Вопрос. как мне теперь посмотреть, что в словарике лежит? Тебе нужно список всех хешей? Есть два варианта: 1) Переписать декоратор из функции в класс, а самому классу сделать метод для просмотра хеша 2) hash_deco.__globals__['hash_dict']()
а еще твой декораторупадет если подставить нехешируемый тип в параметры
Двач, придумай мне пэт проект, чтобы было интересно реализовывать, чтобы не было нормальных аналогов и чтобы в одного можно было бы осилить. Подумал почему бы не написать бота, который бы мАстерил игру d&d, такое уже есть причем с собранными на кикстартере миллионами, а я просто хочу создать что-то новое
>>1839105 >Двач, придумай мне пэт проект Напиши программу, которая бы автоматически раскладывала боевые картинки по разным категориям в зависимости от флага и прочих факторов.
Здорова бандиты. Помогите с парсингом одной хуйни. Парсю через красивый суп. В хтмл не шарю, но почему-то если скачиваю страницу кое-какой инфы в тегах нет (пика 1), когда смотрю исследователем в гугле, в теге есть нужная инфа (пикча 2, текст 002), как так? Как спарсить такое?
Привет, я только начал постигать тайны питона, и у меня уже есть сайтик на джанго, который гененрирует небольшие еветы в расписании. Так-же у меня есть бот в дискорде, который просто приветствует, дает инфу и все. Вот мне бы хотелось их как-то связать, что-бы по команде мне давалась информация со странички на сайте, но я не понимаю механику их взаимодействий. Что мне нужно почитать для этой реализации? какие модули использовать? Может даже на примере говна и палок обьясните что должно происходиить?
>>1839178 Оно добавляется динамически жабаскриптом. Можно рендерить страницы хедлесс браузером и тогда уже парсить, можно подсмотреть дополнительные запросы, если есть, и брать готовое. Если нет запросов, значит определено где-то script тегах.
ООП в питоне - это хорошо или плохо? Я сам шарпист со стажем и привык по солиду делать по классу на каждую подзачау и всё такое, но в питоне что в туториалах что в примерах что в гайдлайнах по использованию библиотек я постоянно вижу использование просто статических функций
>>1839198 То есть ты будешь сканить свой сайт каким нибудь селениумом что бы достать инфу, которую и так имеешь и можешь спокойно подключить без напряга?
>>1839183 Если тебе нужно, чтобы бот с сайта инфу брал именно, то изучай http протокол и модуль requests, делаешь гет запрос на сайт и получаешь текст ответа, если там html верстка, то парсить ее удобнее с помощью модуля bs4. Кароче изучи парсинг сайтов и все встанет на свои места
Питонисты с опытом, я немного изучил питон и веб, сделал на фрилансе пару парсеров, бота, вебсервис и понял что в общем-то с питоном я разобрался, хочу спросить у опытных куда двигаться дальше(в планах через пол годика-год устроится на работу полноценную), чтобы стать уверенным джуном в вебе, стоит ли учить js, .net и прочее, стоит ли пытаться уходить в нейронки(диффуры пока не умею решать, хз насколько сильная математика нужна), в общем куда вкатываться дальше, чтобы быть востребованным(сейчас углубляюсь в питон, смотрю как неймспейсы работают, постигаю асинхронность, но мне кажется, что нужно дальше выбрать что-то объемное, чему придется уделить много времени)
>>1839236 Но если хочешь действительно понять как работает веб, то я очень советую курс на степике web-технологии, если изучил linux и базы данных, после него и небольшой практики будешь точно понимать как это все связывается и что откуда достать можно
>>1839238 Я на 2-м курсе, меня не берут никуда, а по разработке на питоне даже тестовое не присылают, так что остаюсь на фрилансе, но не хочу просто повторять свои ошибки и дрочить одно и то же, а хочу развиваться
>>1839242 У меня сложилось впечатление что тестовые стараются больше не присылать, даже на джунов. Все равно постарайся уже работу найти удаленно, стажировку хотя бы.
>>1839240 О вот вопрос можно еще? что значит изучил бд? я знаю как писать запросы, знаю какие бд бывают, но не знаю какую в проект выбрать, могу спроектировать бд, если там не очень много сущностей. Вот этого не хватит на работу, но можно ли сказать что я изучил это направление?
>>1839253 Более-менее изучил направление, это тогда, когда ты понимаешь проблематику, какие возникают проблемы, почему они возникают, как их решать и т.п.
Например, чтобы понимать, когда одна структура лучше, а когда другая. Как профилировать-оптимизировать запросы, и т.п.
В целом нельзя сказать, что ты что-то изучил. Это как программирование, нельзя "изучить программирование". Ты можешь просто лучше или хуже что-то делать, иметь достаточные или недостаточные скиллы для какой-то работы.
>>1839253 Я думаю писать запросы, создавать, нормализовывать бд, администрировать это достаточно для начала, даже если ты и знаешь как писать функции, то энивей тебе это не пригодится до определенного момента
Вот те задачки что я решаю на кодворзе, это что-то пригодится в риллайфе? Или нет? Посмотрел тот же фласк, тупо декларативный способ, все определил и сел.
>>1839329 >Вот те задачки что я решаю на кодворзе, это что-то пригодится в риллайфе? От 8 до 6-5 уровня помогают изучить фичи выбранного языка. Все что сложнее абсолютно бесполезно.
Сап питонач, хотел написать клеточный автомат описывающий реакцию белоусова но получилось г на прикле хотя вроде алгоритм правильный я хз где ошибка помогите найти плёс. описание алгоритма и пример работы норм проги где то на 15 минуте в видосе: https://youtu.be/FiO6jkNkrb4 Оно вроде как работает но волны распространяются ромбом а у того чела 8миугольником.
Привет, анон. Играюсь на codewars, получил задание написать бесконечный генератор последовательности простых чисел. По заданию нужно сгенерировать первый миллион. Разумеется есть ограничения по памяти(1.5 MiB) и по времени(16с).
Сначала хотел написать просто сегментированное бесконечное решето Эратосфена, но, разумеется, не хватает памяти, чтобы вместить сам список простых чисел.
Потом решил все таки использовать это решето, но потом перестать добавлять в список простые числа, а тупо перебирать числа и их делимость только на простые числа. Это должен был осуществлять последний блок кода(выделен комментом), но из-за него сжирается вся память нафиг.
Так вот главный вопрос: что вообще в этом последнем блоке может жрать память? Если его отключить, то все работает нормально, за исключением преждевременного прекращения генерации.
Знаю, что решето реализовано говяно, хотел заняться им в конце.
Аноны, возникла проблема с заданием из учебника. Необходимо рекурсивной функцией создать мусорный файл в указанной директории и каждой из её субдерикторий.
Но когда функция натыкается на субдерикторию и вызывает саму себя, то уходит в модуль bootlocale и там
1 if sys.platform.startswith("win"): 2 def getpreferredencoding(do_setlocale=True): 3 if sys.flags.utf8_mode: 4 return 'UTF-8' 5 return _locale._getdefaultlocale()[1]
Заранее извиняюсь если вопрос нубский и входит в факю, но я нагуглил только оханья что это старая проблема с виндой которая периодически вылазит то у одного то у другого и я не понял что с ней делать.
def litter(path): newtext=open("litter.txt", "w") newtext.close() dirlist=os.listdir(path) for i in dirlist: fullname=os.path.join(path, i) if os.path.isdir(fullname): litter(fullname)
litter("C:\\Users\\key\\Desktop\\Pyt\\Code")
Когда он обнаруживает, что объект в директории является директорией, он пытается в нем намусорить, но выдаёт ошибку которую я описал выше и не делает ничего, хотя в главной директории мусорит спокойно.
Сорри я не совсем понял что мне скринить, экран модулей, куда он уходит искать ошибку? Там только эти два блока что я описал выше и все.
>>1840266 Потому что путь меняется когда функция уходит на рекурсию в строке 6. Там создаётся новый путь под варом fulltext, и уже от него открывается новая итерация функции.
Это работает, я проверил путем дебаг рана, новый путь открывается корректно.
Плюс я проверил, будет ли эта функция корректно считывать файлы, она считывает, анончик, с путем все в полном порядке, она просто из за какой-то ошибки (локализации?) не хочет писать текстовый файл в любые субдериктории, только в мейн от которой открывалась.
Более того, он не хочет работать даже при полностью прописанном к субдериктории пути даже не выдавая ошибку при этом.
Вот на скрине, сам путь выстраивается корректно, дело в другом чем то.
>>1840276 Да мне решение задачи и не нужно. Мне очень интересно знать, куда девается память в последнем фрагменте кода. Ну или хотя бы где об использовании питоном памяти можно почитать.
>>1840266 О все страшно извиняюсь, сработало. Понял свою ошибку, надо было понять, что директория для открытия файла автоматически не меняется при новом открытии копии функции. Правда, непонятно почему.
>>1840307 Вроде как питон очень плохо работает с листами, именно поэтому и нужны кортежи, что они и близко не так удобны, но в 10 раз быстрее проходятся. Если для маленьких последоватпььностей такая разница несущественна, то для больших 10х разница ощутима.
>>1840314 Ну любопытно же. Мало ли здесь неизвестный мне нюанс языка? А то, на самом деле, я понял, что часто не совсем понимаю, как конкретно работает та или иная операции языка.
>>1840328 Нюянс не языка но реализации. >> Как обычно, память пожирается, сборщик мусора чистит её ритмично. Если критично, мусорщика можно попинывать через модуль gc. Для питона полтора мега памяти — это вообще крошки какието.
>>1840342 from math import sqrt def sieve_of_eratosthenes(primes, from_n, to_n): length = to_n - from_n arr = [True]length + [False] for p in primes: for i in range((to_n - 1 - (from_n-1)//pp)//p): b = -from_n % p arr[b + pi] = False for i in range(int(sqrt(to_n)) + 1 - from_n): if arr: p = from_n + i for j in range(1, (to_n - 1 - (from_n-1)//pp)//p): b = -from_n % p arr[b + pj] = False for i in range(to_n - from_n + 1): if arr: primes.append(from_n + i) return primes
class Primes: def stream(): counter1 = 0 counter2 = 1 primes = sieve_of_eratosthenes([2], 3, 100000) length = len(primes) while True: print(primes[counter1]) yield primes[counter1] if counter1 + 1 == length: primes = sieve_of_eratosthenes(primes, counter2100000, (counter2+1)*100000) # 100000 - размер сегмента решета length = len(primes) counter2 += 1 if counter2 == 4: # 4 - количество сегментов n = primes[-1] + 2 break counter1 += 1 """ while True: is_primal = True for p in primes: if p > sqrt(n): break if n % p == 0: is_primal == False if is_primal: print(n) yield n n += 2 """
>>1839860 Короче неохота вникать, но самая быстрая генерация, на самом деле, это просто тупо проверка всех чисел на простоту.
Или самым тупым способом, делить на все простые до корня, либо иногда оправдано специальные алгоритмы использовать, это когда числа большие проверяешь.
Решето это жутко медленный и не рациональный алгоритм, не только для питона, вообще для любой реализации. Это алгоритм, чтобы на бумажке числа высчитывать, а не для компьютеров, забудь о нём вообще.
>>1840362 Но ведь решето быстрее названых тобой способов, если учесть что мне нужно не одно единственное число на простоту проверять, а выдавать список всех простых чисел. При этом сегментирование экономит память, ведь именно к ней требовательно решето.
Так как миллион простых чисел в списке хранить не получится, то я решил использовать гибридный метод: сначала решето, а потом проверка всех последующих чисел на делимость, использую сгенерированный решетом список простых чисел. И вот именно в этом моменте, когда я уже перестал использовать решето и просто проверяю делимость используя фор по списку - у меня и возникает проблема с памятью.
Что происходит в случае, когда ты делаешь проверку просто на делители до корня. Основные ресурсы съедают проверки именно простых чисел, составные в основном отваливаются довольно быстро. Когда ты заполняешь решето, ты ячейки для каждого составного числа постоянно перезаписываешь, ты делаешь заведомо лишнюю работу.
Второй момент, если бы ты даже на Си это реализовывал. Если у тебя сегмент памяти большой, ты проверяешь больше миллиона чисел, то проблема в том, что это сегмент уже не помещается в кеш, у тебя процессор будет постоянно сбрасывать кеш и лезть в память. А это очень дорого и медленно. Отдельные моменты с адресацией, потому что побайтово сложно что-то записать быстро, надо по словам записывать, по 4 или по 8 байт, пожалуй не скажу, что для 64-х битной архитектуры.
В питоне начинаются нюансы по представлению чисел и как они хранятся в списках. Ты учитывай, что число это на самом деле большой неизменяемый объект. Впрочем, если в списке хранить 1 или 0, то проблем быть не должно. Но тут есть разные варианты по numpy и всякие связанные оптимизации.
Реально я бы тебе предложил сравнить варианты с решетом и просто с проверкой в лоб всех нечётных.
Если у тебя большие числа, корень из которых в миллион, например, то есть другие алгоритмы, основанные на тестах Ферма и т.п., но там масса нюансов. Именно такими способами проверяют большие простые числа по 1000 бит, их в лоб проверить невозможно в принципе.
На числа в районе миллиона смысла в таких алгоритмах заведомо нет. Я думаю, начиная с миллиарда уже появляется.
def create_array(n): res = [] i = 1 while i<= n: res+= return res Не могу сообразить как сделать массив. Уже все перепробовал. И вроде счетчик есть. Если без функции, притом, массив создается. А так, добавлятеся только 1 и все. чяднт?
Анон, подскажи как подготовиться к собесу воркфлоу инженера. Книги и статьи по змеюке не читал, но зато нарешал задачек с литкода, не первый год пишу на нем скрипты, в том числе и объектно ориентированные, написал свой блог на фласке и запилил сортировщик изображений с OpenCV, но чувствую, что этого критически мало. Многих вещей в этом языке я до сих пор не знаю просто потому что не встречался с ними. Поставив в пример руби — у него есть сайт, где он сравнивается с другими языками, включая уникальные особенности языков. Для него же написана хорошая книга Ruby Way, которая довольно кратко и с адекватной сложностью для понимания рассказывает об аспектах языка. Есть ли такое для пайтона?
def greet_all(names: list[str]) -> None: for name in names: print("Hello", name)
Я разобрался что names это переменная и указывается ее тип. Список а внутри строки, а что значит None? типо что по умолчанию там ничего, как раньше, names=None? так?
Пиздонисты, подскажите маслу, которое до этого только в сях всяких писало. У меня на арчике стоит 3.8 змей, надо стартануть проект на жанге под 3.5.0. Полагаю, что поможет только pyenv, но не совсем понимаю как завести проект, при запуске черещ exec с глобалом 3.5.0 лог проекта на джанге все равно пишет, что долбится в 3.8. Да и вообще как очистить глобальный path питона, а то пип уже успел отвалиться, никогда с питоновскими виртуальными средами не работал.
>>1841099 Вы мне объясните что значит это в этом коде > -> None: Те если не будет указан список те он будет пустым, будет возращаться None или как? С типизацией очень удобно, только что так решил задачку на кодворзе прописав что есть что и сразу все норм стало.
>>1841379 Так ну ок, попробовал и так и так, результат один и тот же возращается None, зачем тогда указаывать сразу если это по дефолту после пасс идет? Я вот тут не понял, с типизацией удобно, а зачем указаывать то что возращает и так? И что еще можно тогда указать?
>>1841383 Это хинтинг, он не энфорсит ничего, просто IDE будет тебе бухтеть, если ты передаешь что-то не то, или используешь возвращаемые значения не так. В данном случае указывается, что возвращаемых значений нет, так что использовать нечего.
Питонисты помогите Составить программу, в которой из внешнего файла считывается строка (не менее 20 символов, осмысленная, содержащая строчные и прописные буквы и цифры). Выводится строка, полученная на основе прсчитанной, в которой каждая четвертая буква, кроме пробелов, удваивается.
>>1841601 В виде числа. Все значения я подставляю. Там просто, видимо, охуеть какое сложное выражение получается, раз его даже вольфрам не может подсчитать.
>>1841609 Lambda(tau, Integral(0.0981984024266575(1 - Abs(tau - theta))Integral(0.00964292623914778(1 - Abs(u))(1 - Abs(theta + u)), (u, -1, 1)), (theta, -1, 1))) Коэффициенты можно опустить, без них так же не считается.
>>1841445 with open('file.txt', 'rt') as f: ____src_line = f.read().strip()
result = [] counter=0 for symbol in src_line: ____result.append(symbol) ____if symbol != ' ': ________counter += 1 ________if counter % 4 == 0: ____________result.append(symbol) result_str = "".join(result)
Вот не самое компактное, но самое очевидное решение. В одну строку не сделаешь, разве что используя специфику питона-3.8 и так, что даже гуру питона будет тяжело понять.
Где-то тут раньше приводили короткое "решение", но оно было абсолютно некорректным, неверным.
Не запускал, но вроде должно работать.
Вообще тебе надо доки по программированию читать, это тебе надо. С самых основ скорее всего.
>>1841659 >что Обозначение типа возвращаемой переменной. List[int] значит, что функция возвращается лист из int чисел. >зачем Чтобы знать что возвращается.
Пикрил - пример. У первой функции не обозначен тип возврата, поэтому неизвестно, что она возвращает. Она может вернуть как список, так и None, так и вообще что угодно. У второй функции обозначен тип возвращаемой переменной - список из чисел, поэтому IDE ругается на возврат None, который не является списком. У третьей функции None заменен на список и все нормально. Аналогично с аргументами.
>>1841659 наверно это значит что функция должна вернуть список int. если в коде функции будет возвращяться что-то другое, IDE подсветит это как ошибкцу.
Как написать кучу условий в лямбда функции, какой синтаксис? Так не получается. check = lambda x, y: 4 if x == y else (-1 if x != y else (0 if x == "" or y == "")) Видел как то через скобки.
>>1841693 Вот так получается check = lambda x, y: 4 if x == y else (-1 if x != y else 0) но мне надо впихнуть еще одно условие. Видел как делают тиа такого [хуй пизда залупа](если пидор)(если гнида)( если чушка.) но не могу по синтаксису въехать.
>>1841693 Очень странное выражение. 1) В любом случае выполнится либо х == у, либо х != у 2) У тебя незаконченный тернарный опрератор 0 if x == "" or y == "". Должно быть 0 if x == "" or y == "" else value
>>1841715 >Я про такую нотацию имел ввиду >res = lambda x, y: [1, 2, 3][(x > y) + (x < y) + (x == y or x == 100)] Я такое никогда не видел. Скорее всего ты путаешь ее с использованием словаря, как это сделал я.
Всем привет! Как понять работу .Net апликухи? Зачем нужны все эти сервисы типа Core, Admin и прочие мелкие? Почему просто нельзя сделать сайт на один сервис? Что нам даёт swagger? Это эндпоинты на определенные сервисы/функции?
СТРУКТУРА ВЕБ-АППЛИКАЦИИ Flask Привет друзья мои, вопрос такой щито должно быть в шаблоне а что нет, например запрос к базе данных должен быть во вьюшках и отсылаться затем в шаблончик, где он уже будет обрастать тегами при помощи дирректив шаблонизатора, или запрос к базе дидолжен быть внутри шаблона? Или как у меня: оборачивание в теги происходит во вьюхах и затем в шаблон отправляется готовая структура котора просто рендерится?
>>1841984 Всё это настолько размыто, что хуй знает. Я так понял, что сейчас джуниор это тот кто вообще нихуя не знает, а сеньор это кто хоть что-то знает?
>>1841716 Вроде стало получаться, понял как и словари можно пихать в ванлайнеры. Вроде как удобно. update_light = lambda current: {'green':'yellow', 'yellow':'red', 'red':'green'}[current] Но вот твою строчку не до конца понял. Уж накрутил как то)
Прочитал How to whink like a computer scientist, где объясняется начиная со стрингов и заканчивая ADT и деревьями, выполнил все задания и написал пару помогалок для себя.
Понимаю что нихуя не понимаю, плюс у меня недостаток что я банально компьютерно неграмотный и базовая компьютерная грамотность никогда не была интересна. Но учить и выполнять задания было интерсно.
Сейчас начал просто подряд штудировать питон мануал, но не уверен что это хорошая идея, так как без практики откладывается мало, а с практикой много.
Что теперь, просто читать список литературы из данного раздела подряд?
>>1841970 > Вот этого ↓↓↓ быть не должно вообще, когда 2020 уже на исходе Ох лол. > Отлично выполняет поставленные задачи > Имеет хорошую документацию > Огромное комъюнити и скоп решенные вопросов на SO > Модули ну любой вкус > Прост в создании и развитии
Вроде бы простая задача. Но пиздец подкрался незаметно.
False и True это булевы. Но отправляются и читаются они как 0 или 1. (Логично конечно, но нахуя тогда они вообще? ) Поэтому вместо нескольких кривых но все же нескольких строчек, получилась лютая хуйня с аж тремя ифами. (1 иф проверка на ноль, а остальные два проверка является ли i = булевой, и какая именно.) Как поменьше все это записать?
Уважаемые сеньоры с зарплатой 300ккк/фемтосекунду, подкиньте идей, что написать на гитхаб, чтобы наконец-то куда-нибудь взяли? Из знаний пайтон, джанго и скуль на уровне начинающего долбоёба. В голове идей вообще ноль.
Я все правильно делаю? Ставлю кату по пополярности, беру пистон, ставлю 8ку, тот что полегче для нюфага, и если не проходил то беру то что еще не юзал, и ебашу. Пользуюсь только гуглом и головой. В очень крайнем подглядываю стараюсь сам. Что я упустил если проходить все каты по уровням, то есть брать уровень, проходить, потом решать то что не решил и переходить на следующий уровень. Подумал что если скакать, то не будет результата. Над катой думаю не долго, если не вижу решения кидаю в закладки на потом, решаю то что могу, чтобы не тратить время. Иногда во время решения каты приходит мысля о другой кате, так и иду. Все норм?
>>1842509 Он синхронный и может настать момент, когда треды/пре-форки просто не справятся с io bound, с которым без труда справляются все асинхронные фреймворки и что бы не переписывать всю кодовую базу придется изъебываться с очередями задач и воркерами или вообще манкей патчить gevent'ом Но для учебы норм
>>1842522 >А как же балансировка нагрузки? Тогда тебе придется делать префорки, это будет работать до определенного времени, но будет сжирать память, процессор и коннекты к бд гораздо больше, чем другие фреймворки.
>>1842528 >Тогда тебе придется делать префорки Я про балансировку до Фласка, балансировку запросов между серверами. > коннекты к бд Ну ебана, тут же ПгБаунсер стоять будет, это мимо.
>>1842532 >Я про балансировку до Фласка, балансировку запросов между серверами. А на других серверах уже не фласк будет стоять что ли? Это деньги, между прочим.
>Ну ебана, тут же ПгБаунсер стоять будет, это мимо. Ну да, тут погорячился
>>1842545 Это не отменяет того, что тебе придется делать префорки для фласка и увеличивать утилизацию памяти и процессора, что бы так же эффективно обрабатывать запросы сторонним сервисам/бдшкам, как это происходит на асинхронных фреймворках. Достаточно посмотреть какой rps aiohttp с uvloop могут выдавать.
>>1842540 Что-то я нихуя не понял, но спасибо. Надо посмотреть что такое Ключ. А то я еще не разбирался с разбиением на функции. >>1842561 Добавить всю хуйню что не входит в инты или флоаты или не равно нулю плюс добавить интовые числа равные нулю. Бля, охуенно. Не знал что проверки можно сразу в листе хуярить.
Надо тренировку где показывают как делать однострочники.
>>1842584 >if isinstance(a, int) and a == 0 isinstance проверяет в том числе субклассы. isinstance(False, int) and False == 0 выведет True. >>1842585 >[x for x in src if str(x) != '0'] + [x for x in src if str(x) == '0'] Заебись. Так и знал что можно короче.
>>1842585 > [x for x in src if str(x) != '0'] + [x for x in src if str(x) == '0'] Нули бывают флоатными. Энивей строка получается длинной. [x for x in array if (str(x) != '0') and (str(x) != '0.0')] + [x for x in array if (str(x) == '0') or (str(x) == '0.0')] Хотя может можно короче, я просто подправил.
>>1842600 это всё пососет, если в исходном лите будет "0" Забей на однострочники, ебашь нормально)) f = [x for x in src if str((x,)) in {'(0,)', '(0.0,)'}] return f + [0] * (len(src) - len(f))
Интересно. а каким образом выполнять это на питоне? И ведь 57 людей написало. Ведь даже если ебануть цикл от 1 до n выполняя какую-нибудь простейшую вещь типо присваивания.(for i to range(n): n=1+1) то программа вывалится в тайм аут. Видимо тут нужны доп.библиотеки с хорошей математикой.
>>1842548 Беда фласка ещё в том, что он только и пригоден, чтобы делать сайты вида запрос-ответ, и ни для чего больше.
При этом сильно проигрывает в строгости и стройности Джанго, если клепать круды.
А из-за синхронности принципиально проигрывает aiohttp. Потому что aiohttp можно использовать не только для клепания сайтов, но и как веб-интерфейс к какому-то сервису или приложению, а это уже совсем другая история.
Во фласке, сколько я понимаю, можно добиться какой-то асинхронности, можно вебсокеты поддержать, но как-то очень сложно.
Впрочем возможно, что нормально с фласка начинать, чтобы просто основы веб изучить для начала. aiohttp, наверное, для более подготовленных, особенно по части асинхронности, это уже не начинающий уровень.
По части перформанса сейчас FastAPI очень форсят, говорят, что модно, молодёжно и очень шустро. ХЗ, наверное надо бы потратить время и разобраться.
>>1842619 > сайты вида запрос-ответ В принципе для этого его и норм юзать, вполне себе. > для чего больше "Что-то больше" обычно выносится в Celery или в отдельный сервис.
По бенчмаркам 2016 довольно тяжело сказать что фласк хуйнябезреальныхзадач. Ну а в использовании и поддержке - вполне себе дружелюбен.
>>1841746 >Всем привет! Как понять работу .Net апликухи? Зачем нужны все эти сервисы типа Core, Admin и прочие мелкие? Почему просто нельзя сделать сайт на один сервис? Тебе не в шарпотред?
>>1842729 >Установлен пайтон 3.8, мне нужно запустить проект под 3.5 (со слов заказчика) Скорее всего запустится без проблем на более новой версии. Там довольно хорошая обратная совместимость, хотя какие-то depricated штуки они выкидывают, только из-за этого могут быть проблемы. Но в 3.8 такого немного.
>А, то есть после установки в pyenv 3.5 для его запуска у меня появляется имя в системе? Я просто не совсем понимаю, как этот pyenv работает. Когда ты делаешь вирнуальное окружение, происходит следующее. Питон создаёт каталог для виртуального окружения, каталог ты сам выбираешь, например /opt/virtualenvs/py35 В нём подкаталоги вроде bin, include, lib. В эти каталоги помещаются запускаемые файлы или ссылки на них, в эти каталоги ставятся модули через pip. Что-то ставится в систему, поэтому просто принцип "скопировать каталог" не сработает, если в системе не хватает некоторых питон-библиотек.
"Активация окружения" - это когда в "переменные окружения" добавляется значение VIRTUAL_ENV=/opt/virtualenvs/py35 в PATH добавляется /opt/virtualenvs/py35/bin Ну и ещё в линуксе меняется приглашение командной строки, чтобы было видно, что ты работаешь через окружение. Всё.
Всё остальное делает сам питон, когда ты его запускаешь. Если он находит в переменных среды VIRTUAL_ENV, то использует систему модулей оттуда. Если нет, то он вычисляет, откуда брать модули по тому, откуда был запущен сам интерпретатор.
Поэтому ты просто можешь запускать интерпретатор по полному имени. Не как python my_script.py, а как /opt/virtualenvs/py35/bin/python my_script.py. Тогда тебе не нужно менять PATH (исходно PATH нужен для того, чтобы без полного пути команды запускать, любые, и ни для чего больше), тебе не нужно активировать окружение. Просто берёшь и запускаешь, и всё идеально работает.
Так даже в "домашнем режиме" удобнее работать. А на сервере только так и надо что-то запускать.
>>1842799 Да какой-то шизанутый тип, похоже, не очень понимающий, что к чему. Что-то изучивший в универе, и теперь счищающий, что сможет изменить мир, дай только волю и бабло. Типо все разработчики тупые бараны, ничего не могущие, а вот он в универе учился и умные слова знает.
Посмотрел "план", который ни разу не план, очень абстрактно и никакого обоснования ни цифр, ни проблем, которые есть, и что там переделать надо.
В то время как ускорители питона в реальности есть. Например pypy, который с JIT и реально что-то ускоряет в разы, хотя что-то не ускоряет и что-то может даже замедлить. Модуль nuitka.
Кто бы для разработчиков pypy денег подогнал, а то они медленно работают и отстают, только сейчас как-то 3.7 версию поддержали.
>>1842817 Там где-то в каментах было, что он уже чем-то таким успешно занимался. Так что может бы что-то и взелтело, но какой-то уж слишком эпический план.
Вот ответ с локального: window._sharedData = {"config":{"csrf_token":"sPZpGC3lTeh6nXAmVmwhwihenhBCx4cw","viewer":null,"viewerId":null},"country_code":"RU","language_code":"en","locale":"en_US","entry_data":{"TagPage":[{"graphql":{"hashtag":{"id":"17842255069035128","name":"bogota","allow_following":false,"is_following":false,"is_top_media_only":false
>>1842885 удаленный сервер - Heroku. вряд ли айпи зашкваренный. тут что-то с параметрами requests.get(). попробовал с aiohttp.ClientSession(), результат такой же.
>>1842876 Как вариант, с одного компьютера ты авторизован, а с другого нет, вот и выдаёт тебе разные данные. Сессия легко может быть привязана к ip адресу, например.
>>1842836 Все мы чем-то занимаемся. Но план смотрится "я просто сяду, и перепишу круто", без пояснений. Для меня это признак того, что человек не совсем адекватен.
В команде разработчиков питона вообще говоря очень серьёзные спецы, и если что-то работает медленно, то на то есть объективные причины, что вот просто так не перепишешь, чтобы быстро. Если есть какие-то ограничения, тот же GIL, то потому, что многие фишки языка просто завязаны на эти ограничения и их не выпилишь так просто.
При этом сторонние проекты есть, которые призваны ускорить питон, и даже как-то поддерживаются питон-сообществом. Тот же PyPy.
В реальности всё обычно выглядит так, что ты начинаешь оптимизировать и сталкиваешься с тем, что оптимизировать невозможно, не меняя что-то принципиально в устройстве языка. Вот сложно делать JIT или компиляцию в бинарный код, когда внутри все объекты завязаны на динамические словари, все данные через них. Когда всё объект, а всё объект нужно для того, чтобы всё можно было использовать кк ключ в словарях и т.п. И куча других нюансов.
Если чел серьёзно не контрибьютил в питон, то такие предложения можно даже и не рассматривать.
А выступить с таким предложением может любой абсолютно.
>>1842808 >Тогда тебе не нужно менять PATH (исходно PATH нужен для того, чтобы без полного пути команды запускать, любые, и ни для чего больше), тебе не нужно активировать окружение. Спасибо, анон, примерно так я и понимал это дело. Видимо на стороне разработчика проекта уже какие-то неадекватные требования, на мои логи ошибок он просит «установите 3.5», что очень странно, как я считаю.
Ну там проект на джанге, надо попробовать миграции сделать чтоли...
Алсо, что порекомендуешь для восстановления эээ ммм уу конфигурации пайтона и пипа. Я сначала с дуру все присланные requirements.txt начал ставить и пип улетел в ошибки на любой вызов, вылечилось curlом пипа напрямую, но, мне кажется, у меня сейчас какая-то каша из модулей разных версий. Как вообще лучше всего соблюдать эту гигиену питона, не ломать его зависимости, диагностировать его состояние? Я понимаю, что принцип, возможно, общий для nix систем, но все еще не ясно, как «культурно» разрабатывать на нем. Привык я к сишным гвоздям, забитым в виме и мейку.
Стоит ли вскрывать решения каты или нужно пытаться самому? Напр, если задача чисто на математику и я в этом не силен, и если я просто буду знать формулу, то напишу прогу для решения или буду знать алг для решения задачи. Или я буду довеном после открытия решения? Как нужно, сидеть и дрочить, или скипать.
>>1842989 Если знаешь формулу. то в чем проблема ее подставить? если ты не умеешь 2+2 складывать, то работодателю тоже ответишь, что нахуй мне этот ваш матан. я хочу лишь на жопе сидеть и получать деньги. Учись гуглить и разбивать задачу на более мелкие подзадачи.
>>1842949 Ну как грится - посмотрим, из переписки я понял что он хочет сделать этап -> показать результат -> получить ЗП -> перейти к следующему этапу. Выглядит ок, чо, пускай пилит.
>>1842975 >requirements.txt На редкость порочная практика. В принципе, вещь правильная, если подходить правильно и описывать зависимости руками, указывая диапазоны и ограничения, достаточные, чтобы сохранить обратную совместимость.
Но в реальности все ленивые, тупо делают pip freeze, который замораживает версии библиотек намертво, в духе "packet==3.8.6", хотя всё прекрасно работает и с версией 3.15.2, а другому пакету критично, чтобы версия была не ниже 3.10.1, и вот ебись потом сам с этими зависимостями.
pip freeze это максимум для докер контейнеров решение, и то не идеальное.
>>1843010 >получить ЗП -> перейти к следующему этапу. Выглядит ок, чо, пускай пилит. Вот здесь очень тяжело. Нет работодателя, готового платить полноценную зарплату. Нет того, кто может просто так выделить деньги.
Даже у проверенных и востребованных проектов с именем масса проблем с финансированием.
А так, пускай пытается. Но для меня очевидно, что ни бабло привлечь не сможет, ни что-то сделать реально работающее и полезное.
>>1842995 Да не, это все ясно и ты прав. > Если знаешь формулу я про каты) а не про работу. Дело в том что кодить - не сложно, если знаешь формулу, если тебе ее дадут написать прогу - как нехуй делать. С алгами - сложнее, иногда решение упиратеся и в знание языка тоже. Например я знаю как, но не знаю какой инстумент заюзать. Конечно я гуглю. Я вообще спрашивал про кодворз) стоит ли вскрывать кату и подсматривать решение или нет? Или надо сидеть прям до конца.
>>1842975 >разных версий. Как вообще лучше всего соблюдать эту гигиену питона, не ломать его зависимости, диагностировать его состояние? Бля, пиздец какой-то. Буквально пару дней назад угрохал кучу времени на то, чтобы понять, почему aiohttp иногда оставляет хендлеры с вебсокетами, когда вебсокеты реально закрыты. Почему не понял, в кишки не лез, но думал, как обойти. Придумал, как правильно размазать сопли в хендлере, чтобы всё-таки такие соединения отлавливать и убивать.
А оказывается, уже целых пять дней назад Светлов выкатил версию aiohttp 3.7 (вместо 3.6), где судя по анонсу, вокруг вебсокетов как раз куча багов закрыта.
И походу мои баги тоже закрылись.
Бля, не мог на пару месяцев раньше выкатить. Ну или полгода ещё подождать, чтобы не так обидно было, столько нервов, столько нервов... Хоть FastAPI изучай.
>>1843108 Я не про конкретную) я в целом, стоит ли вскрывать решение или нет, или надо сидеть самому. Я хочу понять стоит ли прям задрачивать математику рад хонора или нет? Програмирование - это же не чистая математика, обработка данных идет по заданному алгу а не по только что выдуманному, для такого есть уже дургие люди. Например, моя задача поднять сервер, а не придумать новый фрейм, алг к тому чтобы поднять. Я вот про что, в рил лайфе, тебе дадут исходные данные, с формлуами, задача - сделаь готовую прогу. А так, уйдут годы, надо будет каждый раз либо изобретать велосипед, либо проводит тоны времени в поисках секретной педали к велосипеду. Чтобы просто поехать.
Хорошая схема такая - ты сидишь и думаешь над решением, что-то реализовываешь, или сдаёшься, если не знаешь как или слишком топорно.
Потом смотришь другие решения, сравниваешь со своим, смотришь на плюсы-минусы другого решения, думаешь, почему сам до такого не догадался.
Ещё хорошая практика в том, чтобы через день-неделю-месяц ещё раз решить задачу уже правильно, другим способом, не смотря в подсказку.
Так ты чему-то учишься и нарабатываешь скилл.
Просто смотреть чужие решения и запоминать их бесполезно.
>Я вот про что, в рил лайфе, тебе дадут исходные данные, с формлуами, задача - сделаь готовую прогу. Это упрощённое и наивное представление, в RL такого не бывает, чтобы было чёткое ТЗ и описание, как это реализовывать.
В реальности очень смутная постановка задачи, не понятно, как решать, посоветоваться не с кем, при этом задача меняется постоянно на противоположную, и всё это надо вписать в огромную инфраструктуру уже написанного и не очень дружного, куда хрен влезешь со своими правками и хрен вообще разберёшься, что и как там работает.
>>1843177 Просто когда я решаю кату - у меня чувство удовлетоворения, что написал код, вроде как не зря. А когда нет - и упирается в математику - а не в язык - у меня апатия, или когда мейнтейнер криво написал задание. Как то так. Поэтому и спросил, скипать каты - это как, зашквар или нет?
Подумываю запилить бота для двача. Как первый проект, и ради лулзов. Будет парсить /b/ и в случае совпадение с ключевым словом, постить картинку в ответ на этот пост(Нет не свыню, и нет ключевое слово совсем другое)
Что нужно для этого? Наверняка есть уже такие же боты, но хотелось бы самому написать
>>1843349 Надо, чтобы какое-то удовольствие приносило, иначе толку нет, только во вред, тупо выгораешь от таких задач.
Я не думаю, что есть большой смысл в больших объёмах "олимпиадных" задач. Слишком специфичны и слишком ограничены.
Они полезны, но они лишь малая часть от реального программирования.
В них нет большого кода, который надо организовывать - в них у тебя обычно несколько десятков строк всего. А в реальной жизни тебе нужно как-то упорядочивать огромный по объёму код, чтобы его поддерживать можно было хотя бы самому.
Там ты пишешь с нуля, а в реально жизни тебе необходимо разбираться с логикой разных библиотек, фреймворков и просто чужого кода. В них нет технологий, графики, сети, баз данных, и кучи всего ещё, просто одни алгоритмы.
Порешал эти задачки, займись чем-нибудь более прикладным. Потом ещё можно будет порешать сколько-то, чтобы мозги размять. ИМХО как-то так.
>>1843349 >Как то так. Поэтому и спросил, скипать каты - это как, зашквар или нет? Лично я вообще не мог заставить себя решать подобные задачки. Основные навыки получил при помощи РАБоты, пет-проектов и регулярного чтения документации и разных туториалов. Этого хватает чтобы за несколько минут решать легкие и большинство средних задачек. Ну а тяжелые просто не интересно, поскольку для их решения нужно знать математику и алгоритмы, которые больше нигде не пригодятся.
Какие же они хуесосы блять. Перевели машиной СОФ. и сидят блять рекламу гребут. Причем не сразу заметно что это машина, и не сразу заметно, что это парашный клон. Когда же их закроют блять. Почему бы не выдавать гуглу просто английский СОФ который можно читать без крови из глаз?
>>1843465 Ну эти задачки начал решать после прочтения частично луца, укуса и оф доков. Так бы и не начал. Тебе повезло, я только ищу работу. ПОэтому для меня подобные сайты - хоть какая-то практика. Я уже хотя бы могу в синтаксис. Если даже не получается решить, я читал про списки например, про их методы, что-то кодил и тд, уже ставлю себе галочку что что-то делал. Например, задачка был по регулярками, не решил, отложил на потом, НО, я еще раз почитал гугл по теме и освежил в памяти. Строки даются тяжело так как они не изменяемы, и надо постоянно все преобразовывать. Прогоняю то что могу решить, остальное оставляю на потом. Хочу чтобы это стало частью хобби, даже когда найду работу кодером, буду там сидеть. К свлоу, хотел бы запилить борду, но не знаю с какого каря взяться. Вот и все. А так - навык есть, хоть какой-то и литл практика. И это лучше чем просто читать.
>>1843474 >К свлоу, хотел бы запилить борду, но не знаю с какого каря взяться. Вот и все. А так - навык есть, хоть какой-то и литл практика. И это лучше чем просто читать. Запилить самому борду было бы намного полезнее чем решать эти задачи.
>>1843479 Это я уже делал пару лет назад, потом бросил, вот вернулся снова. И это самое простое на мой взгляд. ТАк то джанга проста как палка и хорошо задокументирована, я не знаю только как сделать фрон, а остальное - как бы ясно. Вот эти дзиндзи и прочее.
>>1843482 >я не знаю только как сделать фрон, а остальное - как бы ясно Чего конкретно не понимаешь? Вот тут хорошие туториалы по HTML/CSS/JS: https://www.w3schools.com
Основы верстки можно освоить за один-два вечера, а дальше будешь просто набирать опыт и учиться делать быстрее и лучше.
>>1842548 Можете рассказать где граница проходит, предположим каждую секунду к сервису обращаются 100 пользователей, это много/мало, как разделять на то где нужен асинхронный, а где нет и кст, хз какого года график, но в джанге же есть асинхронность, че он сосет так
>>1843489 График 2016 года. Просто юзай асинхронность везде и норм. По факту, синхронные сервисы прекрасно справляются с нагрузкой, там где они подходят под задачу. Но расход средств памяти и ЦП у них выше.
>>1843489 В джанге пока не полноценная асинхронность, и основана она на порашных тредах, потом перепишут, плюс у джанги куча обвязки с самого начала уже, можешь миддлвари посмотреть. Базовая джанга из коробки никогда не будет быстрее любого микрофреймворка
Сап народ не в теме машинного обучения но вопрос можно ли запилить тян-бота на основе переписки с тян в WhatsApp. Хз почему такая ебнутая мысль пришла. Если можно как мне от туда вытащить текстовые сообщения и поидее нужно отсортировать их на мои и её и какую лучше библиотеку брать? Tensorflow?
>>1835577 (OP) Аноны, объясните нафане, я правильно понимаю, что Питон на компе, должен быть всегда пустой, без библиотек. А библиотеки нужно подгружать в виртуальную среду проекта (в ПайЧарм например), для каждого соответственно свои? Или я как-то не так понял про виртуальную среду?
А можно ли сортировать не все элементы, а только часть?(Например не трогать семерки) Или это самому придется писать? Аля сортировка пузырьком с доп ифом?
Просто вроде в .сорт можно поставить функцию которая будет применяется к элементу до его сортировки, но можно ли с помощью нее делать выборку?
Как проверить еще деление с остатком и без кроме как is_integer? Чтобы было так если число делится с остатком - заебись. или нет. А не так что в равенство пихать эти is_
Делаю тесты, надо имплементировать поглощающих цепи Маркова на питоне, чтобы на вводную матрицу она выдавала результат - лимитирующую матрицу.
Все тесты кроме одного она проходит. Я убился но могу понять где ошибка, уже от балды рандомные данные вбиваю и смотрю результат. Просто охуеть.
Кто сталкивался, подскажите какие маргинальные случаи стоит попрбовать. Комплексных абсорбирующих штатов по условиям нет. Всегда есть хотя бы один не комплексный.
Уже все перебрал, и когда все штаты абсорбирующие кроме одного и наоброт. Сижу с ручкой считаю все правильно выходит.