Вы видите копию треда, сохраненную 30 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2021102 (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
Вкотился
есть те кто тоже проходил? пишите как он вам
Т.е. я хочу чтобы код выглядел как на пик 1, а аутпут как на пик 2.
>— А что ещё можно читать?
>Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Не хочу читать книги. Можно же просто обойтись доками и учебными репами на гитхабе с кучей звёздочек. Или я что то опущу?
По сравнению с нубскими книгами в общем нет.
Туториал это по факту просто перечисление синтаксиса, структур, команд, встроенных функций с очень маленьким количеством примеров и почти полным пересечением этих примеров или примеров как это использовать.
По идее если у тебя есть концепты в голове, т.е. ты моешь кодить в башке текстом(если эта хуйня то делаем это пока условие == Заебись), то тебе хватит исключительно доков, читать какую-то водяную литературу было бы проебом времени, ведь тебе просто надо узнать как называется цикл в питоне, как называется какой-нибудь метод и как ставить кавычки.
Если ты вкатываешься, то книжки тебя за ручку ведут и объясняют что делает какой-то код, где его можно использовать, так же в книжках обычно и пишут про алгоритмы и пытаются донести общий майндсет так сказать. Стоит отметить, что если ты умный перчик, вот прям блистаешь нахуй во все стороны - то идеальным вариантом для тебя будут доки+тяжелые теоретические книги. Если ты тупой как говно, то лучше будет читать уже готовые обучающие книжки. Я не говорю что Питон для детей плохая книга и все кто ее читают долбари, нет, наоборот, но после какого-то базового кружка по синтаксису, когда ты уже научишься делать итератор и лист компрехеншен у тебя возникнет вопрос ЧТО ДАЛЬШЕ ТО БЛЯДЬ Я ВСЕ ЗНАЮ НАХУЙ. Вот тогда уже надо либо искать хорошие учебные пособия, либо забить хуй на учебники и читать просто информатику+документацию.
В универе если учился - так обычно и происходит, какие-нибудь инженерные дисциплины на старте имеют учебник, а дальше уже полностью переходят в лекции+методички.
А точнее даже textwrap.dedent
У тебя какое-то ожидание, что взяв пособие для изучения "языка программирования", ты там найдёшь заодно пособие по "изучению программированию".
Это как пытаться найти в курсе "английский для экономистов" изложение основ макроэкономики.
Книги вроде Лутца, "укуса", Саммерфильда и другое, они тоже про язык программирования Питон, а не про программирование вообще.
Туториал хорош именно как туториал по языку. Не нужны другие курсы, когда есть официальный бесплатный.
Но для освоения программирования надо намного больше времени, чем для освоения языка программирования. А ИТ это не только программирование, и ещё требуется глубокий экскурс в кучу направлений здесь.
Вот нельзя научиться программированию с нуля за год. Без серьёзного бэкграунда в смежных областях, конечно. Это невозможно.
>тот петух
Иди уже к корешам пиво пить и сёмки на падике сплёвывать. Оставь ИТ для ботанов, не пацанское дело, в натуре, хули ты с этими чмошниками общаешься и пытаешься в их круги взезть.
Теперь правильно построю код,. Уберу костыли
Я перекатывальщик из мухосранских админов эникеев с двумя бумажками об образовании. Да я именно книги типа всяких марков луцев имел ввиду. А не Кнутов. Второго бы не стал читать ибо слишком туп для пониманя этого
Начитался. Что если и не получиться вкатиться то в админстве пайтон все равно приветствуется. Так что я ничего не теряю
Решил пару тройку хард задач на литкоде (не на пайтоне). Так себе достижение но как прописка что я не залетный мимосварщик
Книги по алгоритмам наоборот уважаю
Может он вкатился чтоб фраерков 300нанасеков вычислять и поцанвм сливать в падике координаты.
Спасибо
Просто я уже 150 страниц прочитал. В начале всё было очень хорошо, но честно говоря очень много времени уделяется массивам, и какая же это скучная тема. Ну не прям скучная, но мне хотелось поскорее познакомится с циклами и прочим, но даже их объясняют часто на примере массивов блдаж
Ну как тебе сказать. Книги читать очень полезно я правда сам мало читаю. Но книги нужны хорошие, и чтобы по уровню и нужные тебе в данный момент.
Когда ты учишься по принципу "пилю что-то, гуглю непонятное", у тебя масса дыр в понимании. Тебе просто не придёт в голову гуглить многие вещи и читать что-то вроде как ненужное.
А книга, либо же курс лекций, тебя этим кормит. Ты так узнаёшь много нового, а не придумываешь сам.
Просто надо материал себе правильный подобрать и вот с ним работать.
Естественно читать книги и ничего не делать мало полезно.
А как проблема многопоточности решена в других языках? И решена ли?
Нужно положить на API веб-сервиса, который стоит на centos внутреннем сервере, сообщение
Кладу с помощью requests
Вот код запроса
response = requests.request("PUT", url="https://xx.x.xx.xx:xxxx/message/xxxx", headers={"Authorization": "Basic VXNlcjE6MQ==", "Content-Type": "application/xml"}, data=message, verify=False)
С винды работает отлично, а с убунту выдает ошибку:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 662, in urlopen
self._prepare_proxy(conn)
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 948, in _prepare_proxy
conn.connect()
File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 308, in connect
self._tunnel()
File "/usr/lib/python3.8/http/client.py", line 904, in _tunnel
raise OSError("Tunnel connection failed: %d %s" % (code,
OSError: Tunnel connection failed: 403 Forbidden
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xx.x.xx.xx', port=xxxx): Max retries exceeded with url: /message/xxxx (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "111.py", line 5, in <module>
response = requests.request("PUT", url="https://xx.x.xx.xx:xxxx/message/xxxxx", headers={"Authorization": "Basic VXNlcjE6MQ==", "Content-Type": "application/xml"}, data=message, verify=False)
File "/usr/local/lib/python3.8/dist-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, send_kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 655, in send
Нужно положить на API веб-сервиса, который стоит на centos внутреннем сервере, сообщение
Кладу с помощью requests
Вот код запроса
response = requests.request("PUT", url="https://xx.x.xx.xx:xxxx/message/xxxx", headers={"Authorization": "Basic VXNlcjE6MQ==", "Content-Type": "application/xml"}, data=message, verify=False)
С винды работает отлично, а с убунту выдает ошибку:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 662, in urlopen
self._prepare_proxy(conn)
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 948, in _prepare_proxy
conn.connect()
File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 308, in connect
self._tunnel()
File "/usr/lib/python3.8/http/client.py", line 904, in _tunnel
raise OSError("Tunnel connection failed: %d %s" % (code,
OSError: Tunnel connection failed: 403 Forbidden
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xx.x.xx.xx', port=xxxx): Max retries exceeded with url: /message/xxxx (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "111.py", line 5, in <module>
response = requests.request("PUT", url="https://xx.x.xx.xx:xxxx/message/xxxxx", headers={"Authorization": "Basic VXNlcjE6MQ==", "Content-Type": "application/xml"}, data=message, verify=False)
File "/usr/local/lib/python3.8/dist-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, send_kwargs)
File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 655, in send
File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='xx.x.xx.xx', port=xxxx): Max retries exceeded with url: /message/xxxxx (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden')))
Телнет по порту работает, закидывал с этого сервера яндекс танком нагрузку, тоже все норм
Фйерволл не настроен, версия requests одинаковая
C чем это может быть связано? куда глядеть?
В заголовках ответа нет параметра
Set-Cookie bb_session=0-12856866-; expires=Tue, 20-May-2031 22:55:57 GMT; Max-Age=315360000; path=/forum/; domain=.rutracker.org; HttpOnly
Отбой. Надо было дождаться очистки сессий на их стороне, после "выйти на всех устройствах"
Спасибо, мил человек, совсем башка уже не варит, забыл что прокси настроены
Обошел с помощью сессии, и все заработало)
Погоди, на русском языке дата-структуры называют массивами или эта книжка начинается с array'ев?
Я уже
Хороший курс для новичков (сам прошёл полностью). Дальше советую пройти курс от egoroff_channel. Сейчас сижу и прохожу его. В нём уже больше информации и вся инфа даётся в ролике, что немного неудобно, но простительно. Ещё некоторые видите доступны только по платной подписке, но задачи ты можешь решать все бесплатно
Чтобы бабосы латать) А то он ща курс денег никаких не получает, а кушать хочется. Кстати, там иногда в комнатах поясняют что было в видео
Нет, там Lists, но это вроде как массив на русском называется? По крайней мере я смотрел какой-то урок по основам программирования где массивы объясняли на пайтоне и там этим словом обозвали именно Lists
>>39500
> а что там с циклами знакомится? циклы очень просты, идет перебор и всё.
Ну вот просто интересно мне это было, я еще не знаю точно как это всё работает, пытался написать алгоритм разложения числа на простые множители, но ничего не получилось
Похоже, что нет) А так, я не знаю
Есть, но нужно подключать модуль array, а по дефолту идут списки. Короче, просто загкгли и всё
Есть 3 распространенные штуки.
Single linked list, список, когда нельзя прыгнуть в середину, нужно от начала шагать по одному, можно добавлять в начало че нибудь, да и в середину можно.
Array, массив, это когда просто все просто валяется, настолько что двухмерный от четырехмерного ничем не отличается, и добавлять ничего нельзя.
ArrayList, Vector, ну типа массив короче, это массив указателей, можно добавлять в конец, в питоне это. Можешь называть массив, можешь список, никак это не называется.
1280x720, 0:05
Забыл прикрепить
Подождите, нужно ведь еще после каждого удачного прохода сбрасывать var опять до 2
А, ты делишь, не надо сбрасывать пусть дальше растет.
Для простых number ты собираешься гонять цикл пока number не станет равным var? Seriously?
займись делом иди
Codewars, Codesignal, все такое.
Что? Цикл же действует пока number больше одного, как только в результате деления будет 1, то цикл прекращается
Разве можно как-то избежать этого? Если только заранее составить список простых чисел и гонять по ним чтобы не перебирать все варианты var + 1
Корень исходного числа? Что-то я не могу понять что это даст. Типа ограничить так числа для var? Допустим если число 100, то найти его корень - 10, и дальше этого значения не проверять?
Смотри, если ты просто проверяешь число на простоту, а не разлагаешь его, то тебе надо проверять до корня. Дальше нет смысла.
Если ты разлагаешь на простые множетели, то имеет смысл пересчитывать корень, как только ты меняешь number.
Можно и без корня, немного оптимизировать. В питоне есть функция divmod(number, value). Она тебе возвращает пару, результат целочисленного деления и остаток, то есть
divmod(203, 10) = (20, 3)
если у тебя результат деления меньше, чем делитель, то значит ты уже прошёл корень и можешь прерывать цикл.
Проверил, divmod может быть не самый лучший вариант, дорогая операция, раз в пять дороже проверки остатка на деление. Лучше один раз корень посчитать, чем divmod вызывать.
Да, var не заходит за 10. Когда number меняется корень тоже меняется, ну так, опционально.
2. PDF-ка "A Byte of Python" - https://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.02.pdf
Пройти первое (там только до функций и списков доходят), полирнуть вторым - норм идея?
Оба пункта бесполезная хуйня.
>PDF-ка "A Byte of Python"
Спустя 30 страниц от начала, это не считая оглавления, они дошли всё-таки до первой программы - Hello world! При том, что там всего 160 страниц.
А народ на Лутца почки катят, что там вода сплошная.
> Спустя 30 страниц от начала, это не считая оглавления, они дошли всё-таки до первой программы - Hello world! При том, что там всего 160 страниц.
Помню начинал читать этот укус пистона, в итоге бросил, и правда сильно на любителя книжка, не понимаю почему про нее все говорят
>PDF-ка "A Byte of Python"
Короче я (>>40309) решил полистать этот "укус питона", реально бесполезная хуета.
1) чудовищно много воды, объясняют как детям, только примитив, при этом умудряются эти вещи объяснять так, что если не знаешь, то адекватно не поймёшь.
2) порядок изложения копирует официальный туториал, но примитивно
3) есть шиза. Сначала что-то толкают из основ классов и наследования, без углубления в детали, необходимые для полноценного понимания, потом бац, и глава "Метаклассы". А это очень сложная продвинутая тема, в которой умеют плавать далеко не все практикующие разработчики, потому что это такие дебри, которые актуальны для создателей фреймворков и требуют очень хорошего понимания питона.
4) никакого практического тренинга.
Вывод: полный отстой и мусор, не стоит вообще на это смотреть. На самом деле вот официальный туториал не хуже.
Потому что денег занесли. Она вообще тупо беспонтовая, просто успела появиться, когда пистон пошел к успеху, а книг не было вообще. Их и сейчас нет, а тогда так тем более
“Learn X in Y minutes - Python 3” - Ультрагоднота. Прочтите перед тем как начать читать книжки ниже. Подойдет как новичкам, так и старичкам и гуру которым нужно вспомнить синтаксис.
“Укус Питона” – “A Byte of Python” - Ультрагоднота. Эта книга используется даже в НАСА!
“Think Python: How to Think Like a Computer Scientist” - Ультрагоднота. Эта книга научить думать Вас как программист!
“Intermediate Python” - Читать после A byte of Python или Think Python
"Python Cookbook" - Читать после всего, что выше
А это у вас в шапке на Гитхабе написано
https://github.com/TheKnightsWhoSayNi/info/wiki/Books
Всё сильно от бэкграунда зависит. С разным опытом нужны разные книги.
Тому, кто много лет программировал на C/C++/Java, нужны одни книги. А тому, кто вообще ноль в программировании и ИТ, тому другие книги и стратегия обучения вообще.
Мне сложно что-то рекомендовать тем, у кого нулевой уровень. Если опыт не нулевой, то вот три известные книжки, все есть на русском:
1) Fluent Python = "Питон к вершинам мастерства". В предисловии сказано, что для тех, кто уже как-то может на питоне, и хочет улучшить скилл. Воды особо нет, но мне кажется, больше программировать надо уметь, чтобы некоторые вещи понимать, а у питона достаточно за пару дней проглядеть базовый синтаксис.
2) Марк Саммервильд "изучаем Питон 3", как-то так называется. 2009 год. Очень годная книга, если ты уже умеешь прилично программировать на каком-нибудь другом языке, и теперь хочешь изучить питон.
3) Intermediate Python. Для тех, кто более-менее может программировать на питоне, делает лабы на нём. Книга про выжимки специфичных конструкций питона, не свойственных другим языкам.
Ну и официальный туториал тоже очень хорош.
Ого, первая книга по ходу прям сильная. Спасибо.
>Всё сильно от бэкграунда зависит. С разным опытом нужны разные книги.
Он прав, знавал одного вкатывальщика, что даже винду ни разу не устанавливал, не говоря про линуксы лол. Это конечно же не значит что такие люди безперспективны, всё в их руках.
Учить питону стало модно, курсы и "учителя" на каждом шагу.
Может сейчас в шараги питон завезли ? Я сам вкат-перекат и не мне особо умничать, но когда учился были паскали, си и ассемблеры.
PyQT
При достаточных усилиях освоишь как питон, так и большой фреймворк. Да и приложение с нормальным UI получится (привет TKinter)
Можно ли соединить два словаря в Питоне, сохранив порядок ключей?
Инб4 словари превратить в упорядоченные словари для начала, потом соединить
Что должно происходить в случае, когда порядок ключей в двух словарях отличается?
Посмотрел, сохранение порядка ключей работает с версии 3.7, до этого порядок в принципе мог быть случайным.
Если ты сделаешь
new_dict = {old_dict_1, old_dict_2}
(вместо % должна быть звезда), то тут как раз будет результат с сохранением порядка, сначала будут ключи из old_dict_1, с сохранением порядка оттуда, но с перезаписанными значениями из old_dict_2, потом ключи из old_dict_2, те, которые не встречались в old_dict_1
блин, проценты тоже съедаются
Спасибо.
Как раз до этого в кьюте с плюсами работал.
Уже запилил несколько тестовых и разобрался с логикой работы. Полет нормальный.
Сложно вообще переносить питон программу на андроид в виде приложения?
Не в этом суть
от души, я всё же слепой
Если я правильно понял вопрос, в .NET современная многопоточность делается через async - await, который под капотом генерирует машину состояний и использует тред пул.
bump
Да тут прям разницы нет. Все равно будешь гуглить то или другое. Попробуй разные почитать и выбирай
Ты дублируешь код __init__ с родительского класса
Что ты определяешь, ты принимаешь параметры в конструктор. И передаешь их оригинальному конструктору, чтобы не повторять эти определения у себя.
Спасибо
С помощью OpenCV я получаю картинку с вебкамеры. На основе кадра изображения я делаю некоторые объёмные вычисления, в каком то виде накладываю их на кадр и вывожу пользователю. Все это происходит в реальном времени. Проблема в том, что из-за того, что происходят такие объёмные вычисления стрим дико фризится. Захват кадра происходит раз в 5-7 секунд. Никто не в курсе как максимально лёгко это возможно пофиксить? Ну или хотя бы чтобы поток всегда хороший шёл, а вычисления были с опозданием.
Что я пробовал:
- Запустить программу на GPU, но CUDA ругается и не хочет ничего делать
- Пытался с помощью asyncio асинхронно результаты получать, но тоже успехов в этом не добился
- Пытался использовать Numba, но там он был неуместен, т.к. вычисления делаются внутри библиотеки.
В общем сильно прошу не хейтить. Может у вас есть какие-нибудь идеи как ситуацию можно разрешить.
Блэт, какой именно линтер поставить (и как) чтобы PyCharm автоматически подсвечивал мне ошибки? Стоит PyCharm Pro однако почему-то ничего не срабатывает, у меня раньше была обычная и все показывалось, но сейчас даже присвоения вроде абракадабры на пикриле не показываются как ошибочные
Благодарю.
У меня не работает наследование шаблонов, делал все по туториалу, но я не знаю в чем проблема, тупо не работает, уже заебался искать, если кто поможет буду благодарен.
views.py
https://ideone.com/oKpRAN
urls.py
https://ideone.com/uJ1oGi
base.html
https://ideone.com/h1lCIh
product_detail.html
https://ideone.com/EJofFF
Если без пробелов делать, то получим что-то тип этого:
Первый вывод "ожидание ответа"
Второй вывод "ответ принят"
Смотрится в консоли "ответ принятета"
locale.setlocale(locale.LC_ALL, "ru_RU.UTF-8")
dt_parsed = dt_parser.parse('21-Май-21 20:54')
dt = datetime.strptime('21-Май-21 20:54','%d-%b-%y %H:%M')
На 3.9 флюш есть и в принте print(text, end='\r', flush=True) но так и так не работает и не думаю, что будет работать с stdout
Ну тоесть оно будет работать, но нужно именно чтобы в коде работало, а не использовать ОСОБЫЙ запуск консоли
Да не то.
Ничего не понятно, что и как не работает? Где ты в своих шаблонах рендришь product_detail.html?
Я вижу только строчки
template_name = 'product_detail.html'
и далее template_name никак не используется и строчку
return render(request, 'base.html', {})
В общем смотри внимательнее, что ты пишешь.
Он прикольный.
О, я эту книгу тоже наметил себе. Стоит прочтения? Пока только обучаюсь на интерактивных бесплатных курсах.
Какой проект?
Какие вообще проекты делают питонисты? Джиэсеры вроде любят To-Do лист делать на модных фреймворках.
Укус питона
А, понял!
Всякие Milfy City, Lust Epidemic и Midnight City? Ты же потом не слезешь с этого дерьма
Какой конкретно парсер ты используешь?
Какой ip_address должен быть загружен, если в конфиге он не указан? Введи просто значения по-умолчанию.
https://freetutorials-us.com/learn-python-programming-masterclass/
Спасибо, братишка, пока писал тебе в чём нужен совет всё сам понял и зарешал.
Да
Тебе нужно настроить студию так, чтобы она подхватывала нужный питон с нужным окружением. Это несложно делается, куча мануалов есть по этому поводу.
Просто настройки студии, ничего дополнительно ставить не надо.
It is too late, Anon. I have seen everything.
Я пробовал как-то укус питона читать, вообще не понравилось. Эта как мне кажется намного лучше, хотя я уже писал выше об этом, меня работа со списками немного раздражала. Книга делится на две части, в первой рассказывают о питоне и есть практика в каждой главе, а во второй части ты делаешь несколько проектов, игрушку на pygame, и еще какие-то веб проекты с джанго
bump
прочитай, узнаешь
Довольно интересная книга. Для новичка не подойдёт, но если уже с питоном знаком, можешь узнать кое-что новое. Есть, конечно, и устаревшие вещи, например про асинхронность, хотя может это в каком-то там издании пофиксили, но если не читать страницу за страницей, а только то, что тебе самому нужно - выбор хороший
Это второе издание, оно вроде даже этого года, а первое было в 2015. Может и пофиксили всё. С питоном уже знаком более менее.
Значит ты говоришь страницу за страницей лучше не читать, а выбирать конкретные темы?
>>44262
Нет
В общем не нашел я ее на торрентах почему-то, так что наверное придется какую нибудь другую книжку выбирать
Друг эту посоветовал
>Значит ты говоришь страницу за страницей лучше не читать, а выбирать конкретные темы?
Не очень правильный подход, ты дыры оставляешь, а эффективность обучения по книге резко теряется. С таким же успехом ты можешь просто читать отдельные страницы документации или примеры на стековерфлоу.
Что-то пропускать можно, когда заведомо ненужные тебе темы, но осторожно. Когда ты что-то пропускаешь и ленишься, ты сам у себя крадёшь. Чем больше ты и разбираешься, тем выше у тебя скилл. Ты просто разбираясь со сложными ненужными вещами намного лучше начинаешь понимать более простые и логику много чего ещё.
Откровенное легаси да, другая история. Наверное стоит пропустить, чтобы себя не сбивать просто. Пожалуй только про asyncio там легаси явное, это 18-я глава и в меньшей степини 16-я, которая подготовка для 18-й главы.
В ссылках шапки есть даже в переводе на русский язык, но первого издания, 2015 года.
> Что тебе мешает скачать её не с торрентов?
Эм, вроде после всех этих блоуировок только торенты и остались, я не слшыал о каком либо сайте с книгами, который бы работал через впн у нас (да, флибуста есть, но там английской технической литратуры по моему мало)
>>44334
Так зачем мне протухшая книга 15 года? Первое издание я естественно находил, но вот второе не могу найти
> Не очень правильный подход, ты дыры оставляешь, а эффективность обучения по книге резко теряется. С таким же успехом ты можешь просто читать отдельные страницы документации или примеры на стековерфлоу.
Но... ведь..
> но если не читать страницу за страницей, а только то, что тебе самому нужно - выбор хороший
В общем я тебя понял, буду пропускать аккуратно главы
Есть одна консольная программа. Я ее пишу по работе для своих коллег, которые затем запускают ее локально на своих компах. В программу я иногда вношу обновления, и коллегам надо бы обновлять сорцы через git pull. Но беда в том, что коллеги - не разработчики, и рефлекса обновлять репозиторий у них нет. Как бы мне настроить программу так, чтобы, запускаясь локально, она проверяла, есть ли в репе гитлаба отличия от локалки? И если нет, то запускалась бы, а если есть - то гнала бы пользователя обновлять репу.
Я думал о чем таком: в мастер класть текстовый файл с номером версии. При запуске программа смотрит на этот файл и сверяет номер в нем с локальным номером - ну и дальше уже вся логика. Это реально? Или мб есть вариант проще?
Просто запили "program_name upgrade" и скажи им, чтобы пробовали апгрейднуться перед началом работы.
Хочу исключить человеческий фактор.
Даешь коллегам всю директорию программы, вместе с .git. Саму программу делишь на два (или более) скрипта. Первый (основной) скрипт должен автоматически вызывать git pull при каждом запуске, и только после этого импортировать остальные файлы и запускать непосредственно программу.
Нужна помощь с фронтом, частично его по требованиям реализовал, но некоторые вещи не получается подключить / непонятно как реализовать на js, т.к. нет опыта, изучаю 2 недели. Если у кого есть время/желание, напишите почту/телегу. Не бесплатно.
Рандомный говнокод, ясно.
Нет, у тебя.
> Но... ведь..
Очевидно, что второе сообщение писал не я. Лично я читал эту книгу по главам. Иногда внутри глав встречались моменты, когда автор рассказывает о том, что я уже знаю, поэтому бывало и страницы скипал.
Короче говоря, читай так, как самому комфортно. Главное, хотя бы что-то прочитай.
>>44291-кун
> так что бери первое издание и не выебывайся, ну местами устарело чуток.
Может лучше другую книгу найти? Ладно бы это была какая-то ультимативная 10/10 книжка для продолжающих изучать питон, аналогов которой нет, но это ведь скорее всего не так, наверняка что-то еще хорошее вышло за прошедшие 6 лет
Как ты это себе представляешь? Что будет происходить с основным потоком исполнения в это время?
Если тебе просто подождать, тогда просто
time.sleep(10)
do_something()
Если же ты хочешь, чтобы программа работала, а через 10 секунд сделала какое-то особое действие, тогда всё сложнее, потому что это конкурентное исполнение.
Вот ты, например, считаешь какой-то очень большой цикл, твоя программа должна его прервать? Или что?
Уже понимая это можно чего-нибудь предложить, или через модуль sched, или через потоки или asyncio.
Не так много на самом деле изменилось, и не то, чтобы много книжек выпускают.
Книжку всё-таки сложно написать, кто этим заниматься будет?
Основное развитие питона с того времени:
1) asyncio
2) typing
3) по мелочам вроде контекстов, f-strings и др.
Но общего намного больше, тем более, что это книги всё равно про базу. Они не рассчитаны на то, чтобы учить тебя многопоточности и асинхронности, это слишком большие самостоятельные темы.
Мне наверное подойдет просто подождать. Спасибо за ответ
data это какие либо данные, а example функция питона
Получается то что просто со скобками это функция (типа print и т.д.), а после точки идут уже какие-то дополнительные методы у этой функции/класса?
Когда ты например создаешь лист, ты пропихиваешь инфу в класс листов, твой лист становится объектом класса питон.лист и теперь ты можешь применять к нему методы этого класса, например append, pop, index и так далее.
Это же касается самодельных функций без класса или функции как метод твоего класса
Есть модуль sys, который про dir(sys) выдает гору переменных, которые он способен отобразить. Нехитрым кодом получаю список в норм виде, скажем так (пик 1).
print(dir.ХУЙНЯНЕЙМ) выдает значение этой переменной.
Ну думаю. Построю я вывод по примеру.
"Название_хуйни_нейм = значние_хуйни_нейм"
Но обосрамс не заставил себя долго ждать.
НА пике 2 уже видно, что даже получение всех доступных значений получить не удалось. Вместо значение, как мне предполагалось, питон выдал названия...
Хотел список заебенить типа
platform = джигурда
prefix = хуй
set_asyncgen_hooks = тебя ебет?
set_coroutine_origin_tracking_depth = 13
Подскажите куда копать, кому сосать?
Надо написать простой скрипт, который будет при выполнении идти на сетевой диск и записывать в текстовой файл или csv построчно список папок (их около180к получается) из указанной директории и полный путь к каждой папке, то есть каждая строка должна быть вида: id (просто счетчик строк), имя папки, полный путь к папке, комментарий (пустое поле).
С помощью гугла накидал такое, но соснул, потому что Path().absolute выдает мне по итоге не путь к сетевой папке, а путь к скрипту (то есть вместо z://папка/папка он выдает какой то бредовый путь типа c:\users\yoba\dekstop\целевая папка, хотя никакой папки по факту там нет и не было).
import os
from os import listdir
import Path from pathlib
for i in range(0,9):
f = open('D:/text', 'w')
l = (listdir("Z://Files/")
for index in l:
i = 0
i = i + 1
f.write(str(i) + ',' + index + ',' + str(Path(index).absolute) + ',' + str("commentary") + ',' + '\n')
f.close()
И это я еще тестил на папках своего диска, а как моя писанина воспримет 180 тысяч строк вообще хз.
В идеале, конечно, лучше бы писать сразу в csv или просто ячейки эксель, но с pyxl так и не разобрался, постоянная ошибка из за отсутствия прав на запись (хотя атрибут 'w' поставил).
Где я соснул, подскажите? Понимаю, что фигня примитивная абсолютно, можно это все наверное меньше, чем за 10 строк уложиться, но не программировал особо никогда.
Спасибо огромное
Отмена. Я разобрался.
Есть ли что свежее для заливки/обновления?
Есть ли пожелания/жалобы/идеи для книгохранилища?
>Есть ли пожелания/жалобы/идеи для книгохранилища?
Там бы не мешало отсортировать что-то и структурировать. Скажем лутца всего в один каталог и подписать, что это лутц. А то сейчас он и в корне, и где-то глубоко ещё закопан, причём в файлах с именем вроде "Изучаем питон. 4-е издание.pdf", по которым ни разу не понятно, что это.
Другие книжки тоже не мешало бы отсортировать, хотя бы подписать "автор-название-год издания"
???
a = list(range(100))
chunk = 9
from math import ceil
for i in range(ceil(len(a) / chunk)):
print(a[i chunk: i chunk + chunk])
deque оптимизирован под добавление и удаление элементов как в конец так и в начало списка: append, pop, appendleft, popleft выполняются за O(1) времени. Для list добавление в конец - append - выполняется за O(1), но добавление элемента в начало списка через insert(0, item) будет уже O(n), где n - текущая длина списка. Аналогично pop(0) потребует линейного времени.
Твой эксперимент с timeit это демонстрирует. Эффект объясняется тем, что list-ы в CPython реализованы через массивы, а не как односвязные или двухсвязные списки. У этого есть свой большой плюс - доступ к произвольному элементу выполняется за O(1).
https://wiki.python.org/moin/TimeComplexity
Он про то что у него представление будто в других языках не так как в питоне, типа достаточно знать как хуярить классы, функции и циклы в джаве чтобы уже пойти зарабатывать, в питоне же это почему-то считается только доступом к пользованию библиотеками, которые уже как бы и определяют чем ты будешь зарабатывать.
Ну он наверное про то, что на Питоне можно зарабатывать только или в связке с другими языками-инструментами или будучи математиком, ученым или дата саентистом.
Но как бы вот есть Ренпи, есть рынок 18+ и обычных визуальных новелл. И парни вполне зарабатывают. Это как 1 пример.
Ну да, только в других языках точно так же, ты как бы не синтаксисом зарабатываешь, только в отличие от питона другие языки более вжаты в свою роль, а питон как шлюха со всех хуев посасывает сразу.
Отвалился пикрил
pip install git+https://github.com/author1/project1.git#egg=project1
А в ответ:
ERROR: Could not find a version that satisfies the requirement project1 (unavailable)
ERROR: No matching distribution found for project1 (unavailable)
Щито не так?
А что есть на пхп не связанное с вебом?
Да, он быстрый
ну как он, норм помогает?
Адреса нужно менять. Я так тоже когда-то запускал сайтик правда на WP, сначала на компе, потом на хостинге. И траблы были с адресами-ссылками всяких файлов настроек, которые нужно было менять.
Какойнить Akelpad+Портативный питон. Я хуею с этих оболочек по 100-300 метров, которые ставят в систему гору ебанины для банального обучения. Я осознаю, что всю эту хуйню можно было загнать в 5-10 метров, а не в 100-300 с лагающим интерфейсом и горой блядских кнопок, которые даже разрабы этих IDE ниразу не жали. Хочу просто на флешке таскать эту хуйню с дома на работу и обратно, но не ждать пока эта залупа с флешки грузится полчаса, чтобы там в перерыв поиграться 15 минут.
vim на своей VPS и ssh доступ к ней.
>Хочу просто на флешке таскать эту хуйню с дома на работу и обратно,
Тебе оболочку в систему надо поставить только один раз. Впрочем никто не запрещает код хоть в блокноте набирать.
Гугл колаб
Я не знаю где окажется нужный елемент. Т.е. может быть несколько массивов, с разными комбинациями.
[T,F,T,F,ANY]
[T,F,T,F,F]
MATCHED
Сформулируй конкретно, что тебе надо. Я думаю, в этом больше половины решения твоей задачи.
В общем твоя задача слишком нестандартная и поэтому вряд ли может быть решение проще, чем городить свой цикл
len(list_1) == len(list_2) and all(list_1 == list_2 for i in range(len(list_1)) if i not in [1, 4])
len(list_1) == len(list_2) and all(list_1[k] == list_2[k] for k in range(len(list_1)) if k not in [1, 4])
Почему ты не можешь поставить минимальную IDE на рабочий комп?
>>47719
>>47731
Всё, спасибо разобрался.
Нашёл вот это:
https://stackoverflow.com/questions/12898804/python-list-of-booleans-comparison-gives-strange-results
И сделал через map(), где результат неважен использовал True or False, как элемент массива.
Там советуют numpy, но он в моейм случае он хуже map(), потому-что если ему отдать массивы разной длинны, он взрывается.
Потому что я первый раз работаю с джанго и вообще хостингом. про хероку слышу первый раз от тебя.
Хочу это реализовать как-то используя запросы или командлеты хуй знает как они там в windows powershell. Это имеет смысл? Что подскажете?
Так гугли свои хуйлеты, питон тут чисто клей будет.
Где?
У меня простой сайт, файлы проекта и файлы одного приложения. И там и там есть urls.py
Файл urls.py проекта выглядит так:
urlpatterns = [
path('', include('grab.urls'))
]
файл urls.py приложения:
urlpatterns = [
path('', views.index, name= 'home'),
path('media', views.redir, name='redirect')
]
Пробовал вместо ' ' и 'media' ставить прямые ссылки на домен - то же самое
Я хз где у тебя и что конкретно. Я все делал с WP, а это как ты понимаешь ни разу не Питон.
Но.
Просто так у тебя файлы закинуть, которые работают на домашнем компе, на сервер хостинга - не получится. Гугли что надо допиливать перед закидыванием системы на хостинг.
Или пиши в тех. поддержку хостинга.
ну ошибку возвращает, если массивы разной длинны, нужна дополнительная обработка, а с map, не нужна, он по возвращает сравнение по массиву минимальной длинны(сравниваем из 3 и 5, вернет 3 элемента).
я думаю питухон и так может получить все эти данные, какой смысл павершел корячить?
а. понял! ты сайты делаешь? как тебе джанго? мутота пиздец или норм?
понял, просёк
пишет типа - бесплатно, нажимаю добавить в проект он пишет - хуй на рыло тебе. че за ссанина?
Тебе уже написали, любой юпитер-ноутбук подобное, колаб гугла, даталор джетбрейнсов, каггл. Код писать можно точно так же, все библы или уже загружены сразу, либо ставятся автоматом. Я в принципе перешел на это все с пайчармов и сублимов.
Еще преимущество очевидное, все файлы всегда с тобой на гугл-диске, ты в любой точке планеты получаешь одну и ту же рабочую среду
Пчел, если ты заебошил себе хостинг, то должен уметь читать логи веб-сервера и сообщать что там написано или идешь просто нахуй.
У тебя не нубский вопрос, а долбобебский и тебе закономерно напихали хуев за щеку.
>если ты заебошил себе хостинг, то должен уметь читать логи веб-сервера
Это кто такое сказал? Ты просто собака обиженная, вот и тявкаешь просто так. Уверен, что я не первый, за чей счёт ты пытаешься самоутвердиться. На аиб. В питон треде.
Жалкое чмо.
Хуя бомбануло!
Что конкретно использовал для написания? QT или какая-то узконаправленная библиотека?
Куда нажать чтобы появилась?
Как ты его не еби не дрочи не выебывайся нагрузить проц - будет ебошить всё в одно ядро. Я прочел про всякие pypy и stakless сборки - всё одно и то же. 10% одно ядро и сиди жди.
Скажем заставить расчитать дико большое число в дико большой степени
print(99999999999999999999999)
Хуй тебе вместо быстрого расчета и нагрузке в 100% cpu/ я возьму 5 метров оперативы и буду дрочиться год на 10% проца, чем выжру всё шо есть и сделаю быстро
Поясните как заставить питон юзать всё железо.
Ну чего ты ругаешься сразу. Я гуглил, узнал про все эти cpython и прочие реализации. Но или не так вопрос задаю или не там ищу.
pygame
Под каждую задачу свои решения. Для вычислительных, например, есть numba, которая позволяет загрузить в некоторых задачах все ядра (опция nogil=True). Помимо того, что даже одно ядро так можно эффективнее загрузить.
Ещё зависит от того, на что время тратится, какие внешние либы используются. И разные техники вроде запуска процессов-воркеров.
На заниматься хуитой, поясняя что-то школотроллям, желания нет.
>print(99999999999 ХХ 999999999999)
С этой задачей numba не справится, поскольку она поддерживает только нативные типы, то есть уровня int64 примерно.
На самом деле здесь не только проблема питона, реализовать алгоритм, который будет вычислять подобное значение с использованием большого количества тредов довольно сложно. Параллельные алгоритмы вообще довольно серьёзная тема.
Нужно искать специальные библиотеки, которые считают быстро такие числа, с использованием многопоточных подходов.
То есть проблема тут намного глубже, чем GIL питона.
GIL проблема, когда ты сам руками создаёшь треды, а потом страдаешь, что они всё равно параллельно не считаются. Но чтобы жаловаться, надо сначала пытаться треды создавать, а для этого изучать предмет.
То число, которое ты привёл, для своей записи потребует несколько террабайт памяти.
Я ради интереса глянул. Вот если считать число вроде
9^1000000
то считается оно очень быстро, доли секунды. Но если попробовать сделать что-нибудь вроде print(len(str(result)), то там на 20 секунд работы.
То есть вычисление происходит быстро, а вот преобразование из внутреннего в десятичный формат очень дорогое. В принципе это понятно, почему так.
В любом случае, параллельные вычисления это большая и сложная тема. Просто вычисления на питоне это большая тема, в сыром виде питон для этого не предназначен вообще, надо прикручивать математические либы или/и использовать jit-инструменты вроде numba.
По параллельным вычислениям надо читать серьёзные книжки, университетские курсы. Ты просто не представляешь, как много тут нюансов и подводных камней.
Ну и естественно, цель главная не загрузить процессоры, а посчитать быстро. Лучше загрузить процессор на 10% и посчитать за 15 секунд, чем на 100% и считать при этом 30 секунд.
Вкатываюсь значит в эту вашу Django Пытаюсь сделать запрос через orm но чет хуйня выходит.
В документации примеры вроде есть, но какие то не такие.
Допустим есть пример как выбрать книги и подтянуть автора. Но автор у книги один. А мне нужно сделать обратный запрос. Допустим есть 2 автора и у каждого по 10 книг. И мне нужно получить список из 2 автором у которых внутри можно пройти в цикле по книгам. И что то я не пойму. как это сделать. В документации ничего даже близкого не нашел. Может знает кто как это сделать или хотя бы по каким словам искать?
пиздец, ты гомик?
Я бота написал на селениуме, который чеках наличие пс5 в магазинах и уведомлял меня в телегу
autostart/main.py
common/common.py
первый файл основной и исполняется, второй модуль с "общими функциями"
в первом делаю
sys.path.append('../common_modules/') # мне надо чтобы он брал по такому пути, скрипт может переноситься между компами
from common import *
и он прекрасно работает, тащит функцию из соседней папки и когда надо вызывает ее
но блять, каждый вызов пирам подчеркивает красной ошибкой в первом файле (неразрешенная ссылка, типа я ему пустышку подсовываю) да и сам импорт подчеркивается красным
но блять, повторюсь, оно работает
что делать чтобы оно не говорила что есть ошибка которой нет? я не правильно импортирую?
Никак, он статически анализирует и не находит такой модуль.
Наведи на строчку и там есть опция ignore unresolved.
Пердоль sql через орм.
>когда можно считать, что вот, я выучил питон
Когда ты умеешь найти ответ на любой вопрос в Python API Reference
Точно не помню, вроде так должно работать.
По id автора:
Books.objects.filter(author__in=[1,2]
По полю в модели автора:
Books.objects.filter(author__name__in=['pushkin', 'kalatushkin'])
как то есть возможность обойти? свой пакет сделать?
[1,2,3,ИГНОРИРУЕМ,1,2,3]
и
[1,2,3,99999999,1,2,3]
MATHCED!
Сто процентов должен быть где-то инструмент для этого.
Делаю задание на sqlalchemy, нужно считывать строки из таблицы и писать в json.
Как сделать возвращаемый sqlalchemy результат json serializable?
Описание класса на скрине. И как результаты считываю тоже на скрине ниже.
Если не будет метода dict, ошибка
>TypeError: Object of type User is not JSON serializable
Если он есть, то ошибка
ЮTypeError: 'method' object does not support item assignment
Единственное, что нагуглил, это объявить в классе метод, который возвращает словарь, и применять его к результатам построчно, типа:
>[r.get_dict() for r in result]
Вот тогда все нормально работает, но это выглядит как-то костыльно, может у sqlalchemy есть встроенные способы сделать сериализацию?
Могу начать выкачивать курс. Только надо куда-то его закидывать. Облака какие-то. Есть идеи?
Когда ты можешь решить и закодить любую проблему подвластную условному мидлу и у тебя не возникает мысли "ебать тяжело, я это еще не проходил". И вообще нет такого "выучил питон", ты выучи какой-нибудь фреймворк и делай на нем проекты.
Представь например что есть дата-саенс и машинное обучение в нем. Там код зачастую без единого даже цикла, чисто команды к пандас, нимфи, матплотлибу и тенсорфлоу. В джанге какой-то свой код будет, я не шарю.
Я могу ошибаться, но мне кажется в 2021 погружаться в дебри питона, учить его делать всякие сложные штуки и эксклюзивные решения это проеб времени, особенно на вкате, тебе надо упереться в конкретный инструмент что тебя интересует и подтягивать питон чтобы с этим инструментом не было затупок.
И вангую опять же, что можно найти какой-нибудь кусок интервью Линуса где он говорит что так до сих пор и не выучил С, ну как пример тебе
Какие элементы игнорировать? Типа четкую позицию, ну так просто выключай zalupa[3] в твоем случае. Можешь его заранее убрать. Если это число какое-то оче большое, то сравни с предыдущим, если разница больше какого-то порога, то в цикле пропуск.
Ты определись сначала чего хочешь
Просто консольку хотелось, мог у перекупов взять, но принципиально не желал так делать
Берешь и поэлементно сравниваешь. Если у тебя числа с плавающей точкой, то для игнорируемых элементов вставляй в первый массив значения не являющиеся числами (бесконечность например). Для целых можно передавать список индексов игнорируемых элементов.
качай пдфки
А зачем оно вообще нужно? Всегда бесили эти записи курсов где вещает "препод" для десятка людей, которые пердят в микрофоны и задают какие-то свои вопросики, потом им одну тему объясняют два часа? И обязательно начнуться какие-то проблемы со связью или что нибудь подобное. Ниикогда подобного не понимал
и правильно, они лупят пиздец! алсо купил консоль или как?
Ну я бы зипанул, отфильтровал, анзипнул и сравнил целиком.
Если ты создаёшь их в теле функции, то не забывай, что их надо создать до того, как ты их начинаешь использовать.
Вспомогательным функциям не нужен self. По крайней мере в этом случае, где ты self не используешь, у тебя именно функции, а не методы.
>Офк остаются некототорые моменты, которые я вкурил не до конца (аля args, kwargs, рекурсивные функции, и прочие приколы),
Это ты на очень начальном уровне. Работа с args/kwargs это вот совсем такие базовые вещи.
Получается можно их и в теле метода создавать, и просто в теле самого класса вместе с остальными методами?
>И вообще нет такого "выучил питон"
Выучить питон - это когда ты больше не ужасаешься от кода, который написал год назад.
>Нет, это значит стать великим программистом, это куда больше, чем один питон.
Это уровень обычного мидла с 2-3 годами опыта.
Аноны, кто получал доступ к АПИ Твиттера? Что и как им надо написать, чтобы они дали ключи? В описании приложения писал, что хочу просто попробовать их АПИ - отказ. Писал, что в научных целях - отказ. По фану - отказ. Сцуко анально отгородились и не пускают поиграть.
Они даже Трампа забанили, а тебя и подавно нахуй пошлют.
Они кранйе подозрительно относятся к юзерам, просто сидящим в Твиттере из-под постсоветских IP или телефонных номеров, чего уж говорить про просящих доступ к API. Пробуй левый западный номер и VPN.
Как сделать так, чтобы код одного потока вызывал функцию из другого потока и передавал туда данные?
Напиши, что делаешь проект по гендерному равенству и тебе нужен анализ твитов на эту тему
Где хранить изображения и файлы, привязанные к юзеру? Создать под них отдельный каталог на диске и дать ссылку в базе данных или можно хранить сразу в базе (к примеру Mongodb)?
Хранишь файлами, в базе хеш, бонусом дедупликация.
Если твой бот просто выдает какую-то инфу какого-то конкретного толка, то сюда, если у тебя бот-пиздилка или генератор склеенных из куском нейро-волков, то тебе наверное в машоб тред
Не-не-не, пока все просто. Конкретный вопрос по телеграм апи, который я не смог нагуглить. Слушайте.
Я отправляю картинки по URL. Проблема в том, что когда картинка узкая и длинная, как мой пикрил (не мой код, просто пример из соседнего треда), то телеграм отправляет его не как файл, а как документ.
Соответственно, когда я вызываю bot.send_photo, оно валится с ошибкой
>A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: wrong file identifier/HTTP URL specified
Мне нужен какой-то способ проверить, что картинку можно отправить как фото, а не как документ.
Проблема еще и в том, что в идеале я хочу отправлять картинки не поштучно, а через send_media_group, то есть о том, что все упало, я узнаю только при попытке отправки группы.
Все эти фриленс биржи бесполезны без прокачанных годами аков с высоким рейтингом и портфолио. Думать что там ноунеймов будут заваливать заказами ужас наивность на грани детства.
Собственно поэтому в сети зарабатывают те кто успел вкачать аки за 10е, а остальные сосут банан. Особенно после пандемии.
Перекатываюсь к вам с плюсов, ибо хер с ними найдёш работу в Беларуси. Записался на тренинг, там финальный таск -- консальный рсс ридер. Вот вроде просто всё, хотя объём данных которые надо быстренько выучить запредельный. Написал прогу, что-то стартовое, за 3 дня, а как тестить не понимаю. Вот просто в голову не приходит как эту хуйню тестить, уже 4 часа просто смотрю/читаю гайды по unittest/pytest/nosetest/zalupatest, а идеи чё делать нету.
Не знаю насколько адекватно просить помощи в интернете, вроде задание то самому надо делать, но буду думать что это считается как поиск решения в интернете :)
Если вам не впадлу, гляньте код: https://github.com/UrekMazin0/PythonFinalTask/tree/main/rss_reader
Можете посмотреть откуда форнулся, мне не зазорно вообщем то, питон полтора месяца учу.
Основной вопрос, как это тестировать, чем подробнее, тем лучше. Ну и если напишите, почему я говно, и код мой не лучше, буду благодарен
нда, забыл, комменты там хуета хуетой, сделаны что б я после попойки не забыл что писал, вот в кратце:
app_logger -- пару функций, вызываю в других модулях getLogger и по идее получаю ссылку на один и тот же логгер. К нему пернаментно привязан один streamhandler и один filehandler
feed_container -- складываю туда всю спаршенную залупу. Класс там занимается как парсингом, так и хранением. Он же раскладывают весь этот суп на ингредиенты. Он же занимается выводом.
parser_debug -- класс где сделал что-то для парсинга параметров терминала
reader -- main откуда всё за ниточки дёргается
debug -- УБОЖЕСТВО, ЗАКОМПЛЕКСОВАННЫЙ НЕДОНОСОК - БУКВОЕД. надо удалить нахуй, не помню зачем создал и что проверял
Ещё разок, я понимаю как тестить ебаную функцию add(a+b), но я не понимаю как тестить приватные методы класса, вот вообще не доходит что-то. Мб туплю, мб тупой, мб сложно. В общем буду благодарен за любую помощь
Уже давно не пью, это там скорее был речевой оборот.
Хз, плюсовики, начиная от Милла, везде нужны, по крайней мере мне так видится. Джунику тяжелее, намного тяжелее чем в других языках. А в Беларуси темболее
Неохота вникать. А почему бы код на картинке не написать как
def news(self, limit):
____return [<asterisk>islice(self.channel_items, limit)]
где <astrerisk> это звезда, которую имиджборды съедают?
А с учётом того, что у тебя channel_items это список и только список, можно сделать
____return self.channel_items[0:limit]
А вот здесь ты специально в цикле 100500 раз создаёшь файл, а потом его перезаписываешь? Не жалко свой диск насиловать?
Хм, а вот не подумал, спасибо, попробую щяс
Ссд жалко :( А если серьезно , то да, очень нубская хуйня, 100 лет назад ушел от этой ловушки, но вот снова попался на питоне. Спасибо
Конструкция file>>51240
Конструкция open("name", "mode") as file
Создаёт объект класса, работающего с файлом, и возвращает ссылку на него в переменную file. Здесь в цикле создавался этот объект, что в общем то считается залупой, и так работать не должно.
Мимо автор этой херни, написал то что подумал, в Гугле мб правильнее оасскажут
Он же сам закрывает если ты "with" прописал, только без with нужно явно прописывать закрывать файла
А как нужно? Еще до цикла файл открывать? Или в цикле назначать нужные данные в какую-то переменную, а после цикла уже добавлять в файл?
Естественно, надо вне цикла файл открывать. Просто подумай, зачем тебе файл писать, и тут же переписывать его?
делай
news = self.channel_items[:limit]
with open("news.json", 'w') as file:
____file.write(json.dumps(news, indent=4))
или вариант
news = self.channel_items[:limit]
data = json.dumps(news, indent=4)
with open("news.json", 'w') as file:
____file.write(data)
Ты сначала создаёшь массив, который хочешь сохранить, и потом уже создаёшь файл и сохраняешь его.
Разница между двумя вариантами в том, что если по какой-то причине при json.dumps будет исключение, то файл создан не будет. В первом случае будет создан пустой файл, а если был до этого какой-то, то он уничтожится.
Иногда эти вещи важно контролировать, хотя надо смотреть, возможна ли такая ситуация в принципе, или нет. Чаще невозможна.
О, надо разобраться в методе json.dumps. Вообще питон радует разнообразием конструкций
Спасибо, мимо автор ориг кода, не парень, спрашивающий про файл
Что лучше, attr+cattr или pydantic?
А на каком языке ты до этого писал? НА каком уровне его освоил? Почему на пистон решил перейти?
Покажи в название треда строчку "Только для сеньеров помидоров". Если такая есть, то хорошо, мы все уйдем и оставим вас профессионалов тут одних, будете восторгаться друг другом и задавать только умные вопросы
Хз зачем тебе это
С++, иногда, когда стоило подергать за ниточки низкоуровневость(да, прям ниже чем плюсы), писал на С, подключая к плюсовым программам и вызывая функции. А, ещё когда для микроконтроллеров писал, тоже С юзал, правда там своя атмосфера.
Ну QT, хотя это и фреймворк, но там свой язык по сути, это вообще не плюсы в их базовом или типичном понимании. ООП во всей красе. Довольно приятный фреймворк, к слову
Хз на каком уровне освоил. Наверное на том самом уровне, с которого видно всю необъятность материала, то понимание, что я в мире плюсов букашка заморенная и знаю примерно нихуя. И никогда в общем то всеп лбсы не пойму
Перехожу потому что универ заканчивается, в Беларуси плюсы нахуй никому не всрались, практически, а сидеть на шее у родителей не хочу. Был выбор между шарпом, джавой и питоном, нравились все яп, но я тогда opencv увлекался и решил вот месяца 2 назад вкатиться а питон
>А на каком языке ты до этого писал?
Он, кстати, написал:
>>50703
>Перекатываюсь к вам с плюсов,
Но мне кажется, стоит сначала более лаконично научиться писать, прежде чем обвязывать всё тестами.
Ремарка сразу - в таком стиле классы по-моему ни на каких платформах не принято называть, в том числе на питоне.
Даже pep8 рекомендует функции и методы называть как
def feed_container():
а классы в стиле
class FeedContainer:
глаз режет.
Не то, чтобы прямо совсем ужасно, снаружи смотрится как функция-фабрика, которая возвращает объект
feed = feed_container(url=parser.args_Space.source, args=parser.args_Space)
Тестировать сети довольно сложно, слишком много зависит от сети. Вообще мне кажется, что лучше разделять часть, что отвечает за сеть/транспорт, и часть, что отвечает за логику приложения. Логику уже можно при желании обложить тестами. А транспорт можно использовать разный. Хотя это актуально для больших приложений.
У меня просят тесты на курсах, поэтому хочу их сделать, ну хотя бы для вида.
Класс я в начале так и назвал, потом переименовал, прочитав что-то где-то :) Вообще, к слову, тяжко это. В плюсах есть общепринятые практики, но нигде не найдёшь мануала, принятого офф. комиссией, как pep8. До сих пор привыкаю, хотя это и удобнее.
Хм, да, тут ты прав, я уже после того как написал понял, что было бы лучше разделить логику сети и хранения данных. А что ты под транспортом подразумеваешь? Способ вывода в консоль/файл?
Pro можно "поломать" на линухе, если пошаманить файлы в /home/~
Сейчас уже не пользуюсь жидбрейнс, но раньше так и делал
Ещё одно, у меня в целом то вопрос был скорее про тесты методов класса.
Есть у меня скажем
class Foo:
__init__(self):
raise Exception
__boo(self):
raise Exception
и как должен выглядеть, скажем, тест, отлавливающий эти эксепшены.
> Хз зачем тебе это
Просто интересно
> Был выбор между шарпом, джавой и питоном, нравились все яп, но я тогда opencv увлекался и решил вот месяца 2 назад вкатиться а питон
Я вот в сторону шарпа поглядываю, сейчас кажется, что это в принципе неплохой и вроде даже несложный язык, но уже пайтон надо добить хоть до какого-то вменяемого уровня, а не перескакивать на что-то другое, так что на будущее оставлю си#
def проебал?
Берешь и без задней мысли отлавливаешь
Только это должно быть не Exception а MyAwesomeExceptionClass
да, def проебал
Да просто непонятно, как мне проверять эксепшены, вызванные неправильными аргументами командной строки. (Да, при вызове с неправильными параметрами я генерю исключение, хз насколько это правильно)
Типа, класс не принимает никаких входных параметров. Параметры CL берет с помощью инструментов argparse. Внутренние методы, та же валидация, в которой львиная доля всех моих проверок, тоже не принимают параметры. Тобишь я не очень понимаю как написать для этого тест
Эх, если бы можно было просто написать тест, который бы вызывал мою прогу с разными параметрами.
ТАК БЛЯТЬ СТОП. А насколько адекватно будет, если я буду вызывать свою функцию main() в тестах, но вводя в неё тестовые параметры, и отлавливать исключения из модуля, которых подлючался к main файлу?
>проверять эксепшены
В этом и есть суть отладки, але
Благо в Пистоне продвинутое семейство эксепшнов, да и свои можно и нужно определять
>неправильными аргументами командной строки
Только вот что значит "неправильный" в курсе только ты. Ни я, ни прога этого не знаем
Да не, она всё вполне может знать.
К примеру, если в параметр записать
-limit "govno"
Я вполне могу проверить тип, что он не int , и кинуть говно эксепшн. У меня ж вопрос насколько это бы было вообше адекватно, генерить эксепшн вместо обычного
print("ti govno")
sys.exit
И если это адекватно, как мне такое протестить, если класс получает всю инфу не аргументами, а долбаным argparse
Извечный вопрос, что ты хочешь: бросать эксепшн или возвращать None из функции (1е кстати везде предпочтительнее)? Хочешь оставлять Traceback? Лог об ошибке? Это все на твой выбор
>если класс получает всю инфу не аргументами
Так argparse и конвертируется в эти самые аргументы. Интерфейс ебана
Ещё стоит заметить, что прочитать и записать что-то надо почти в самом начале xml файла. xml файлы всегда валидные и сука могут быть иногда по несколько десятков мегабайт.
Какую ебанину лучше использовать ElementTree vs. Minidom если оставаться только в рамках стандартной библиотеки? Во что вкатываться? Плюсы, минусы, подводные камни?
блеа, не понимаю, у меня ощущение что ты просто на более высоком уровне и я не могу донести мысль
Со своей колокольни я не вижу разницы, только если код теоретически не может расхуячить нам программу, тогда конечно его лучше обернуть в try except.
Вот смотри, есть у меня метод
def Foo(x)
___try:
______if type(x) == str
______raise SomeCoolException
___except SomeCoolException:
______print("jopa")
___else:
______return x
И вот такой тестик
class MyTestCase(unittest.TestCase):
def test1(self):
self.assertRaises(SomeCoolException, Foo("govno")
Вот, всё нормально вроде, должен тест норм сработать.
Но хуета в том, что мой класс работает с аргументами командной строки, которые просто берутся при инициализации argparse.parseArgs(). И я не понимаю как мне написать тест, которые проверяет, не ёбнется ли моя прога введя пользователь --limit 90000000. Просто потому что как мне это число вообще бля запихнуть в тест, мой класс не принимает аргументов.
ну ты кидаешь объект event, и в нём есть метод key. Вот и всё. Кинешь объект, у которого нет такого метода, будет бобо.
Запихнуть ты можешь через sys.argv
Сделать
sys.argv = ['my_prog.py', '--limit', '900000000']
и твой парсер будет думать, что ты вызвал прогу с параметрами --limit 900000000
Потому что парсер читает по-умолчанию sys.argv, который от перезаписи не защищён.
Насколько вот это именно для тестирования через фреймворки корректно - вопрос. pytest вроде глотает.
Ещё есть lxml, вроде очень быстрая. Я ей пользуюсь, но правда только для парсинга. Насколько ей удобно править документы не скажу, не пробовал. Вроде должна уметь.
>У меня просят тесты на курсах,
А какой фреймворк у тебя просят? unittest, pytest, или что-то ещё, может тупо руками через assert?
ага, вот про этот способ не знал. Попробую на нём написать костылики, уж это я люблю и умею, спасибо
Может у меня совсем голова не работает к ночи, но я до конца понять не могу этот момент. Этот метод взят получается из библиотеки pygame?
Или раз это вспомогательная функция, то event ей вернет та функция что вызовет ее (то есть _check_events)? Она получается автоматически имеющееся у нее значение вкладывает во второй аргумент?
Ой, ладно, спать пойду, завтра попробую разобраться откуда этот .key берется
Не, тут никакой конкретики, по моему. Русское поле экспериментов в общем, бери что хочешь
Я недавно на питоне, поэтому так и предположил.
В плюсах с этим проще,
void Foo(type ClassObject)
{
___ClassObject.Boo();
}
И если у объекта класса с данным типом нет такого метода, ты пойдёшь нахуй глубоко и надолго.
В питоне, насколько я всё это понял, ты по сути идёшь на соглашение с интерпритатором, что вот я сюда кину объект, назовём его условно event, и вызову внутри его метод .key. Если вдруг где то вызовешь эту функцию и кинешь место event что-то другое, у него не будет метода key, будем бобо. Скорее всего умная IDE найдёт ошибку на стадии написания оной.
Я так предпологаю, как реально это работает хз, меня напрягает динамическая типизация
завязывай. хули ты так долго дрочишь? это вредно
да весь евойный хак и шаманство с "файлами в /homo/" было подставление лицензионного ключа, который прилетал на университетскую почту. лицензия кончилась потому что из университета отчислили и почту забрали, а теперь заберут на осеннем призыве.
pytest это тоже "лишняя зависимость"
unittest/pytest предназначены для специального тестового прогона, то есть на обычный запуск никак не влияют.
Твоя программа должна, конечно же, контролировать параметры строки при запуске, видимо к тебе сейчас требование вот эти вещи контролировать, а не тестовый фремворк самому изучать.
Тестовый фреймворк поможет тебе контролировать, что ты не продолбал где-то проверку аргументов.
Глянь, кстати, на оператор assert. Он в принципе как раз вот для таких целей и предназначен.
assert parsed_data < 1000
assert parsed_data < 10000, "Number is too big"
несоответствие будет вызывать AssertionError
Мне кажется, сейчас скорее это требуется от тебя.
>Скорее всего умная IDE найдёт ошибку на стадии написания оной.
Сделай так:
https://ideone.com/S64HlW
def func(obj):
____assert isinstance(obj, Base)
____print("func passed")
И можешь обходиться без IDE и typing/mypy.
Любая динамическая утиная типизация так работает
Весь жс построен на ивентах и коллобеках. В каждый хендлер будет проброшены аргументы а через них переданы коллбеки и объекты
const handler = (event) => {console.log(event.key)}
Потому что все разы когда моя убунту крашилась были из-за ебаного жидбрейнса - графическая оболочка просто умирала нахуй
Сейчас на vscode, полет нормальный
>Динамическая типизация -- хуета, имхо
Заебал. Пиздуй на своём любимом Го писать.
Динамическая типизация позволяет массу трюков, вроде того, чтобы подставлять любой callable объект как аргумент функции, и это может быть функция обычная, лямбда фукция, связанный метод, класс, и много чего ещё. У тебя тучи возможностей по созданию декораторов, вообще масса всего открывается.
а коим образом это делается только в динамически типизированных яп? Без шуток, интересно. Буду благодарен хотя бы ссылочкой
Да блять так и не понял, минидоминировать или элементарно трепать xml
да что сразу динамически типизированные яп? поинтер на функцию в си? не так красиво, конечно, но тоже работает.
>не так красиво, конечно, но тоже работает
Очень ограничено работает. Тогда как в динамических языках у тебя утиная типизация и ты можешь не только функцию, но и метод объекта передавать, просто класс и др.
У меня нет желания начинать срач о типизации. Такое ощущение, что на доске сидит какой-то индивидуум, и при случае пытается этот срач устроить, других интересов нет.
Ну блин, если не понимаешь, откуда берутся проблемы и преимущества разных подходов, то и похуй, твои проблемы.
ты хочешь универсальную палку, которая была бы не говном мамонта, выглядела более или менее нормально, и тебе бы не хотелось пырнуть случайного человека ножом, когда ты б писал код?
я не знаю, какие другие технологии под питон ещё остаются.
С динамической типизацией у тебя есть потрясающий выбор: потеребить яички пока будешь делать минет или нет, сосать медленно или быстро, проглотить или сплюнуть
утиная типизация - божественна. двадцать лет назад ещё в универе я запрыгнул на жабу, и моя жизнь подкосилась. десять лет назад, я попробовал змею, и всё наладилось. жаль лишь только то, что волосы выпадать начали. но это генетическое, наука говорит, что по материнской линии передаётся.
Хорошо, когда есть выбор, а не просто разорванное бутылкой шампанского кровавое очко.
>Почему ты так думаешь, десу?
Другой анон. Такое ощущение есть, потому что всё уходит в браузеры как в универсальные платформы.
Правда история движется по спирали. Ещё в махровые 60-е и 70-е, когда ещё летали на Луну, а по улицам ходили мамонты, были маинфремы и тяжёлые юникс-машины, где большая основная машина, и терминалы проще. Потом акцент сместился на дектопы. Текущий уход в веб-облака это как виток спирали, вновь у нас мейнфремы и центральные хранилища данных, и терминалы к ним.
Однако чувствуется и следующий виток. Браузеры утяжеляются, внутри браузеров огромные хранилища данных, на гигабайны, код, зачастую бинарный (WebAsm), SPA с фоновыми процессами, когда у тебя страница может работать автономно очень долго без интернета вообще.
Но по части GUI мне кажется всё уж очень уверенно идёт в сторону html/css/js
Прошло сколько лет, эпоха сменилась, а полноценно этот подход так и не поддержали. В питоне точно нет, электрон какой-нибудь про это как раз.
Понимаешь, программист-сама я совсем еще не смешарик кодер, а хокаге стать хочется хочу написать написать свое приложение, так как опыта нет я обращаюсь к опыту людей чего-то понимающих в сфере, а большинство плюётся от веб-приложений, десу.
>>51488
Меня это пугает, программист-сама. Наверное мне стоит пересмотреть свой страх веб-приложений, к тому же как я понимаю сие творение будет работать везде, а потом на его почве можно легко еще дополнительно в виде сайтика поднять. Это все же огромный плюс. Спасибо программист-сама.
Там же написано
>Respond to keypress and mouse events
event это объект, которые генерируется при каждом событии нажатия кнопки или мыши, функции у тебя его обрабатывают эти события, поэтому дожны получать именно его, а не какой-то абстрактный event
Сам способ вызова гарантирует, что ты получаешь именно такой event
Свойства этого event смотри в описании pygame
ЛОЛ, ты его препод?
Встроенный питоновский интерфейсник, не рекомендую.
Сначала не понял что они только в конце, а потом как понял. Спасибо.
Дизайн - мое почтение.
Мы с аноном из поста №2051853 разные люди если что, я его пост увидел уже после отправки своего
Ну я по своей ссылке на freecodecamp почти прочитал статью по питону, там просто кратко основы изложены. И пару видео посмотрел из видео-курса по питону. Мужик в принципе интересно рассказывает, и субтитры нормальные английские есть (не автоматические), так что вообще ляпота
>Аноны, держатель SYNC-библиотеки книг по питону(и не только) итт.
Хранитель книг, вот это вот у тебя в оригинале есть? На хабре перевод есть, но ужасный какой-то.
На одном сайте прохожу курс по Питону. Там дали такого вида задание:
В 1769 году Леонард Эйлер сформулировал обобщенную версию Великой теоремы Ферма, предполагая, что по крайней мере nn энных степеней необходимо для получения суммы, которая сама является энной степенью для n > 2n>2. Напишите программу для опровержения гипотезы Эйлера (продержавшейся до 1967 года), и найдите четыре положительных целых числа, сумма 5-х степеней которых равна 5-й степени другого положительного целого числа.
Таким образом, найдите пять натуральных чисел a, b, c, d, e, удовлетворяющих условию:
a^5+b^5+c^5+d^5=e^5.
В ответе укажите сумму a+b+c+d+e
И тут фишка в том, что написать код, который все это вычисляет легко, даже особо не включая голову и используя наработки из предыдущих заданий.
Но есть один момент. Скорость выполнения кода.
1 способ решения - мой, нубский, вообще не думал когда код писал:
from datetime import datetime
start_time = datetime.now()
total = 0
for a in range(1, 151):
for b in range(1, 151):
for c in range(1, 151):
for d in range(1, 151):
for e in range(1, 151):
if pow(a, 5) + pow(b, 5) + pow(c, 5) + pow(d, 5) == pow(e, 5):
total += 1
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'e =', e)
print('общее количество натуральных решений =', total)
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 2+ hours
2 способ, парня, который тоже только проходит курс, но уже включил голову:
from datetime import datetime
start_time = datetime.now()
e = 0
f = 0
for a in range(1, 151):
for b in range(1, 151):
for c in range(1, 151):
for d in range(1, 151):
e = (a 5 + b 5 + c 5 + d 5) (1 / 5)
if int(e) 5 == a 5 + b 5 + c 5 + d 5:
print(a, b, c, d, int(e), 'sum =', a + b + c + d + e)
f = 1
break
if f == 1:
break
if f == 1:
break
if f == 1:
break
if f == 1:
break
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 0:04:30.087448
3 способ уже от какого-то опытного парня, который ил с других языков перекатывается или просто опытный в Питоне (или матеше/логике):
from datetime import datetime
start_time = datetime.now()
arr5 = [i 5 for i in range(2, 150)] # массив пятых степеней
abc = set(a + b + c for a in arr5 for b in arr5 for c in arr5) # варианты сумм а^5+b^5+ c^5
de = set(e - d for e in arr5 for d in arr5 if e - d > 0) # варианты разности е^5 - d^5
res = abc & de # пересечение вариантов
# находим a b c для верных ответов
abc_res = [[a + b + c, a, b, c] for a in arr5 for b in arr5 for c in arr5 if a + b + c in res]
# находим d e для верных ответов
de_res = [[e - d, e , d] for e in arr5 for d in arr5 if (e - d in res) ]
elist = []
for i_res in res: # исключаем повторения
for i_abc in abc_res:
if i_res == i_abc[0]:
aa, bb, cc = i_abc[1:]
for i_de in de_res:
if i_res == i_de[0]:
ee, dd = i_de[1:]
if ee not in elist:
elist.append(ee)
aa, bb, cc, dd, ee = sorted([round(aa0.2), round(bb0.2), round(cc0.2), round(dd0.2), round(ee0.2)])
print(aa, bb, cc, dd, ee,'a+b+c+d+e=',aa + bb + cc + dd + ee)
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 0:00:01.048060
Мой способ не выполнился на моем компе даже за 2+ часа. Второй выполнился за 4,5 минуты. Третий - за секунду.
Так что не гоните на Питон, что он медленный, если у вас код кривой (Питон понятное дело медленный, но кривой код ролляет сильнее)
На одном сайте прохожу курс по Питону. Там дали такого вида задание:
В 1769 году Леонард Эйлер сформулировал обобщенную версию Великой теоремы Ферма, предполагая, что по крайней мере nn энных степеней необходимо для получения суммы, которая сама является энной степенью для n > 2n>2. Напишите программу для опровержения гипотезы Эйлера (продержавшейся до 1967 года), и найдите четыре положительных целых числа, сумма 5-х степеней которых равна 5-й степени другого положительного целого числа.
Таким образом, найдите пять натуральных чисел a, b, c, d, e, удовлетворяющих условию:
a^5+b^5+c^5+d^5=e^5.
В ответе укажите сумму a+b+c+d+e
И тут фишка в том, что написать код, который все это вычисляет легко, даже особо не включая голову и используя наработки из предыдущих заданий.
Но есть один момент. Скорость выполнения кода.
1 способ решения - мой, нубский, вообще не думал когда код писал:
from datetime import datetime
start_time = datetime.now()
total = 0
for a in range(1, 151):
for b in range(1, 151):
for c in range(1, 151):
for d in range(1, 151):
for e in range(1, 151):
if pow(a, 5) + pow(b, 5) + pow(c, 5) + pow(d, 5) == pow(e, 5):
total += 1
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'e =', e)
print('общее количество натуральных решений =', total)
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 2+ hours
2 способ, парня, который тоже только проходит курс, но уже включил голову:
from datetime import datetime
start_time = datetime.now()
e = 0
f = 0
for a in range(1, 151):
for b in range(1, 151):
for c in range(1, 151):
for d in range(1, 151):
e = (a 5 + b 5 + c 5 + d 5) (1 / 5)
if int(e) 5 == a 5 + b 5 + c 5 + d 5:
print(a, b, c, d, int(e), 'sum =', a + b + c + d + e)
f = 1
break
if f == 1:
break
if f == 1:
break
if f == 1:
break
if f == 1:
break
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 0:04:30.087448
3 способ уже от какого-то опытного парня, который ил с других языков перекатывается или просто опытный в Питоне (или матеше/логике):
from datetime import datetime
start_time = datetime.now()
arr5 = [i 5 for i in range(2, 150)] # массив пятых степеней
abc = set(a + b + c for a in arr5 for b in arr5 for c in arr5) # варианты сумм а^5+b^5+ c^5
de = set(e - d for e in arr5 for d in arr5 if e - d > 0) # варианты разности е^5 - d^5
res = abc & de # пересечение вариантов
# находим a b c для верных ответов
abc_res = [[a + b + c, a, b, c] for a in arr5 for b in arr5 for c in arr5 if a + b + c in res]
# находим d e для верных ответов
de_res = [[e - d, e , d] for e in arr5 for d in arr5 if (e - d in res) ]
elist = []
for i_res in res: # исключаем повторения
for i_abc in abc_res:
if i_res == i_abc[0]:
aa, bb, cc = i_abc[1:]
for i_de in de_res:
if i_res == i_de[0]:
ee, dd = i_de[1:]
if ee not in elist:
elist.append(ee)
aa, bb, cc, dd, ee = sorted([round(aa0.2), round(bb0.2), round(cc0.2), round(dd0.2), round(ee0.2)])
print(aa, bb, cc, dd, ee,'a+b+c+d+e=',aa + bb + cc + dd + ee)
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
## Duration: 0:00:01.048060
Мой способ не выполнился на моем компе даже за 2+ часа. Второй выполнился за 4,5 минуты. Третий - за секунду.
Так что не гоните на Питон, что он медленный, если у вас код кривой (Питон понятное дело медленный, но кривой код ролляет сильнее)
Не знаю, что тут делать, типичная medium задача для литкода.
Не смотрел твоё решение, делал своё, вывод чуть другой, чем надо
https://ideone.com/BClUU0
>Success#stdin #stdout 0.33s 10696KB
Я больше анонам притащил посмотреть чтобы новички (как я) лишний раз удивились от того, насколько время выполнения кода зависит от скилла того, кто этот код пишет.
И разница в скорости выполнения кривого и скилованного кода выше разницы в скорости выполнения кода между Питоном и С++ например.
Хотя, разумеется, скилованный плюсовик напишет более быстрый код, чем примерно настолько же скилованный питонист.
Ну это всё-таки классическая алгоритмическая задача под литкод. Подозреваю, что оттуда примерно.
Просто при кодировании тоже элементарно налажать. Классика, это проверки вроде
some_value in list
где список довольно большой, и всё это в цикле. Что работает медленно, элементарное преобразование в множество-словарь, и код разгоняется. Куча других таких моментов.
Главная особенность в том, что в питоне словари-списки это родные структуры, а как раз они позволяют оптимизации делать.
В плюсах, конечно, тоже словари есть, но уже в Си нет, надо подключать что-то со стороны. А вот пойди сделай это решение >>52507 без словарей. Сдохнешь. Скорее народ приучается писать уровнем ниже и не делает оптимальных решений.
Это вот как раз почему круто писать на языках высокого уровня. Тысячи трюков есть, которые позволяют компактно писать и при этом быстро.
Само собой компилируемый код обычно можно более быстрым сделать. JIT не всегда поможет, вот в этом случае numba не помогает, поскольку оптимизировать построение словарей не умеет.
Но и в целом питон не для байтоёбства, где надо короткие циклы очень быстрыми делать. Обычно питон для сложной логики больше.
Спасибо, бро!
Ты серьезно просто вбросил стену кода без табуляции вот так сюда на двач? Думаешь кто-то прочитал его?
Номер телефона при регистрации.. Нет, спасибо
>Python входит в 10 самых востребованных языков программирования
Кекнул с этого. Но вообще курс как обычно говно. Первый урок - что такое переменная, рассказываем 1 час, практикуемся 3 часа. Урок два - что такое луп, 1 час теории, 3 практики, 3й урок - что такое функция, час и три, урок 4 - пишем бота для телеги ололо, 1 час теории и 3 практики.
Ну еба-боба, хорошо он хоть без nltk, склерна и пайторча хотя бы, хотя там в функциях было "использовать сторонние библиотеки". И это все в браузерном иде, ммм, вкуснота.
Кабанчики конечно красиво страницу сделали.
Можете посоветовать курс или книгу, которыми было бы удобно пользоваться на работе в свободный часик другой?
Что-то вроде "сперва объясняется конструкция языка, а потом даетсче пару базовых упражнений на тему".
По жс такого говна навалом нахлдил, а на питончике не могу найти.
Сейчас байт питона читаю.
в интернете такое есть типа питотнтютора
Парни, кто шарит в Джанго, почему django ORM добавляет моим query двойные кавычки? Например Chat.objects.filter(updatedts__gt=0).values_list('id', flat=True) превращается в:
SELECT "xer_service.chat"."id" FROM "xer_service.chat" WHERE "xer_service.chat"."updatedts" > 0
Из-за этого мои запросы в postgres не проходят, приходится сырые query использовать. Как это фиксится?
Как в pycharm изменить цвет на скроллбаре выделенной переменной, например у меня сейчас зеленым выделены места появления
Предлагаешь вкатышам сразу на микроконтроллерах байты ебать?
>да ты должен табуляцию проставлять мысленно уже даже статьям в газетах
иди-ка ты хуйца сосни. я ничего тебе не должен, за свой говнокод и фейл в оформлении в ответе только ты.
Так этот курс чисто демо-версия. Вангую что там каждые полчаса будут говорить в духе "Ну вот мы сейчас эту тему быстро и неполно рассмотрим, но если вам интересно, то у нас тут есть курс за 19.999..."
и пару чёрных хуйцов под сраку.
Но это не я запостил кусок кода
> в смысле английские? на каком же языке он вещает?
На английском. Просто я на слух плохо воспринимаю английский, а вот с субтитрами нормально, поэтому для меня это важно
На заметку хозяйке, на орелли есть триал на 10 дней, с доступом ко всем книгам. Там есть практически все. Через 10 дней регаешь новую почту и поехал там даже мыло потверждать не надо
Там ссаный онлайн, а не сочные пдфки.
xer_service - название схемы
chat - название таблицы
Вероятно именно из-за такой нотации вылезают ошибки, но как это фиксить? Проект не мой, я могу просто и без задней мысли поменять нейминги в БД
Python for kids реально фо кидс?
Друг, который вообще ничего не знает о информатике, попросил что-нибудь для развития кругозора и "сменить тип деятельности".
Спасибо.
В твоем кейсе еще можно создать словарь вида {'янв': '01'} и возвращать по значению из него, так будет красивее.
Да и можно погуглить, нет ли в стандартных библиотеках готового переводчика текста в дату, что-то мне подсказывает, что есть.
мимо великий программист
>Ух, кайфовая задачка, в ЕГЭ по информатике есть она, те кто сдавали должны сделать. А те кто не сдавал помогу, задачка в целом не сложная, главное не запутаться.
Пришел на бесплатный курс по Питону, а тебя там ЕГЭ пичкуют. Ебанись.
>В твоем кейсе еще можно создать словарь вида {'янв': '01'} и возвращать по значению из него, так будет красивее.
Не будет, код создания словаря будет таким же страшным, как простыня из if-ов.
Словарь разумен, когда:
1) у тебя действие в нагруженном цикле, ты его создаёшь один раз вне цикла.
2) он прилетает откуда-то снаружи, определён в другом месте, может вообще во внешнем конфиге или БД. Так ты сможешь править месяцы, добавлять варианты, не залезая в код, что очень правильно. Например захочешь добавить в январь-февраль-март січень-лютий-березень соответственно.
только словари, никакой ябучей колбасы из ифов
сичень? ты иностранец?
Сейчас бы не учить ангельский, вкатываясь в ИТ.. Ты видел документацию на немецком - это лютейший ад?
Точно в кавычках
Пускал эти query в psql утилите - без кавычек все работает. Проблема в том что кавычки должны быть заюзаны вот так: "xer_service"."chat"."id" - то есть 3 компоненты выделено (название схемы, название таблицы и название колонки), а не 2 как у меня
бля как же я ебал эту джангу, просто ебанутый фреймворк
> анкул
Учи, я в прошлом году за лето прошел всего красного мерфи, потом бросил и в этом году примерно в апреле уже продолжил заниматься потихоньку, но с синим мерфи, параллельно на ютубе отдельно темы какие-то смотрел. Начал Гарри Поттера читать и кое какую техническую литературу. Гарри Поттера уже страниц 80 прочитал и всякой технической литературы наверное наберется страниц 200.
Недавно пробовал с субтитрами Фореса Гампа смореть, было нормально, хотя конечно держал переводчик под рукой и постоянно на паузу ставил чтобы вникнуть в субтитры. Сейчас в оригинале портал первый прошел и второй начал проходить, тут уже потруднее, но процентов на 65 я все понимаю, кое что просто из-за усталости уже пропускаю и довольствуюсь тем, что хотя бы отдаленно понял смысл, и не лезу в словарь
Так что учи ангельский
Нашел решение:
В db_table надо высрать двойные экранированные кавычки должным образом, чтобы query разрешались как надо
sqlalchemy намного пизже будет
пришлось переводить промтом из английского на немецкий.
проще на русский
>>54065
довольно много... а что?
>>54269
ну вообще я знаю английский на том уровне, чтобы понимать смысл написанного или например слова в фильме на 70-80%
Но это за счет того только что я смотрел фильмы на английском еще с гнусавым переводом володарского и играл в игры без перевода озвучки, с сабами.
Естественно что нормально я понимаю обычную разговорную речь, то есть типа ват ю дуинг, коксакер, ват зе фак, бастард и т.п.
А вот в документации там специфические слова, которые в обычной речи не используются например, приходится смотреть перевод \. Я даже технический английский по тачкам типа драйветрейн, гирбокс, драйвешафт, строке и т.п. знаю лучше чем спицифику типа СИБЛИНГС блядь. файнд некст сиблинг, чего блядь?
Потому что немецкий и французский учили в школах активно еще при СССР. После развала уже английский стал гораздо популярнее (но это субъективно, может где статистика есть).
>я понимаю обычную разговорную речь, то есть типа ват ю дуинг, коксакер, ват зе фак, бастард и т.п.
А вот в документации там специфические слова, которые в обычной речи не используются
Пиздец, хомо советикус in real life
Я б поостерегся такое существо даже близко к любому Белому Человеку подпускать
Если можно не писать этот дополнительный инит и ничего не поменяется.
>коксакер, ват зе фак, бастард
Никто кроме маргиналов не использует эти слова в повседневной речи.
Но в классе Prop же есть конструктор, и скорее всего он что-то делает? Например инициализирует какие-то объекты внутренние. Для этого ты его и вызываешь.
Ну да, всё так. Просто, если я не прописываю ничего дополнительного, конструктор в Prop всё делает так же, как и с этой прописью
>с гнусавым переводом володарского
Ты дед
>А вот в документации там специфические слова
Как раз они очень нужны, даже если тебе документацию кто-то переведёт, то названия функций-классов, докстринги вряд ли.
Мне кажется обычно всё-таки проблема со сложными оборотами и с тем, чтобы самому мало-мальски грамотно что-то изложить.
В данном случая тут явно просто демонстрация ООП и переопределения конструктора. Переопределённый только печатает сообщение, и всё. Естественно можно целиком выкинуть весь __init__, но вызов super().__init__() как раз оправдан.
Просто учебная литература с упрощёнными примерами.
Может пример некорректный, у родительского класса есть инит, в дочернем ты его переписываешь, но тебе надо добавить всего одну строку и поэтому ты пишешь строку, а потом вызываешь инит родительского класса
Мне предлагали кстати и французский тоже учить!
Кто ставил на Debian/Ubuntu 20/Mint 20 питон через pyenv? Если да, то не решали ли вы проблемы с libffi.so.7? Все нужные пакеты стоят, эта либа есть в /root/lib/, но ни одна версия питона поставленная через pyenv не хочет работать совершенно: init.py выдает "ImportError: libffi.so.7: cannot open shared object file: No such file or directory"
Сейчас меня зовут Big Daddy
Именно, даже скорее есть дом, у дома есть метод заселить_хохлов, а ты можешь добавить в этот метод что перед заселением еще вызывется метод отключить_газ
Ну ты жесткий путин ваще!
Спасибо
Вы видите копию треда, сохраненную 30 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.