Это копия, сохраненная 14 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1817742 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
https://dumpz.org/bASGKD8cCFDf
а если у двух разных изображений один размер?
Можно хеш посчитать, хули нам.
мне помогла книга "автоматизаия рутинных задач", потом читай марка лутца или как там его
Гугл не помог
ERROR: Command errored out with exit status 1:
command: 'c:\python\python.exe' 'c:\python\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\user\AppData\Local\Temp\tmpqdnw1a52'
cwd: C:\Users\user\AppData\Local\Temp\pip-install-1bq6g5bg\argon2-cffi
Complete output (25 lines):
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\argon2
copying src\argon2\exceptions.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\low_level.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_ffi_build.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_legacy.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_password_hasher.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_utils.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\__init__.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\__main__.py -> build\lib.win-amd64-3.9\argon2
running build_clib
building 'argon2' library
creating build\temp.win-amd64-3.9
creating build\temp.win-amd64-3.9\extras
creating build\temp.win-amd64-3.9\extras\libargon2
creating build\temp.win-amd64-3.9\extras\libargon2\src
creating build\temp.win-amd64-3.9\extras\libargon2\src\blake2
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Iextras\libargon2\src\..\include -Iextras\libargon2\src\blake2 -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\include /Tcextras\libargon2\src\argon2.c /Fobuild\temp.win-amd64-3.9\extras\libargon2\src\argon2.obj
argon2.c
extras\libargon2\src\argon2.c(18): fatal error C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о票Ґ: string.h: No such file or directory,
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
----------------------------------------
ERROR: Failed building wheel for argon2-cffi
Failed to build argon2-cffi
ERROR: Could not build wheels for argon2-cffi which use PEP 517 and cannot be installed directly
Гугл не помог
ERROR: Command errored out with exit status 1:
command: 'c:\python\python.exe' 'c:\python\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\user\AppData\Local\Temp\tmpqdnw1a52'
cwd: C:\Users\user\AppData\Local\Temp\pip-install-1bq6g5bg\argon2-cffi
Complete output (25 lines):
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\argon2
copying src\argon2\exceptions.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\low_level.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_ffi_build.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_legacy.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_password_hasher.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\_utils.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\__init__.py -> build\lib.win-amd64-3.9\argon2
copying src\argon2\__main__.py -> build\lib.win-amd64-3.9\argon2
running build_clib
building 'argon2' library
creating build\temp.win-amd64-3.9
creating build\temp.win-amd64-3.9\extras
creating build\temp.win-amd64-3.9\extras\libargon2
creating build\temp.win-amd64-3.9\extras\libargon2\src
creating build\temp.win-amd64-3.9\extras\libargon2\src\blake2
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Iextras\libargon2\src\..\include -Iextras\libargon2\src\blake2 -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\include /Tcextras\libargon2\src\argon2.c /Fobuild\temp.win-amd64-3.9\extras\libargon2\src\argon2.obj
argon2.c
extras\libargon2\src\argon2.c(18): fatal error C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о票Ґ: string.h: No such file or directory,
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
----------------------------------------
ERROR: Failed building wheel for argon2-cffi
Failed to build argon2-cffi
ERROR: Could not build wheels for argon2-cffi which use PEP 517 and cannot be installed directly
>extras\libargon2\src\argon2.c(18): fatal error C1083: ЌҐ г¤ Ґвбп ®вЄалвм д ©« ўЄ«о票Ґ: string.h: No such file or directory,
Вангую, что путь содержит кириллицу
думаю, эта строчка поможет
я камень видимо, но не помогло.
Я подумал о кодировке и кириллицу, но в пути ведь нет кириллицы
Ебался с такой катой
Given a string of digits, you should replace any digit below 5 with '0' and any digit 5 and above with '1'. Return the resulting string.
решил так
https://www.codepile.net/pile/5xXGZOvb
Посмотрел в решениях у других, челики рили такое решают в одну строчку. Я еще сидел экспереминтировал в ипутоне больше часа. Хоноры дали, но слишком долго и многословно что то. Как прокачаться и начать мыслить быстрее? Много времени уходит на приведение одного типа в другой и обратно, то ли понимания нету то ли опыт то ли хз.
Нужна регулярка. Ты просто зачем-то сразу решил делать через инты, а не символы и не нашёл нужного инструмента.
Решил твою задачку за минуту: "".join(["0" if int(x) < 5 else "1" for x in list(digits)]). Также можно решить при помощи регурярки >>35870 но этот вариант лучше.
>Как научиться составлять однострочники все таки, что эта опыт?
Чисто опыт. Необходимо не только писать код, но и постоянно читать туториалы/документацию. Иначе про некоторые полезные вещи вообще никогда не узнаешь.
Да, такое решение у анонов с кодворза. Ну есть к чему стремится. Я зацилен на переменных как у лутца) и на приведение типа. Но в целом, логика такая же как и в одну строчку, с проверкой и созданием нового списка.
Типа class A(object)
В книге, которую я читал, говорили, что нужно. Это отличие между старыми классами и новыми.
Но когда я начал смотреть видосы этого года, то никто не пишет object.
Как правильно и почему?
Когда ты пишешь в декларации класса что-то в скобках - ты наследуешься от этого класса в скобках, хз как раньше, но сейчас все классы наследуются от object, писать этого не надо, если не хочешь наследоваться от его-либо специально(например хочешь свою убер строку сделать с каким-то методом)
Я нашел для себя решение в изучении чего-то нового. Решил поучить Python и вроде помогает, реально отпускать стало. Но вот в чем беда, я скачал учебник чуть ли не по первой ссылке, поставил PyCharm, анаконду3, питон 3.9, но, сука, чем ближе я был к 10-ой главе, тем больше у меня вопросов появлялось "а это тут, блядь, откуда?".
В седьмом уроке используют лямбда-функцию и сразу же говорят, мол, что такое лямбда-функция вы узнаете в 10.4. То есть просто пустой пример, который я просто понять не смогу на 100% потому как нихуя еще не объяснили. Сейчас дошел до десятого урока с функциями и ебался полчаса с фибоначчи. Дело в том, что нигде не сказано что и как и где использовать - то есть если я в командной строке вбиваю, то там заебывает отступы делать, а в PyCharm, естественно, приходится создавать переменную для ввода (а ведь нигде мне этого не говорят, пришлось самому дойти). Там вообще автор внутри функции расчет двух ближайших чисел делает, сука, опять же с функцией и у него зачем-то сделано так fibb(n - 1) + fibb(n - 2), в самом начале есть проверка на ноль, единицу и двойку, но, блядь, получается что вот это ELSE еще и внутри скобок проверяет что написано. Ввел просто return n + (n - 1) и все заработало как часы.
Но, блядь, я тут не ради бугурта.
Хотел спросить - есть прям для отбитых ебланов вроде меня учебники, чтобы там все последовательно объясняли в примерах?
Я же ебнусь.
Вон уже в лямбда-функции этот даун какой то prod = 1 пишет, а я не ебу что это.
for x in lan:
for y in x:
for z in y:
пискька писька писька
Чтобы было так сосиська = [вот чтобы так как сверху было тут, как это сделать для писки в y]
Где там конкретика? Нет там такого запроса "учебник для отбитых ебланов". Вот и ебись перелистывая все что нарыли за столько лет. Я тут у людей с опытом спрашиваю, ибо то что я сейчас читал - пиздец.
>"Вот есть такая штука как функция. А вот хвостовая рекурсия. А теперь следующая тема", как ты ещё держишься после такого.
Я чет подумал сначала что просто недостаточно внимательно читаю, поэтому начал уже в интернете смотреть, но да, дошел до момента когда просто уже не понимаю что хочет автор донести и решил прям совсем для начинающих учебник найти.
Пиздец, у меня из cmd пишет что даже python нет команды, при установке нажимал кнопку добавить в path, почему на винде вообще люди сидят я не понимаю
Ничего не могу посоветовать, те книги, что совсем для новичков, максимально скучные, когда дойдешь до чего-то интересного, уже силы на исходе. Я бы лучше выбрал совсем маленькую задачу для решения и уже по ней читал что необходимо. Хоть понятно что зачем нужно.
>>36154
Если десятка, то из магазина приложений скачай и не страдай. И попробуй в powershell команду выполнить (get-command python).path
Все решилось, когда я перезапустил cmd, я просто в шоке с винды
Когда начинал изуть по укусу тоже было непонятно некоторое как и анону выше, автор что-то рассказывает про цифры, а потом начинает какие-то строковые методы юзать и ты читаешь думая что ты что-то пропустил
Почему оно то перетасовывает всё, то оставляет на местах, то ещё как-то делает, я не понимаю.
Очень интересует общий интерфейс для нескольких чат платформ и возможность написания своих адаптеров
+ какая-нибудь встроенная поддержка/примеры с nlu
Потому что от множеств не требуется порядок, их делают для упрощения операции проверки вхождения.
Ах да, охуительный момент: порядок элементов множества меняется от запуска интрепретатора к запуску интерпретатора, потому что там используются рандомизированные хэш-таблицы. А в дикте гарантируют сохранение порядка добавления ключей.
Ну и начал с основ. Тем более у вас под любую хуету есть функции, методы. Охуенно. Полез на кодварс и сижу кайфую.
Обьясните дегенерату. Почему 1 не работает адекватно, и не находит длину кратчайшего слова, а второе нормально работает? По сути нет разницы ведь. Элька только потом, после всех слов должна выйти из цикла и ретурнутся. А по итогу она находит первое же слово меньше 10(Потом сменил на 99 чтобы наверняка) и идет радовать проверку. ЧЗХ?
Потому что первая функция возвращает последнее слово, длинна которого меньше 10, а вторая находит слину первого слова, если 2-е будет короче, то запишет в а переменную длину 2-го и так пока не надет самое короткое
for (int i = 0; i < array.length; i++)
чтобы i была, для алгоритма перебора нужно
>мда
Замени string.length на len(string). А вообще, лучше пиздуй читать туториалы. У тебя знания на нуле.
Размер в питоне не метод, а функция len()
Я ебанул у себя на компе лист из 1910 чисел. (i3, и 4гб оперативы)
Вмиг выполнилось.
А тут видите ли таймаут.
Кто-нибудь может попробовать ради досуга выполнить этот тест и сказать что все окей? Или просто создатель теста пидор и поломал проверку?
https://www.codewars.com/kata/5ce399e0047a45001c853c2b
>А тут видите ли таймаут.
У тебя потенциально бесконечный цикл. Твой алгоритм не работает на каком-то из тест кейсов.
Ну хуй знает. Ладно. Щас посмотрим.
Но базовые тесты он выполняет. (Нулевые листы, простые, большие листы. мой лист с огромным кол-вом цифр, минусовые листы)
Meh.
Понимание как работает средний питонячий микрофреймворк + понимание питонячьей асинхронности и умение не наебаться на race condition
Лист с 60000 цифрами таки уводит питон в даун. Он ОЧЕНЬ долго обрабатывает.
Но каким макаром я должен написать прогу так чтобы медленный питон смог обработать такой лист за 12000мс?
после плюсов несколько месяцев привыкал
Нет, это типо батла или что? Или то же что и каты только другое) что это вообще такое то?
for i, a in enumerate(array):
ну вот нахуя каждый раз сумму вычислять например?
достаточно и одного раза за обращение к функции.
Но там же меняется список. Там нужно первые части списка удалять за прокрут, пока их не останется.
Сумма по итогу будет меняться. Как мы один раз за вызов обращаться будем?
Бляяяяя. Ведь можно удалять передние и тупо вычитать из суммы. Щас. Погоди.
Квадратные скобки с i проебались, но думаю и так понятно
Это делает код красивым, ещё про сокращённое присваивание посмотри, это штуки вроде *= -= += и тд
На питоне 3.8 можно сделать в одну строчку и с аналогичной производительностью:
(lambda s: + [s := s - l for l in ls])(sum(ls))
Меня просто корежит с такого названия переменных и юзания длинных однострочников
В 3.8 добавили в itertools.accumulate параметр initial, без него сложнее, надо уже более извращённую функцию самописную подставлять, что менее читаемо и медленней.
Хотя вру, в старых версиях питона ничуть не сложнее, но надо на вход другой подать список, где первым будет инициализирующее значение. Чуть менее наглядно просто
Блять вы тролите чтоли со своими обосрачниками? Нахуя они вам сдались? Есть ли аргументы в их пользу?
Нужно, чтобы после ввода этот элемент удалялся.
прописываю через pop и remove, но меня шлют нахуй
>Нахуя они вам сдались? Есть ли аргументы в их пользу?
Однострочники нужно писать когда они выполняют понятное действие, которое можно описать одним предложением. Хорошо написанные однострочники читаются легче, чем говнокод с циклами. Вдобавок, код получается компактнее без ущерба читаемости, а значит его легче поддерживать.
Однострочники не нужно писать исключительно ради запихивания кучи кода в одну строку. Не можешь коротко описать что делает строка - не пиши однострочник. Но и говнокод вроде этого >>36589 >>36587 писать тоже не нужно.
Ты проходишь по списку попутно удаляя из него элементы, не надо так делать. range(len(array)) - тоже делать не надо, есть enumerate. Попробуй сделать с помощью filter или list comprehension. Или обожди немного, тебе однострочник принесут.
>но меня шлют нахуй
Как именно?
Что такое random_array и dash?
Вообще, глянь на модуль 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])
Но это чисто стилистические придирки
>random_array
слово, каждая буква которого это элемент массива.
dash это прочерки.
нужно просто сделать, если элемент уже был использован, чтобы он не использовался снова, хотел его из массива удалить, но ошибка.
делал через set, оно удалялось, но через сет позиция элементов была не верной и это не имело смысла
Выводится строка в которой каждая четвертая буква, кроме пробелов, удваивается.
''.join([l*2 if not (i+1) % 4 and l != ' ' else l for i,l in enumerate('моя замечательная строка')])
все получилось.
Да, актуален
Стандартную библиотеку очень полезно знать, дурной стиль её не знать.
На практике, впрочем, ты пишешь отдельную функцию, внутри которой или пять строк, или одна, называешь понятно, и потом просто пользуешься, не заглядывая внутрь.
Однострочечники нужны скорее для рутины, чтобы меньше воды в коде было и он понятнее был. Те же генераторы списков и словарей великая вещь, благодаря своей компактности.
Как впихнуть счетчик в строку?
Чтобы число в строке увеличивалось на 1, n +1.
Типо так
"1table2table3table"
Юзал f'' но там впихивается например весь список. Хз как сделать, сломал голову уже. И вайл пробовал и списки и генераторы и range.
Суть в том что у меня есть эксел файл куда я вписываю каждый месяц сколько у меня денег в трёх разных заначках. Решил сделать телеграм бота, который делает тоже самое.
У меня нет второго акка в телене, так что не знаю на сколько успешно бот работает с несколькими юзерами, возможно он сразу упадёт.
Все что требуется, это потыкать пару раз /add и /show можете еще перед этим фейковые данные вставить /fill
Сам бот https://t.me/money_buckets_bot
Код https://github.com/gmovchan/PersonalFinance
>>1833647 →-кун
720x406, 0:11
Пример идеального ждуна, пикрил.
Или вообще все хуйня и писать на C++ std::vector?
Если хочешь дрочить цифры и не вылезать особо из питона то юзай cython
Вот у нас есть три ренжа, как написать
if zalupa == range1 or zalupa == range2 or zalupa range3:
do something pizdets.
Как в питоне впихивают код С и явы для ускорения? Это сильно сложно, напр если написать что-то на С, как можно это реализовать или интегрировать с питоном.
И если питон такой крутой, расширеямый и тд, то почему он не намбер ван пока? Ведь рили, он может все, что могут другие, при том проще в разц и понятнее, а главное порог - практичеки нулевой. Не считая знания высших математик и алгортитмов. Но если не изобретать велосипедов, но способов метамыслить от силы 7 не более, простая логика. А?
Захожу в решения, а там решения в одну строчку. В пять строчек максимум.
Блееее.
Все норм чел, сейм шит. Уже стало получаться практически в одну строчку. Ты не один.
Вот тут ты ошибаешься если не троллишь)
Наоборот, после укуса питона, онли кодворз и практика. Только так, знал бы раньше не потратил 3 года впустую давно бы уже кодил и мб даже наашел работку.
Ну реально. Пишу код. 10 строчек. По итогу.
В решениях ровно одна строка которая является функцией, что исполняет саму задачу.
Или всякие константы которые на нет сводят мою еблю с проверкой через циклы.
return pizdets is ascii
И все ебать.
Да, по скорости одинаково ибо в этих функциях все такие же проверки через циклы.
Где бы найти списочек всяких полезных функций?
Ты тот года одну книгу читал?
стандартная библиотека питона в помощь, вместо дрочки на ночь, читаешь про 2-3 метода.
На практике их повертишь , в голову отложится, что такая еба есть и реализовывать ее с нуля не надо.
Благодарствую :3
> Ваш однострочник говно
> Вот мой однострочник, импортирующий 2 либы для того же самого - заебись
С какими, блять, шизоидами я тут сижу. У одного, блять, читаемость хуевая, другой это делает. Боже.
бамп
Яву в питон? Нахуя?
1) питон медленнее Java, C++, C#
2) про расширения есть в документации
3) питон около интерпрайз. В плане функционального языка его потеснил Go, для крудхуяков есть Spring.
Сам не рад, но такая ситуация. Например в ДИТ стэк Spring/Angular и вряд ли ситуация изменится.
Никто не хочет отходить от SOA к микросервисам.
Это накладные расходы.
Питон кстати в плане оверхеда тот ещё пиздец. В одно рыло написать код куда ещё не шло, а вот по ресурсам он очень прожорлив. 3.9 кстати медленнее 3.8 и в релизе так и не решили проблему с многопоточностью.
Может 3.10 будет поживее. Алсо, если в шарпе и Яве ещё нужны все алгоритмы от gang of four, то это не про питон. Тут все проще и не надо изобретать велосипед. Код понятнее, абстракции реже встречаются.
Опять же, в плане расширения хуже.
Гугли cython, juthon
Чем кодварс помогает на практике? Я понемногу вкатываюсь в эти ваши генераторы и т.д, но чтобы написать большую часть простой хуйни сложные решения и не нужны, да и код проще поспринимать как по мне без генераторов с лямбдой на 100 символов, уж лучше написать нормальный цикл и четко прописать что с чем происходит
Тем что я практикуюсь, а так я прочитал книгу и сижу. А по итогу, если суть да дело - я нихуя не смогу, а так я уже хоть что-то делаю, читаю ту же книгу, но просто по гуглу) и пишу код, хотя бы так, пока бесплатно.
То что я узнал, я постоянно закрепляю, копаюсь в гугле, изучаю и перечитыавю. Где-то углубляюсь. Так что польза есть, это практика. Качаю стандартную либу и тд и тп. Надеюсь поможет. Это лучше чем ничего.
>да и код проще поспринимать как по мне без генераторов с лямбдой на 100 символов, уж лучше написать нормальный цикл и четко прописать что с чем происходит
Это сейчас проще, но через два-три года тебя заебет постоянно писать циклы.
Дело вот
функция возращает ключ, те аргумент функции - это ключ. Трабла если не ключ а просто число например, если число надо написать строчку. Как пофиксить?
В хороших книгах есть упражнения.
Например, если я туплю уже второй день, и если так будет в офисе, то что будет? Просто хз, есть сложные вопросы, если я их не смогу решить, то... меня тупо дропнут? Или помогут?
>уж лучше написать нормальный цикл и четко прописать что с чем происходит
Ты молодой-зеленый, поэтому не понимаешь чем императивное программирование сосёт в 2к20.
Сап двач
Выбираю инструмент чтобы запилить на коленке учет орг техники (очень простой).
Думаю взять sqlite и python. Нужен фреймворк ui чтобы под виндой и линкусом запустился. Что посоветуете?
Там по сути crud приложение получается. Добавлять данные в таблицу, перемещать их в другую, занося лог в третью. Все.
Ну а ты расскажи
Да. А в чём проблема?
И поэтому ты сидишь на языке, где от функциональго программирования только огрызки и нет даже многострочных лямбд
Нет
Видел такую, прям загорелся. Чисто опыт и деньги на простую еду.
Python на нормальном уровне, базу Flask/Django
В вакансии, которую видел, должно быть написано, что надо уметь и знать.
Бля, в интернете пишут как убрать гласные. А компилятор пишет что транслейт жрет только один аргумент. При создании тейбла низя выбрать пустую строку, или none. Нужно одинаковый размер.
re.sub какую-то хуйню пишет.
Строки в питоне не изменяются и ебануть цикл аля С низя, или я тупой(Охуенное решение, ога, сделать строки неизменяемыми)
Бля, я не понимать.
Все, сорян.
Программисты, которые ничего не умеют, не нужны, даже бесплатно.
Могут быть нужны сотрудники другого профиля, которым нужно немного уметь программировать для своей основной занятости - там какие-нибудь скрипты для автоматизации слепить, что-нибудь для сайта, данные откуда-нибудь спарсить, посчитать что-нибудь и т.п.
Но с этим лучше в два первых треда.
Смотри доки. Метод translate принимает словать, где аски-код входа, то есть число, отображается на аски-код того, что будет в результате.
Есть специальный метод str.maketrans для подготовки подобной таблицы.
Очень всё криво и убого, не понятно, почему не выпилили.
Лучше используй другой подход
вариант A, топорно, в функциональном стиле:
s.replace('a', '').replace('A', '').replace('o', '') ...
и т.д.
Или императивный вариант:
"".join([letter for letter in s if letter not in "aueoAUEO"])
Ну там в решениях написано два аргумента. Значит у них это работает. А если скопирую решение то оно не запустится. Как это? Баги в Кате?
(По итогу решил с помощью создания таблицы которая оказывается может принимать три аргумента. И последний аргумент это символы которые надо удалить)
За второе спасибо. Неплохо выглядит. Надо почитать 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])
И читается вроде норм и что делает тоже понятно. И в одну строчку. Буду качать дальше.
бамп
бот для телеги
Чё бомбишь?
Если ты хочешь, чтобы это были опциональные аргументы - не выёбывайся и ставь '--' в начале.
Каталог, какие книжки есть, а какие надо бы спиздить.
Можно опционально добавить парсинг всяких амазонов или каталогов на предмет обложечек-категорий и сканирование локальных пдфок.
Сам всё хочу сделать, но лень.
Добавь пробелы перед разделителем.
Ну простой и не слишком убогий вариант это заменить твой разделитель на новый + твои добавки.
Т.е. str.replace('/', '\x00 /').split('\x00')
Понял. Пасеба :3
Там, вообще нет никаких по полям, при написании запросов не подхватывает - грусть. На js как-то веселее было.
Должно быть, ты хотел сказать PySide2
Друзья, здравствуйте.
Нужно для пары олимпиады выучить на базовом уровне данный чудо язык, особо дел с ним не имел, в основном всякие паскали, с, баши итд.
Какую книжку выбрать чтобы за пару дней вникнуть максимально кратно, но понятно?
Спасибо за ответ, но я уже всё пофиксил.
Документация плоховато сделана. Реально можно делать позиционный аргумент опциональным через nargs='?', но это ещё прочитать надо.
Поставил, теперь могу быстро переходить между полями-резолварами и генерить стабы для последних, нормального автокомплита не появилось.
Ты не юзаешь?
Мне бы не фор беггинерс, некоторые знания уже есть. Желательно где меньше воды и больше практики
Пропусти объяснения и сразу переходи к упражнениям.
Ибо писать самому простенькое, но все же решение уравнения с неизвестным количеством переменных прям как-то сложновато.
Кроме как нахуярить огромное количество ифок. Но это будет сложно.
Видимо не время для 4 уровня.
9 вариантов если корень один(3 оператора*3 варианта)+еще 9 если корней два.
Учитывая что там какой-то ебанутый выбор если корней два и так как они представлены областью(самое меньшее число нужно отдать.) (Единичка в нижние тесты тоже лезет, но там двойка. Как бля?)
Еще и корней может не быть, да и корни должны быть подходящей длины, и не являться флоатом. Я охуею это все ифать.
О, еще не заметил что ? может быть и в почти полном числе.
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
буткамп
Решать такие задачки не имеет никакого смысла.
Все эти задачи можно условно поделать на три категории: легкие, продвинутые и олимпиадные. Легкие можно решать для вката в программирование - при помощи них хорошо практиковать выбранный язык. Средние хороши для опытных программистов чтобы оттачивать навыки и искать красивые / эффективные решения. Такие задачки также помогут для подготовки к собеседованию в FAANG или похожие российские конторы. Олимпиадные задачи - говно без задач. Они не имеют ничего общего с программированием и их не спрашивают ни на каких собеседованиях.
Конкретно эта по сложности относится к продвинутым, но по идиотизму аналогична олимпиадным.
Чиво? Это как?
Эльфийский какой-то.
Мы тупо ставим цифры от 1 до 10 и проверяем выражение пока не прокнет? А если не подходит то возвращаем -1 по требованию задания? Как я не додумался что цифра на вопросиках то одинаковая. А я собирался уравнение решать. Блееее я тупой.
Кстати, где эта проверка результата? Я не вижу. Можно строчку вбить и питон сам решит?
Охуенный язык, блеее. Любую хуйню можно сделать в 1-2 строчки.
Хочется так же.
Спасибо :3
(Я тем временем разбивал уравнение на 5 составляющих в листе и сидел тупил. Хотя и так наверняка можно было тупо пройтись по листу просто перебирая варианты.)
>>38259
Ну вроде только 4 уровень, типо смотрю как высоко можно поднятся без знания языка. (Я максимум в универе на си пишу, и то понабрал кучу долгов и собираюсь в академ ибо не могу нормально спрограммировать все эти охуенные ссылки которые непонятно как работают в кодах всяких стеков и прочего)
Хотя я не вижу связи между этим и программированием приложений. Почитаю книжку которую советовали другому анону, может поклацаю.
>Ну вроде только 4 уровень, типо смотрю как высоко можно поднятся без знания языка.
Если твоя цель выучить питон - читай документацию, она у питона просто охуенная. За неделю поймешь все основные аспекты.
Если хочешь научиться подобные задачи вплоть до самого сложного уровня (но зачем?), тогда начни с изучения computer science. Ищи программу топового вуза вроде стенфорда, выбирай оттуда курсы по теории и алгоритмам и ищи материалы по этим курсам.
ну если вопрос стоит по ram то метров 800 желательно иметь только для него, тоесть не включая те обьекты которые будут создаваться в петухоне, по поводу проца, ну в простое практически ничего не жрет,
вприцнипе смотря что еще считаешь старым, впринципе и под десяткой в 4 гб рам работать можо, но надо еще понимать что будешь скорей всего в браузер лазать, а они тоже любят ресы хыч хыч коксал боба
По памяти норм, а в целом так неторопливо работает по сравнению с десктопом. Надо будет ебануть какой-то халявный проект и взять что-то на новой мобильной рязани, вроде очень хороша она.
Например,
x = 'asdf_asdf' + x.split(', ')
x = ['asdf_asdf'].append(x.split(', '))
inb4 никак
и точно, затупил
забыл
umber = input("Введите цифры от 1000, до 20000: >")
j = '' # сделать стринг
i = 0 # for
while i < int(number):
i += 1 # ++
i_string = str(i)
j = i_string[::-1]
if int(i) + int(j) == int(number):
print("i =" + str(i))
print("j =" + str(j))
Зачем ты через while делаешь то, что нужно через for, у тебя же простая итерация, пистон счетчики не любит
Как в питоне объявлять анонимные объекты, которые можно передавать в качестве параметра options в метод tkinter,filedialog.askopenfilename и asksaveasfilename? Хочу вместо перечисления всех параметров вынести дефолтную часть в отдельную переменную
Если я правильно понял, что ты хочешь сделать, то тут 2 варианта:
1) Написать свою обертку под этот метод, где ты вызываешь дефолтные параметны
2) Сделать словарик и распаковывать через kwargs
Т.е. в питоне нельзя как в js например просто прокидывать json'овский объект или типа того без всяких лишних импортов?
пусть еще пару месяцев подготовится, не видишь? он еще не готов!
Мне надо вызывать либо askopenfilename либо asksavefilename в if-elif. 3 параметра одинаковые - расширения, initialdir, типы файлов, разный только промпт. Хочу 3 общих параметра в переменную над ифом, промпт отдельно пропихивать. В js например можно в блоке ифа было бы делать типа fileDialogParams.title = "Open file", а в elif fileDialogParams.title = "Enter new file name"
Там все вопросики это одна цифра. Пишешь функцию, которая делит выражение на a, b c и оператор, преобрзуешь их в инт, проверяет истинность, и в цикле заменяешь вопросики на цифру от 0 до 9 по очереди и вызываешь для получившегося выражения функцию. Если тру, то печатаешь текущую цифру, если цикл кончился, тру не было -1
Вопрос. как мне теперь посмотреть, что в словарике лежит?
сам декоратор с функцией.
https://pastebin.com/7vkWqiPS
В общем то попробовал вообще этот askopenfilename, он порождает окно пустое от ttk. Есть какой нибудь более вменяемый способ в консоли вызывать open/save file dialog без оверхеда в виде окон? Я пока просто учусь, так что не надо говорить что типа консолька и эти окна это тупо и всё такое
Отдай ее мне и познай питонистское просветление
Байт оф питон
Делаеш словарь вроде d = {параметр:значение},
потом передаёш его функицям,
только перед именем словаря надо две звёздочки ставить:
func(\\d)
>Вопрос. как мне теперь посмотреть, что в словарике лежит?
Тебе нужно список всех хешей?
Есть два варианта:
1) Переписать декоратор из функции в класс, а самому классу сделать метод для просмотра хеша
2) hash_deco.__globals__['hash_dict']()
а еще твой декораторупадет если подставить нехешируемый тип в параметры
Тогда и начну писать однострочники, думаю это лишнее усложнение для начинающих
Мой 2013 был бюджетным. За 25к брал. Ща кстати такой же стоит 25к, ну мб чуть получше. Спасибо за курс валют
>Двач, придумай мне пэт проект
Напиши программу, которая бы автоматически раскладывала боевые картинки по разным категориям в зависимости от флага и прочих факторов.
Напиши что-то что заставит меня соблюдать режим сна и не зависать до 4 утра
Как это работает?
>encode
>replace("b", " ")
Мне кажется ты нифига не понял что от тебя хотят, и занимаешься каким-то извращением с байт-массивами.
Ну там типо нужно из буквы сделать код аски, потом перевести в двоичку и из 1 сделать 111, а из 0 сделать 000.
Ну я вроде и сделал.
Когда начну изучать нейронки то это будет первое что я напишу
Поправка, текст 001, не 002
Нет, сделать систему кеширования не основанную на хэше
Оно добавляется динамически жабаскриптом.
Можно рендерить страницы хедлесс браузером и тогда уже парсить, можно подсмотреть дополнительные запросы, если есть, и брать готовое. Если нет запросов, значит определено где-то script тегах.
Я рассматривал этот вариант как самый очевидный, но сейчас читаю про парсеры и загорелся ими.
Просто не хуярить классы на каждый пук, как в этих ваших жабошарпах, а по практической необходимости.
То есть ты будешь сканить свой сайт каким нибудь селениумом что бы достать инфу, которую и так имеешь и можешь спокойно подключить без напряга?
Если тебе нужно, чтобы бот с сайта инфу брал именно, то изучай http протокол и модуль requests, делаешь гет запрос на сайт и получаешь текст ответа, если там html верстка, то парсить ее удобнее с помощью модуля bs4. Кароче изучи парсинг сайтов и все встанет на свои места
Он спрашивал как связывать скрипт бота с сайтом, думаю именно парсинг его и интересовал
А, ну если как учебный проект, то вообще проблем нет
Ага, вот, точно. Я так и хотел написать
Но если хочешь действительно понять как работает веб, то я очень советую курс на степике web-технологии, если изучил linux и базы данных, после него и небольшой практики будешь точно понимать как это все связывается и что откуда достать можно
Я на 2-м курсе, меня не берут никуда, а по разработке на питоне даже тестовое не присылают, так что остаюсь на фрилансе, но не хочу просто повторять свои ошибки и дрочить одно и то же, а хочу развиваться
У меня сложилось впечатление что тестовые стараются больше не присылать, даже на джунов. Все равно постарайся уже работу найти удаленно, стажировку хотя бы.
О вот вопрос можно еще? что значит изучил бд? я знаю как писать запросы, знаю какие бд бывают, но не знаю какую в проект выбрать, могу спроектировать бд, если там не очень много сущностей. Вот этого не хватит на работу, но можно ли сказать что я изучил это направление?
Более-менее изучил направление, это тогда, когда ты понимаешь проблематику, какие возникают проблемы, почему они возникают, как их решать и т.п.
Например, чтобы понимать, когда одна структура лучше, а когда другая. Как профилировать-оптимизировать запросы, и т.п.
В целом нельзя сказать, что ты что-то изучил. Это как программирование, нельзя "изучить программирование". Ты можешь просто лучше или хуже что-то делать, иметь достаточные или недостаточные скиллы для какой-то работы.
спасибо
Я думаю писать запросы, создавать, нормализовывать бд, администрировать это достаточно для начала, даже если ты и знаешь как писать функции, то энивей тебе это не пригодится до определенного момента
Это любой дурак умеет, что тогда "не уметь"?
Да не то что бы.
Оно полезно в плане изучения фич языка, когда смотришь чужие решения, которые многие стараются сделать эффектными.
>Вот те задачки что я решаю на кодворзе, это что-то пригодится в риллайфе?
От 8 до 6-5 уровня помогают изучить фичи выбранного языка. Все что сложнее абсолютно бесполезно.
Нужен. У него есть встроенный, но годится только для тестирования. Ну или если у тебя какой-то внутренний сервис без реального онлайна.
Оно вроде как работает но волны распространяются ромбом а у того чела 8миугольником.
Сначала хотел написать просто сегментированное бесконечное решето Эратосфена, но, разумеется, не хватает памяти, чтобы вместить сам список простых чисел.
Потом решил все таки использовать это решето, но потом перестать добавлять в список простые числа, а тупо перебирать числа и их делимость только на простые числа. Это должен был осуществлять последний блок кода(выделен комментом), но из-за него сжирается вся память нафиг.
Так вот главный вопрос: что вообще в этом последнем блоке может жрать память? Если его отключить, то все работает нормально, за исключением преждевременного прекращения генерации.
Знаю, что решето реализовано говяно, хотел заняться им в конце.
Веблансер
Иногда можно встретить в требованиях к вакансиям.
Иногда выбор инструмента зависит от тебя, и тут ты волен выбирать.
Но когда функция натыкается на субдерикторию и вызывает саму себя, то уходит в модуль 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]
Перескакивает с третьей на пятую строку а потом
1 def init(self, errors='strict'):
2 self.errors = errors
3 self.buffer = ""
Заранее извиняюсь если вопрос нубский и входит в факю, но я нагуглил только оханья что это старая проблема с виндой которая периодически вылазит то у одного то у другого и я не понял что с ней делать.
Ну нихера непонятно же ну ебана рот. Ну создай пример в онлайн редакторе и пришли ссылку или хотябы заскриншоть всё говно
Ну вот сам код.
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")
Когда он обнаруживает, что объект в директории является директорией, он пытается в нем намусорить, но выдаёт ошибку которую я описал выше и не делает ничего, хотя в главной директории мусорит спокойно.
Сорри я не совсем понял что мне скринить, экран модулей, куда он уходит искать ошибку? Там только эти два блока что я описал выше и все.
Почему ты открываешь файл с одним и тем же путем?
newtext = open(os.path.join(path, "litter.txt"))
Условия задачи не питонячи: питон не чыслодробилка,
глупо требовать от него ужимться по памяти и времени.
Потому что путь меняется когда функция уходит на рекурсию в строке 6. Там создаётся новый путь под варом fulltext, и уже от него открывается новая итерация функции.
Это работает, я проверил путем дебаг рана, новый путь открывается корректно.
Плюс я проверил, будет ли эта функция корректно считывать файлы, она считывает, анончик, с путем все в полном порядке, она просто из за какой-то ошибки (локализации?) не хочет писать текстовый файл в любые субдериктории, только в мейн от которой открывалась.
Более того, он не хочет работать даже при полностью прописанном к субдериктории пути даже не выдавая ошибку при этом.
Вот на скрине, сам путь выстраивается корректно, дело в другом чем то.
Да мне решение задачи и не нужно. Мне очень интересно знать, куда девается память в последнем фрагменте кода. Ну или хотя бы где об использовании питоном памяти можно почитать.
Ну бля реально на компе нет инета шас. Ок как нибудь залью
О все страшно извиняюсь, сработало. Понял свою ошибку, надо было понять, что директория для открытия файла автоматически не меняется при новом открытии копии функции. Правда, непонятно почему.
Вроде как питон очень плохо работает с листами, именно поэтому и нужны кортежи, что они и близко не так удобны, но в 10 раз быстрее проходятся. Если для маленьких последоватпььностей такая разница несущественна, то для больших 10х разница ощутима.
Сорри, анон, у меня только четвёртая неделя обучения пошла.
Ну любопытно же. Мало ли здесь неизвестный мне нюанс языка? А то, на самом деле, я понял, что часто не совсем понимаю, как конкретно работает та или иная операции языка.
Ну, снова же, для меня сейчас проблема скорости вторична. Непонятно именно происходящее с памятью.
Нюянс не языка но реализации.
>>
Как обычно, память пожирается, сборщик мусора чистит её ритмично. Если критично, мусорщика можно попинывать через модуль gc.
Для питона полтора мега памяти — это вообще крошки какието.
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
"""
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
"""
Короче неохота вникать, но самая быстрая генерация, на самом деле, это просто тупо проверка всех чисел на простоту.
Или самым тупым способом, делить на все простые до корня, либо иногда оправдано специальные алгоритмы использовать, это когда числа большие проверяешь.
Решето это жутко медленный и не рациональный алгоритм, не только для питона, вообще для любой реализации. Это алгоритм, чтобы на бумажке числа высчитывать, а не для компьютеров, забудь о нём вообще.
Но ведь решето быстрее названых тобой способов, если учесть что мне нужно не одно единственное число на простоту проверять, а выдавать список всех простых чисел. При этом сегментирование экономит память, ведь именно к ней требовательно решето.
Так как миллион простых чисел в списке хранить не получится, то я решил использовать гибридный метод: сначала решето, а потом проверка всех последующих чисел на делимость, использую сгенерированный решетом список простых чисел. И вот именно в этом моменте, когда я уже перестал использовать решето и просто проверяю делимость используя фор по списку - у меня и возникает проблема с памятью.
Попробуй все таки переписать функцию, используя вместо листа всех праймов тупл либо словарь и посмотри, не будет ли полегче.
Попробовал использовать тупл - не помогло.
Но! Я понял, что жрало память. Это были принты. Я даже не знаю, что теперь делать с этим знанием.
import logging
Решето в любом случае медленное.
Что происходит в случае, когда ты делаешь проверку просто на делители до корня. Основные ресурсы съедают проверки именно простых чисел, составные в основном отваливаются довольно быстро. Когда ты заполняешь решето, ты ячейки для каждого составного числа постоянно перезаписываешь, ты делаешь заведомо лишнюю работу.
Второй момент, если бы ты даже на Си это реализовывал. Если у тебя сегмент памяти большой, ты проверяешь больше миллиона чисел, то проблема в том, что это сегмент уже не помещается в кеш, у тебя процессор будет постоянно сбрасывать кеш и лезть в память. А это очень дорого и медленно. Отдельные моменты с адресацией, потому что побайтово сложно что-то записать быстро, надо по словам записывать, по 4 или по 8 байт, пожалуй не скажу, что для 64-х битной архитектуры.
В питоне начинаются нюансы по представлению чисел и как они хранятся в списках. Ты учитывай, что число это на самом деле большой неизменяемый объект. Впрочем, если в списке хранить 1 или 0, то проблем быть не должно. Но тут есть разные варианты по numpy и всякие связанные оптимизации.
Реально я бы тебе предложил сравнить варианты с решетом и просто с проверкой в лоб всех нечётных.
Если у тебя большие числа, корень из которых в миллион, например, то есть другие алгоритмы, основанные на тестах Ферма и т.п., но там масса нюансов. Именно такими способами проверяют большие простые числа по 1000 бит, их в лоб проверить невозможно в принципе.
На числа в районе миллиона смысла в таких алгоритмах заведомо нет. Я думаю, начиная с миллиарда уже появляется.
Программирование на Python 3 слишком нудная и монотонная книга, хоть и мало страниц...
Есть эта серия от орайли с картинками для даунов, должно тебе зайти.
res = []
i = 1
while i<= n:
res+=
return res
Не могу сообразить как сделать массив. Уже все перепробовал. И вроде счетчик есть. Если без функции, притом, массив создается. А так, добавлятеся только 1 и все. чяднт?
while i <= 10:
arr+=
i+=1
print(arr)
Вот что то подобное работает на ура. Не могу понять почему подобное не отрабатывает в функции.
Код нормально выложи, с пробелами
Чому никто не пытается измерять реальность? Все только проецируют свое представление о реальности на всё
Из-за принципа неопределенности Гейзенберга
Зачем ты вообще так делаешь, список динамический же. Если прям хочется, то можно так сделать arr = [None] * n
fluent python
for name in names:
print("Hello", name)
Я разобрался что names это переменная и указывается ее тип. Список а внутри строки, а что значит None? типо что по умолчанию там ничего, как раньше, names=None? так?
def greet_all(names=None)
for name in names:
print("Hello", name)
Вот так? Такая нотация так или иначе будет возращать None,если не указано другое. ?
"names=None" - это как раз значение по умолчанию для names, а
"-> None" после скобок - это подсказка что должна возвращать функция.
Принт != ретурн
Мне интересно по какому материалу ты занимаешься? Где это сразу про типирование загоняют?
Да вроде разобрался сам.
Оф документация, мне интересен был синтаксис, и что это значит. В консольке получилась фигня по коду.
Ты сука?
Вы мне объясните что значит это в этом коде
> -> None:
Те если не будет указан список те он будет пустым, будет возращаться None или как? С типизацией очень удобно, только что так решил задачку на кодворзе прописав что есть что и сразу все норм стало.
>Вы мне объясните что значит это в этом коде
Это означает что функция не возвращает ничего или возвращает None.
Так ну ок, попробовал и так и так, результат один и тот же возращается None, зачем тогда указаывать сразу если это по дефолту после пасс идет? Я вот тут не понял, с типизацией удобно, а зачем указаывать то что возращает и так? И что еще можно тогда указать?
Это хинтинг, он не энфорсит ничего, просто IDE будет тебе бухтеть, если ты передаешь что-то не то, или используешь возвращаемые значения не так. В данном случае указывается, что возвращаемых значений нет, так что использовать нечего.
Ну а что еще можно передать кроме None? Раз если не прописать, и не указать аргументы, то все равно будет None. bool?
Да оно в любом случае нихуя не делает, это как комментарии.
Просто есть инструменты, которые могут их использовать.
Составить программу, в которой из внешнего файла считывается строка (не менее 20 символов, осмысленная, содержащая строчные и прописные буквы и цифры). Выводится строка, полученная на основе прсчитанной, в которой каждая четвертая буква, кроме пробелов, удваивается.
Это твоя лаба или тестовое? В 6 строк кода делается. С чем тебе помощь нужна?
Раз ты sympy используешь, то ты, скорее всего, интегрируешь символьно
Тебе решение нужно в виде формулы, или в виде числа/чисел?
В виде числа. Все значения я подставляю. Там просто, видимо, охуеть какое сложное выражение получается, раз его даже вольфрам не может подсчитать.
Вот
def read_item(item_id: int, q: Optional[str] = None):
там во всю идет типизация.
Например это
q: Optional[str] = None
Это строка или хитрый список? Обычно же такая нотация - обращение к элементу списка. Нет?
Почитай, как модуль typing работает.
Запись typing.Optional[str] значит, что у тебя функция возвращает либо строку, либо None
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)))
Коэффициенты можно опустить, без них так же не считается.
>Это строка или хитрый список?
Optional[str] означает что тип переменной q это либо строка, либо None.
= None означает что при отсутствии аргумента в переменную q запишется None.
Например: если вызвать read_item(5, "test"), то q будет строкой. А если read_item(5), то q автоматически присвоится значение None.
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 и так, что даже гуру питона будет тяжело понять.
Где-то тут раньше приводили короткое "решение", но оно было абсолютно некорректным, неверным.
Не запускал, но вроде должно работать.
Вообще тебе надо доки по программированию читать, это тебе надо. С самых основ скорее всего.
Лан, спс это я понял. Но вто что то типо такого - диссонанс
Например
from typing import List
def func(n: int) -> List[int]:
return list(range(n))
n число, а почему и откуда берется список? Те если не n то возращается список?
enumerate очевидное решение.
Можно ещё чуть норкоманское через range с кастомным шагом.
У тебя совсем глупое.
Я не понимаю твоего вопроса.
n - это integer, но это аргумент функции. Сама функция возвращает list(range(n)), что является списком.
>что
Обозначение типа возвращаемой переменной. List[int] значит, что функция возвращается лист из int чисел.
>зачем
Чтобы знать что возвращается.
Пикрил - пример. У первой функции не обозначен тип возврата, поэтому неизвестно, что она возвращает. Она может вернуть как список, так и None, так и вообще что угодно. У второй функции обозначен тип возвращаемой переменной - список из чисел, поэтому IDE ругается на возврат None, который не является списком. У третьей функции None заменен на список и все нормально. Аналогично с аргументами.
наверно это значит что функция должна вернуть список int.
если в коде функции будет возвращяться что-то другое,
IDE подсветит это как ошибкцу.
>enumerate очевидное решение.
Только неверное. Потому что он нумерует всё подряд, а подсчёт должен вестись только по буквам.
check = lambda x, y: 4 if x == y else (-1 if x != y else (0 if x == "" or y == ""))
Видел как то через скобки.
Не получается глазами распарсить, есть в нормальном виде?
Документацию чего ты блять читаешь? Пройди на сайте питона мануал для начинающих, потом загугли питон тайпинг пеп, там все написано
Вот так получается
check = lambda x, y: 4 if x == y else (-1 if x != y else 0)
но мне надо впихнуть еще одно условие. Видел как делают тиа такого
[хуй пизда залупа](если пидор)(если гнида)( если чушка.) но не могу по синтаксису въехать.
Очень странное выражение.
1) В любом случае выполнится либо х == у, либо х != у
2) У тебя незаконченный тернарный опрератор 0 if x == "" or y == "". Должно быть 0 if x == "" or y == "" else value
check = lambda x, y: [4, -1, 0][(x == y), (x != y), (x == "" or y == "")]
Как то так но не получается. Но подобное я видел.
>Как то так но не получается. Но подобное я видел.
Пиздос. Включить голову и подумать почему это не работает лень?
check = lambda x, y: 4 if x == y and x != "" and y != "" else -1 if x != y and x != "" and y != "" else 0
получилось.
Вот такая ката
https://www.codewars.com/kata/5a3dd29055519e23ec000074/python
я решил ее так
https://www.codepile.net/pile/zdMwZK8B
В целом доволен. Хотя можно было и лучше.
>Хотя можно было и лучше.
Можно, причем в одну строчку:
max(0, sum([{True: 4, False: -1}[x == y] for x, y in zip(arr1, arr2) if y]))
Я про такую нотацию имел ввиду
res = lambda x, y: [1, 2, 3][(x > y) + (x < y) + (x == y or x == 100)]
У тебя сложное решение, хз как прийти к такому уровню. Я пока вот, изучаю синтаксис.
>Я про такую нотацию имел ввиду
>res = lambda x, y: [1, 2, 3][(x > y) + (x < y) + (x == y or x == 100)]
Я такое никогда не видел. Скорее всего ты путаешь ее с использованием словаря, как это сделал я.
Что нам даёт swagger? Это эндпоинты на определенные сервисы/функции?
Flask
Привет друзья мои, вопрос такой щито должно быть в шаблоне а что нет, например запрос к базе данных должен быть во вьюшках и отсылаться затем в шаблончик, где он уже будет обрастать тегами при помощи дирректив шаблонизатора, или запрос к базе дидолжен быть внутри шаблона? Или как у меня: оборачивание в теги происходит во вьюхах и затем в шаблон отправляется готовая структура котора просто рендерится?
Так от чому последнее времи ипаную функциональщину форсят!!!)))
>щито должно быть в шаблоне а что нет
Вот этого ↓↓↓ быть не должно вообще, когда 2020 уже на исходе
>Flask
Мне для учёбы надо, флягу освою - меня до джанги допустят)))
В идеале шаблон полностью отделён от кода, и каких-то обратных запросов, в том числе к БД, в том числе через ORM, происходить не должно.
То есть ты готовишь объект с данными, который можно релиализовать, например в JSON, отдаёшь его в шаблон, а он уже готовит страницу.
Спасибо, я так и думал!
Всё это настолько размыто, что хуй знает.
Я так понял, что сейчас джуниор это тот кто вообще нихуя не знает, а сеньор это кто хоть что-то знает?
Ну вот почему все думают что фронт - это для петухов? Современные фронтендеры даже в программирование умеют ибо JS.
Pastebin
pythonanywhere, если они еще живы.
Как у него со стабильностью, были проблемы?
Вроде стало получаться, понял как и словари можно пихать в ванлайнеры. Вроде как удобно.
update_light = lambda current: {'green':'yellow', 'yellow':'red', 'red':'green'}[current]
Но вот твою строчку не до конца понял. Уж накрутил как то)
Прочитал How to whink like a computer scientist, где объясняется начиная со стрингов и заканчивая ADT и деревьями, выполнил все задания и написал пару помогалок для себя.
Понимаю что нихуя не понимаю, плюс у меня недостаток что я банально компьютерно неграмотный и базовая компьютерная грамотность никогда не была интересна. Но учить и выполнять задания было интерсно.
Сейчас начал просто подряд штудировать питон мануал, но не уверен что это хорошая идея, так как без практики откладывается мало, а с практикой много.
Что теперь, просто читать список литературы из данного раздела подряд?
> Вот этого ↓↓↓ быть не должно вообще, когда 2020 уже на исходе
Ох лол.
> Отлично выполняет поставленные задачи
> Имеет хорошую документацию
> Огромное комъюнити и скоп решенные вопросов на SO
> Модули ну любой вкус
> Прост в создании и развитии
Так эт, антош, что не так то?
Но пиздец подкрался незаметно.
False и True это булевы. Но отправляются и читаются они как 0 или 1. (Логично конечно, но нахуя тогда они вообще? )
Поэтому вместо нескольких кривых но все же нескольких строчек, получилась лютая хуйня с аж тремя ифами. (1 иф проверка на ноль, а остальные два проверка является ли i = булевой, и какая именно.)
Как поменьше все это записать?
имиджборда, и чтобы минимум 5000 запросов/сек держала
Ставлю кату по пополярности, беру пистон, ставлю 8ку, тот что полегче для нюфага, и если не проходил то беру то что еще не юзал, и ебашу. Пользуюсь только гуглом и головой. В очень крайнем подглядываю стараюсь сам. Что я упустил если проходить все каты по уровням, то есть брать уровень, проходить, потом решать то что не решил и переходить на следующий уровень. Подумал что если скакать, то не будет результата. Над катой думаю не долго, если не вижу решения кидаю в закладки на потом, решаю то что могу, чтобы не тратить время. Иногда во время решения каты приходит мысля о другой кате, так и иду. Все норм?
Он синхронный и может настать момент, когда треды/пре-форки просто не справятся с io bound, с которым без труда справляются все асинхронные фреймворки и что бы не переписывать всю кодовую базу придется изъебываться с очередями задач и воркерами или вообще манкей патчить gevent'ом
Но для учебы норм
Bucardo Web UI
>А как же балансировка нагрузки?
Тогда тебе придется делать префорки, это будет работать до определенного времени, но будет сжирать память, процессор и коннекты к бд гораздо больше, чем другие фреймворки.
>Тогда тебе придется делать префорки
Я про балансировку до Фласка, балансировку запросов между серверами.
> коннекты к бд
Ну ебана, тут же ПгБаунсер стоять будет, это мимо.
>Я про балансировку до Фласка, балансировку запросов между серверами.
А на других серверах уже не фласк будет стоять что ли? Это деньги, между прочим.
>Ну ебана, тут же ПгБаунсер стоять будет, это мимо.
Ну да, тут погорячился
Это не отменяет того, что тебе придется делать префорки для фласка и увеличивать утилизацию памяти и процессора, что бы так же эффективно обрабатывать запросы сторонним сервисам/бдшкам, как это происходит на асинхронных фреймворках. Достаточно посмотреть какой rps aiohttp с uvloop могут выдавать.
Антош, а можешь ссылочку на инфу по этому графику дать для почитать, просветиться.
Что-то я нихуя не понял, но спасибо.
Надо посмотреть что такое Ключ. А то я еще не разбирался с разбиением на функции.
>>42561
Добавить всю хуйню что не входит в инты или флоаты или не равно нулю плюс добавить интовые числа равные нулю.
Бля, охуенно. Не знал что проверки можно сразу в листе хуярить.
Надо тренировку где показывают как делать однострочники.
Можно одним ифом обойтись.
> [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')]
Хотя может можно короче, я просто подправил.
это всё пососет, если в исходном лите будет "0"
Забей на однострочники, ебашь нормально))
f = [x for x in src if str((x,)) in {'(0,)', '(0.0,)'}]
return f + [0] * (len(src) - len(f))
not in конечно же
>f = [x for x in src if str((x,)) in {'(0,)', '(0.0,)'}]
>return f + [0] (len(src) - len(f))
Для таких случаев есть лямбды:
(lambda f: f + [0] (len(src) - len(f)))([x for x in src if str((x,)) not in {'(0,)', '(0.0,)'}])
это бесчеловечно
Ведь даже если ебануть цикл от 1 до n выполняя какую-нибудь простейшую вещь типо присваивания.(for i to range(n): n=1+1) то программа вывалится в тайм аут. Видимо тут нужны доп.библиотеки с хорошей математикой.
Олимпиадная хуйня?
Беда фласка ещё в том, что он только и пригоден, чтобы делать сайты вида запрос-ответ, и ни для чего больше.
При этом сильно проигрывает в строгости и стройности Джанго, если клепать круды.
А из-за синхронности принципиально проигрывает aiohttp. Потому что aiohttp можно использовать не только для клепания сайтов, но и как веб-интерфейс к какому-то сервису или приложению, а это уже совсем другая история.
Во фласке, сколько я понимаю, можно добиться какой-то асинхронности, можно вебсокеты поддержать, но как-то очень сложно.
Впрочем возможно, что нормально с фласка начинать, чтобы просто основы веб изучить для начала. aiohttp, наверное, для более подготовленных, особенно по части асинхронности, это уже не начинающий уровень.
По части перформанса сейчас FastAPI очень форсят, говорят, что модно, молодёжно и очень шустро. ХЗ, наверное надо бы потратить время и разобраться.
> сайты вида запрос-ответ
В принципе для этого его и норм юзать, вполне себе.
> для чего больше
"Что-то больше" обычно выносится в Celery или в отдельный сервис.
По бенчмаркам 2016 довольно тяжело сказать что фласк хуйнябезреальныхзадач. Ну а в использовании и поддержке - вполне себе дружелюбен.
Учебник по Си.
>в отдельный сервис
И вот тут начинаются траблы с ожиданием ответа от сервисов при множественных запросах
Бампер.
>Всем привет! Как понять работу .Net апликухи? Зачем нужны все эти сервисы типа Core, Admin и прочие мелкие? Почему просто нельзя сделать сайт на один сервис?
Тебе не в шарпотред?
>Ничего не понял.
Установлен пайтон 3.8, мне нужно запустить проект под 3.5 (со слов заказчика)
> Просто делай запуск по глобальному имени, типа
/opt/virtualenvs/pytnon38/bin/python my_project.py
А, то есть после установки в pyenv 3.5 для его запуска у меня появляется имя в системе? Я просто не совсем понимаю, как этот pyenv работает.
>Установлен пайтон 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 нужен для того, чтобы без полного пути команды запускать, любые, и ни для чего больше), тебе не нужно активировать окружение. Просто берёшь и запускаешь, и всё идеально работает.
Так даже в "домашнем режиме" удобнее работать. А на сервере только так и надо что-то запускать.
Да какой-то шизанутый тип, похоже, не очень понимающий, что к чему. Что-то изучивший в универе, и теперь счищающий, что сможет изменить мир, дай только волю и бабло. Типо все разработчики тупые бараны, ничего не могущие, а вот он в универе учился и умные слова знает.
Посмотрел "план", который ни разу не план, очень абстрактно и никакого обоснования ни цифр, ни проблем, которые есть, и что там переделать надо.
В то время как ускорители питона в реальности есть. Например pypy, который с JIT и реально что-то ускоряет в разы, хотя что-то не ускоряет и что-то может даже замедлить. Модуль nuitka.
Кто бы для разработчиков pypy денег подогнал, а то они медленно работают и отстают, только сейчас как-то 3.7 версию поддержали.
Там где-то в каментах было, что он уже чем-то таким успешно занимался.
Так что может бы что-то и взелтело, но какой-то уж слишком эпический план.
Вот ответ с удаленного:
window._sharedData = { "config": { "csrf_token": "1NAFJw6hjWarqoCEvdqqoWA22NvW44n1", "viewer": null, "viewerId": null }, "country_code": "US", "language_code": "en", "locale": "en_US", "entry_data": { "LoginAndSignupPage": [{ "captcha": { "enabled": false, "key": "" }, "gdpr_required": false
Вот ответ с локального:
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
После ключа "entry_data" все по-разному.
удаленный сервер - Heroku. вряд ли айпи зашкваренный. тут что-то с параметрами requests.get(). попробовал с aiohttp.ClientSession(), результат такой же.
Как раз таки очень вероятно, там же есть бесплатные планы, с которых можно пакостить.
Как вариант, с одного компьютера ты авторизован, а с другого нет, вот и выдаёт тебе разные данные. Сессия легко может быть привязана к ip адресу, например.
Лол, так не бывает. Нужны печеньки или другие хуитки, а то всякие локалочки бывают, серые айпи и т.д.
Все мы чем-то занимаемся. Но план смотрится "я просто сяду, и перепишу круто", без пояснений. Для меня это признак того, что человек не совсем адекватен.
В команде разработчиков питона вообще говоря очень серьёзные спецы, и если что-то работает медленно, то на то есть объективные причины, что вот просто так не перепишешь, чтобы быстро. Если есть какие-то ограничения, тот же GIL, то потому, что многие фишки языка просто завязаны на эти ограничения и их не выпилишь так просто.
При этом сторонние проекты есть, которые призваны ускорить питон, и даже как-то поддерживаются питон-сообществом. Тот же PyPy.
В реальности всё обычно выглядит так, что ты начинаешь оптимизировать и сталкиваешься с тем, что оптимизировать невозможно, не меняя что-то принципиально в устройстве языка. Вот сложно делать JIT или компиляцию в бинарный код, когда внутри все объекты завязаны на динамические словари, все данные через них. Когда всё объект, а всё объект нужно для того, чтобы всё можно было использовать кк ключ в словарях и т.п. И куча других нюансов.
Если чел серьёзно не контрибьютил в питон, то такие предложения можно даже и не рассматривать.
А выступить с таким предложением может любой абсолютно.
>Тогда тебе не нужно менять PATH (исходно PATH нужен для того, чтобы без полного пути команды запускать, любые, и ни для чего больше), тебе не нужно активировать окружение.
Спасибо, анон, примерно так я и понимал это дело. Видимо на стороне разработчика проекта уже какие-то неадекватные требования, на мои логи ошибок он просит «установите 3.5», что очень странно, как я считаю.
Ну там проект на джанге, надо попробовать миграции сделать чтоли...
Алсо, что порекомендуешь для восстановления эээ ммм уу конфигурации пайтона и пипа. Я сначала с дуру все присланные requirements.txt начал ставить и пип улетел в ошибки на любой вызов, вылечилось curlом пипа напрямую, но, мне кажется, у меня сейчас какая-то каша из модулей разных версий. Как вообще лучше всего соблюдать эту гигиену питона, не ломать его зависимости, диагностировать его состояние? Я понимаю, что принцип, возможно, общий для nix систем, но все еще не ясно, как «культурно» разрабатывать на нем. Привык я к сишным гвоздям, забитым в виме и мейку.
виртуальное окружение позволяет не засрать систему разными модулями.
чтобы были доступны команды терминала линукс
Если знаешь формулу. то в чем проблема ее подставить?
если ты не умеешь 2+2 складывать, то работодателю тоже ответишь, что нахуй мне этот ваш матан. я хочу лишь на жопе сидеть и получать деньги.
Учись гуглить и разбивать задачу на более мелкие подзадачи.
Ну как грится - посмотрим, из переписки я понял что он хочет сделать этап -> показать результат -> получить ЗП -> перейти к следующему этапу. Выглядит ок, чо, пускай пилит.
>requirements.txt
На редкость порочная практика. В принципе, вещь правильная, если подходить правильно и описывать зависимости руками, указывая диапазоны и ограничения, достаточные, чтобы сохранить обратную совместимость.
Но в реальности все ленивые, тупо делают pip freeze, который замораживает версии библиотек намертво, в духе "packet==3.8.6", хотя всё прекрасно работает и с версией 3.15.2, а другому пакету критично, чтобы версия была не ниже 3.10.1, и вот ебись потом сам с этими зависимостями.
pip freeze это максимум для докер контейнеров решение, и то не идеальное.
>получить ЗП -> перейти к следующему этапу. Выглядит ок, чо, пускай пилит.
Вот здесь очень тяжело. Нет работодателя, готового платить полноценную зарплату. Нет того, кто может просто так выделить деньги.
Даже у проверенных и востребованных проектов с именем масса проблем с финансированием.
А так, пускай пытается. Но для меня очевидно, что ни бабло привлечь не сможет, ни что-то сделать реально работающее и полезное.
Да не, это все ясно и ты прав.
> Если знаешь формулу
я про каты) а не про работу. Дело в том что кодить - не сложно, если знаешь формулу, если тебе ее дадут написать прогу - как нехуй делать. С алгами - сложнее, иногда решение упиратеся и в знание языка тоже. Например я знаю как, но не знаю какой инстумент заюзать. Конечно я гуглю. Я вообще спрашивал про кодворз) стоит ли вскрывать кату и подсматривать решение или нет? Или надо сидеть прям до конца.
>разных версий. Как вообще лучше всего соблюдать эту гигиену питона, не ломать его зависимости, диагностировать его состояние?
Бля, пиздец какой-то. Буквально пару дней назад угрохал кучу времени на то, чтобы понять, почему aiohttp иногда оставляет хендлеры с вебсокетами, когда вебсокеты реально закрыты. Почему не понял, в кишки не лез, но думал, как обойти. Придумал, как правильно размазать сопли в хендлере, чтобы всё-таки такие соединения отлавливать и убивать.
А оказывается, уже целых пять дней назад Светлов выкатил версию aiohttp 3.7 (вместо 3.6), где судя по анонсу, вокруг вебсокетов как раз куча багов закрыта.
И походу мои баги тоже закрылись.
Бля, не мог на пару месяцев раньше выкатить. Ну или полгода ещё подождать, чтобы не так обидно было, столько нервов, столько нервов... Хоть FastAPI изучай.
А где? Ну я просто набиваю скил и хоть что-то кодю. ДА и попрактиковатся можно. А есть что получше?
Верхнее случайно приклеилось.
Я не про конкретную) я в целом, стоит ли вскрывать решение или нет, или надо сидеть самому. Я хочу понять стоит ли прям задрачивать математику рад хонора или нет? Програмирование - это же не чистая математика, обработка данных идет по заданному алгу а не по только что выдуманному, для такого есть уже дургие люди. Например, моя задача поднять сервер, а не придумать новый фрейм, алг к тому чтобы поднять. Я вот про что, в рил лайфе, тебе дадут исходные данные, с формлуами, задача - сделаь готовую прогу. А так, уйдут годы, надо будет каждый раз либо изобретать велосипед, либо проводит тоны времени в поисках секретной педали к велосипеду. Чтобы просто поехать.
Я тоже не понимаю, о чём вопрос.
Хорошая схема такая - ты сидишь и думаешь над решением, что-то реализовываешь, или сдаёшься, если не знаешь как или слишком топорно.
Потом смотришь другие решения, сравниваешь со своим, смотришь на плюсы-минусы другого решения, думаешь, почему сам до такого не догадался.
Ещё хорошая практика в том, чтобы через день-неделю-месяц ещё раз решить задачу уже правильно, другим способом, не смотря в подсказку.
Так ты чему-то учишься и нарабатываешь скилл.
Просто смотреть чужие решения и запоминать их бесполезно.
>Я вот про что, в рил лайфе, тебе дадут исходные данные, с формлуами, задача - сделаь готовую прогу.
Это упрощённое и наивное представление, в RL такого не бывает, чтобы было чёткое ТЗ и описание, как это реализовывать.
В реальности очень смутная постановка задачи, не понятно, как решать, посоветоваться не с кем, при этом задача меняется постоянно на противоположную, и всё это надо вписать в огромную инфраструктуру уже написанного и не очень дружного, куда хрен влезешь со своими правками и хрен вообще разберёшься, что и как там работает.
Сейчас по асинхронщине как дела?
Больше на нее переходят? Какие фрейморки актуальны?
нет, от зашкваренности айпи не зависит. только что попробовал с девственно чистого адреса. все равно лажа какая-то с результатами запроса.
Просто когда я решаю кату - у меня чувство удовлетоворения, что написал код, вроде как не зря. А когда нет - и упирается в математику - а не в язык - у меня апатия, или когда мейнтейнер криво написал задание. Как то так. Поэтому и спросил, скипать каты - это как, зашквар или нет?
Будет парсить /b/ и в случае совпадение с ключевым словом, постить картинку в ответ на этот пост(Нет не свыню, и нет ключевое слово совсем другое)
Что нужно для этого? Наверняка есть уже такие же боты, но хотелось бы самому написать
Надо, чтобы какое-то удовольствие приносило, иначе толку нет, только во вред, тупо выгораешь от таких задач.
Я не думаю, что есть большой смысл в больших объёмах "олимпиадных" задач. Слишком специфичны и слишком ограничены.
Они полезны, но они лишь малая часть от реального программирования.
В них нет большого кода, который надо организовывать - в них у тебя обычно несколько десятков строк всего. А в реальной жизни тебе нужно как-то упорядочивать огромный по объёму код, чтобы его поддерживать можно было хотя бы самому.
Там ты пишешь с нуля, а в реально жизни тебе необходимо разбираться с логикой разных библиотек, фреймворков и просто чужого кода. В них нет технологий, графики, сети, баз данных, и кучи всего ещё, просто одни алгоритмы.
Порешал эти задачки, займись чем-нибудь более прикладным. Потом ещё можно будет порешать сколько-то, чтобы мозги размять. ИМХО как-то так.
>Как то так. Поэтому и спросил, скипать каты - это как, зашквар или нет?
Лично я вообще не мог заставить себя решать подобные задачки. Основные навыки получил при помощи РАБоты, пет-проектов и регулярного чтения документации и разных туториалов. Этого хватает чтобы за несколько минут решать легкие и большинство средних задачек. Ну а тяжелые просто не интересно, поскольку для их решения нужно знать математику и алгоритмы, которые больше нигде не пригодятся.
Перевели машиной СОФ. и сидят блять рекламу гребут. Причем не сразу заметно что это машина, и не сразу заметно, что это парашный клон.
Когда же их закроют блять. Почему бы не выдавать гуглу просто английский СОФ который можно читать без крови из глаз?
Ну эти задачки начал решать после прочтения частично луца, укуса и оф доков. Так бы и не начал. Тебе повезло, я только ищу работу. ПОэтому для меня подобные сайты - хоть какая-то практика. Я уже хотя бы могу в синтаксис. Если даже не получается решить, я читал про списки например, про их методы, что-то кодил и тд, уже ставлю себе галочку что что-то делал. Например, задачка был по регулярками, не решил, отложил на потом, НО, я еще раз почитал гугл по теме и освежил в памяти. Строки даются тяжело так как они не изменяемы, и надо постоянно все преобразовывать.
Прогоняю то что могу решить, остальное оставляю на потом. Хочу чтобы это стало частью хобби, даже когда найду работу кодером, буду там сидеть.
К свлоу, хотел бы запилить борду, но не знаю с какого каря взяться. Вот и все. А так - навык есть, хоть какой-то и литл практика. И это лучше чем просто читать.
>К свлоу, хотел бы запилить борду, но не знаю с какого каря взяться. Вот и все. А так - навык есть, хоть какой-то и литл практика. И это лучше чем просто читать.
Запилить самому борду было бы намного полезнее чем решать эти задачи.
>НУ вот и помоги мне советом. Который раз спрашиваю и тишина.
Если уже более-менее знаешь язык, то начинай изучать джангу.
https://www.djangoproject.com/start/
https://www.tutorialspoint.com/django/index.htm
Для начала сделай заготовку приложения чтобы была одна веб страница с hello world.
Это я уже делал пару лет назад, потом бросил, вот вернулся снова. И это самое простое на мой взгляд. ТАк то джанга проста как палка и хорошо задокументирована, я не знаю только как сделать фрон, а остальное - как бы ясно. Вот эти дзиндзи и прочее.
>я не знаю только как сделать фрон, а остальное - как бы ясно
Чего конкретно не понимаешь? Вот тут хорошие туториалы по HTML/CSS/JS: https://www.w3schools.com
Основы верстки можно освоить за один-два вечера, а дальше будешь просто набирать опыт и учиться делать быстрее и лучше.
Можете рассказать где граница проходит, предположим каждую секунду к сервису обращаются 100 пользователей, это много/мало, как разделять на то где нужен асинхронный, а где нет и кст, хз какого года график, но в джанге же есть асинхронность, че он сосет так
График 2016 года.
Просто юзай асинхронность везде и норм.
По факту, синхронные сервисы прекрасно справляются с нагрузкой, там где они подходят под задачу. Но расход средств памяти и ЦП у них выше.
В джанге пока не полноценная асинхронность, и основана она на порашных тредах, потом перепишут, плюс у джанги куча обвязки с самого начала уже, можешь миддлвари посмотреть. Базовая джанга из коробки никогда не будет быстрее любого микрофреймворка
Первый раз?
Ок. Соре
Аноны, объясните нафане, я правильно понимаю, что Питон на компе, должен быть всегда пустой, без библиотек. А библиотеки нужно подгружать в виртуальную среду проекта (в ПайЧарм например), для каждого соответственно свои? Или я как-то не так понял про виртуальную среду?
Просто вроде в .сорт можно поставить функцию которая будет применяется к элементу до его сортировки, но можно ли с помощью нее делать выборку?
Самому педалить придется.
Как вариант это можно
https://repl.it/repls/FrugalVariableInstitutions#main.py
Какая разница? Везде засирается одинаково.
Можно сортировать по многим критериям
https://www.kite.com/python/answers/how-to-sort-by-two-keys-in-python
если число делится с остатком - заебись. или нет. А не так что в равенство пихать эти is_
вот такой запрос, бро https://pastebin.com/p4jV7QqC.
отдает не то, что бы я хотел. отдает форму входа, хотя на локалке все норм.
Можешь сохранить положение семерок а потом их вставить.
Анон, подскажи книгу на русском новичку для изучения языка. Книг много, не знаю какую выбрать.
Укус питона.
https://dumpz.org/b9gGW6TXWhf2
БД access, таблица Client есть. При открsnbb окна должен в tanleView показать таблицу, но крашится.(( ЧЯДНТ?
Делаю тесты, надо имплементировать поглощающих цепи Маркова на питоне, чтобы на вводную матрицу она выдавала результат - лимитирующую матрицу.
Все тесты кроме одного она проходит. Я убился но могу понять где ошибка, уже от балды рандомные данные вбиваю и смотрю результат. Просто охуеть.
Кто сталкивался, подскажите какие маргинальные случаи стоит попрбовать. Комплексных абсорбирующих штатов по условиям нет. Всегда есть хотя бы один не комплексный.
Уже все перебрал, и когда все штаты абсорбирующие кроме одного и наоброт. Сижу с ручкой считаю все правильно выходит.
Тесты скрытые, данных не вижу.
Это копия, сохраненная 14 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.