Вы видите копию треда, сохраненную 22 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1861583 (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
А 0
Б 0
С 0
Значения в столбце "Атр1" уникальные. Нужную мне строку получаю обычным кодом:
df[df['Атр1'] == Б]['Атр2'], как присвоить этой ячейке значение вместо нуля.
Качаю вебм и вайпаю треды.
Дла варзон треда в /brg/.
Пытаюсь писать парсеры и ботов для торговли. Надоело все руками смотреть
Логика этих строк неправильная:
>while (simple(e) != 0) and (gcd(phi, e) != 1):
>____e+= 1
Ты хочешь найти простое e,
(i) оно должно быть простое,
(ii) оно должно быть меньше φ
(iii) оно должно быть взаимно простое с φ;
Я кстати не понимаю, по идее iii + i означает, что φ не делится на i. Зачем так сложно тогда? Хотя по-моему в RSA не нужно, чтобы оно было простым, достаточно взаимной простоты с функцией Эйлера.
Но смотри на свой цикл. Пока число простое и не взаимно простое с φ, пробовать следующее число.
А тебе нужно нужно перебирать цикл до тех пор, пока у тебя число ИЛИ составное, ИЛИ не взаимо простое с φ.
Ошибка в логики поиска.
Видимо были, раз переписывание помогло.
Вообще, использовать табы плохая идея, с ними много проблем. Все библиотеки, примеры и фреймворки используют пробелы, в стандарте 4 пробела на отступ.
Намаишься с этими табами.
С детства табы ненавижу, как и всех, кто придумал логику на них строить - со времён makefile для сишечки.
>simple
>простое
Хах, даже в голову не пришло, что речь про простые числа, когда смотрел на код, несмотря на наличие gcd.
Что делают программы?
у меня в условии - пока число НЕ простое и НЕ взаимно простое с фи
>пока у тебя число ИЛИ составное, ИЛИ не взаимо простое с φ
нужно же юзать И нет? допустим фи = 110 а е = 11, получается е не составное, но и не взаимно простое с фи. в таком случае твой цикл прервется, хотя е будет подобран неверно
> Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/
кто-нибудь смотрел? показалось, что она покороче (или я слепой просто). Если есть цисп под питон, то топ же, а то в свое времяз забросил из-за схемы как раз
Пролистал быстренько. Не понятно, сначала много примитивной воды, ну совсем примитива, и где-то внутри даётся при этом что-то из теории, про функции высшего порядка и т.п., что уже совсем не вода, если это не изучал.
Про СИКП ничего не знаю, но по идее там большой упор на теорию компиляторов и т.п. должен идти. Здесь этого нет, при этом в третьей и четвёртой главе идёт разбор Scheme, примеры на ней и т.п. Что не нравится, хотелось бы уж что-нибудь чисто про питон.
В конце про конкурентное программирование, но как-то в устаревшем ключе, в стиле мютексов, хотя сейчас больше принято всё с упором на очереди делать и этот принцип проектирования, чем прямые блокировки исполнения. Об asyncio, конечно, ни слова, всё-таки старый текст судя по всему.
Не знаю, что-то там содержательное есть в части алгоритмов и некой теории вокруг функций, но прямо чем-то must read я бы этот материал не назвал. Но в целом там есть, что почитать, если именно в контексте теории программирования и на питона.
А так я бы сам не прочь что-нибудь умное почитать.
> А так я бы сам не прочь что-нибудь умное почитать.
Python. К вершинам мастерства - Лучано Рамальо
Но это конечно тупо пиздец, я даже хихикнул с такого маневра.
Ребят, подскажите пожалуйста.
для чего? Что дата саенсите и зачем?
Тебе нужен дедик. Ну либо ооочень грамотная настройка. Очевидно, ты не шаришь, так что они спалят. Вопрос, не похуй ли им?
Тебе сказано в задании, переведи formulation которые вы изучали в предыдущих лекциях в код. Это жеж просто.
На лекции мы изучали, что левый сенсор отвечает за правое колесо, а правый - за левый. Чем ближе сенсор к препятствию, тем пропорционально меньше скорость у соответствующего колеса. Но я тупой и не могу это сделать в питоне. Готов заплатить! но из вчерашних 400 рублей осталось 318, но я отдам их вам
Быстрее 1С
Если полезный то хз, если просто что бы пощупать то можно что нибудь типа такого
Есть веб форма, в которую заносятся значения, по значению генерируется отчет в виде пдф, который может скачать пользователь. Нужно написать приложение разделенное на два сервиса, веб морду и генератор пдф, общаться должны rpc на реббите, потенциально отчетов может быть очень много и сервис генерации ПДФок поддерживал создание какого угодно числа инстансов.
>Чем ближе сенсор к препятствию, тем пропорционально меньше скорость у соответствующего колеса.
#пиздец ты тупой
StartDiff=abs(SensorXYposition - TargetXYposition)
StartSpeed = 10
цикл движения в сторону сенсора
____выясняем где находится цель
____обновляем свои координаты в нужном направлении плюсуя к ним скорость
____NowDiff=abs(SensorXYposition - TargetXYposition)
____NowSpeed = (StartSpeed x NowDiff) / StartDiff
Спасибо, вроде понял. Еще вопрос, как с помощью matplotlib нарисовать препятствие с радиусом 3? Нашел только как точку ставить.
Тебе для веб вариант или не для веб? Для веб много классических.
Пример на пощупать из бекенда, проверка на доступность каких-то хостов с помощью ping, или сайтов через http запросы.
Соответственно у тебя один сервис генерит задачи и суёт их в очередь, другой сервис, пул воркеров, делает работу и записывает отчёт в другую очередь, третий сервис (или он же первый) делает отчёт, может быть дополнительные задания даёт.
Какой-то кек, что даже лол.
Спасибо, анон, так просто все.
ReadTimeout: HTTPSConnectionPool
То есть как будто ответа не было вовсе и таймаут закончился. Это может быть связано с тем что я запустил ngrok через http а Хероку на https? Или это тут ни при чем?
По желанию. Очень много информации мозг тупо не успевает обрабатывать и запоминать. 2 часа в день с головой достаточно. Со временем, когда у тебя будет больше опыта, ты будешь информацию уже легче воспринимать, потому что будет база.
Я как-то 2 недели каждый день по 10-12 часов учил все, в итоге по туторам, книжкам, доке я могу все сделать, а сам че-то написать не могу. Взял передышку на месяц и через месяц когда мозг дефрагментировал всю информацию, пришло понимание всего, что учил.
И больше пиши разного кода, читай разный код. Хорошо помогает взять какую-то либу, которую написал какой-то уебан очень плохо и переписать ее под себя, например, по пути дебажа его код и смотреть его реализацию, используя знания, которые ты получил, например при изучении паттернов проектирования.
temp.shape - (600, )
temp.shape - (300, ) для любого i in range(600)
Как превратить его в ndarray с shape = (600, 300)?
https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html
Пробовал? Также те, что в see also.
Простейший код.
url = r.choice(df[df['Pars] == 0]['Ref'])
html = get_html(url, driver)
В url пихает рандомную ссылку напротив которой есть 0. Все работает от 5 до 250 ссылок. Но периодически происходит такая ошибка.
Traceback (most recent call last):
File "C:\Projects\pd\lib\site-packages\pandas\core\indexes\base.py", line 2895, in get_loc
return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 1032, in pandas._libs.hashtable.Int64HashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 1039, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 22014
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:/Projects/pd/pars_PS_airs.py", line 27, in <module>
url = r.choice(df[df['Pars'] == 0]['Ref'])
File "C:\Program Files\Python\Python38\lib\random.py", line 291, in choice
return seq
File "C:\Projects\pd\lib\site-packages\pandas\core\series.py", line 882, in __getitem__
return self._get_value(key)
File "C:\Projects\pd\lib\site-packages\pandas\core\series.py", line 989, in _get_value
loc = self.index.get_loc(label)
File "C:\Projects\pd\lib\site-packages\pandas\core\indexes\base.py", line 2897, in get_loc
raise KeyError(key) from err
KeyError: 22014
KeyError постоянно разный. Что не так? Ведь это всего лишь код, который берет случайную переменную из столбца ДатаФрейма.
Простейший код.
url = r.choice(df[df['Pars] == 0]['Ref'])
html = get_html(url, driver)
В url пихает рандомную ссылку напротив которой есть 0. Все работает от 5 до 250 ссылок. Но периодически происходит такая ошибка.
Traceback (most recent call last):
File "C:\Projects\pd\lib\site-packages\pandas\core\indexes\base.py", line 2895, in get_loc
return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 1032, in pandas._libs.hashtable.Int64HashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 1039, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 22014
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:/Projects/pd/pars_PS_airs.py", line 27, in <module>
url = r.choice(df[df['Pars'] == 0]['Ref'])
File "C:\Program Files\Python\Python38\lib\random.py", line 291, in choice
return seq
File "C:\Projects\pd\lib\site-packages\pandas\core\series.py", line 882, in __getitem__
return self._get_value(key)
File "C:\Projects\pd\lib\site-packages\pandas\core\series.py", line 989, in _get_value
loc = self.index.get_loc(label)
File "C:\Projects\pd\lib\site-packages\pandas\core\indexes\base.py", line 2897, in get_loc
raise KeyError(key) from err
KeyError: 22014
KeyError постоянно разный. Что не так? Ведь это всего лишь код, который берет случайную переменную из столбца ДатаФрейма.
2 дня непрерывно, 1 день теория и микропрактика, 2 день код. Потом неделя отдыха и поновой. Я пришел к такому варианту как самому продуктивному на данный момент. Собственно в таком варианте я успеваю заниматься языками, другой работой и распиздяйством.
Тебя спалят на моменте, когда надо будет перечислить зп, если у тебя нет евросчета
>>67740
Я вот тоже не понял, каким образом анон собирается счёт себе делать для зарплаты. Для работодателя перевести что-то в Россию отдельный гемор, в Европе без ВНЖ счёт открыть нельзя.
Работодателю может быть похер, где ты находишься физически, раз всё равно удалёнка, но вот эти моменты ни разу не похер.
Да там даже на уровне заключения договора вопросы должны возникнуть, обычно просят айдишку, если он сказал, что имеет гражданство/ПМЖ Евросоюза, ему только пукнуть на эту просьбу останется
Какой к черту "дебагинг", животное? Там таймаут на респонс истекает, сечешь? Ответ со стороннего апи вовсе не приходит
Не. Как раз не похуй. Менеджер сказал, что там следят потому что индусики сьебали в свои аулы с европейскими зп и не торопятся возвращяться. Ну им зп и пересчитали на местные.
>платить среднее по региону, а не за выполненную работу при том, что ее объем не изменился
Пидорахи какие-то
Поясни за дедик? Настройки впн нет на моей стороне потому что это их рабочая машина, там Cisco vpn он не конфигуруется никак.
Это как раз сделано. Я на знакомого оформил аккаунт, уже получал первую зп. Ему отдаю % на налоги.
А вот им как раз важно, чтобы я работал из Польши тупо. Хз почему, но такие правила. Я туда прилетал за ноутбуком. Потом улетел в Германию и сказал что оттуда поработаю немного. Сейчас я обратно в России. Но чувствую без впн спалят. Холп.
Ты как бабки собрался получать, дедик?
Потому что санкции, бро. Из РФ сейчас во многих компаниях запретили работать, в том числе и из оккупированных РФ территорий.
Я тоже удивился, но там компания с главным офисом в сша. Может оттуда идут эти правила.
Да это не только для россиян. Говорю же даже сами полячки из моей команды все вернулись из Испании. Может это с лицензиями или радонами связано, но их и индусов вернулись. Я слышал что это новые правила идущие из сша.
Погугли vpn cascading, может поможет
Попробуй спросить в софтаче в обходе блокировок треде.
2 - инструкция
3 - решение
Вопрос: правильно ли я описываю действие для последней клетки? Мне почему-то кажется, что можно сделать проще, а не то же самое прописывать для неё одной.
Нормально ли использовать not или надо по-другому?
ни разу неочевидно
очевидно было бы, если бы e оставалось таким, каким было, или захватывало бы исключение
Вообще вызывать подобные переменные вне контекста их объявление - bad practice, так делать не надо. Все равно что обращаться к i за пределеами цикла for где итерирование шло по i
Как в пистоне создать несколько пустых объектов за раз?
По типу такого:
a, b, c, d = ''
e, f, g, h = []
Имени внутри конструкции трай кетч присваивается ссылка на новый объект, затем, при выходе из конструкции, имя и и объект уничтожаются. Всё верно
Откуда таска, анончик?
Понял, спасибо.
Жалко, конечно, что нельзя ещё минималистичнее, но всё равно в одну строчку уже хорошо.
Если тебе надо дохрена таких переменных, то стоит задуматься о правильности твоего подхода и использовать вместо этого словарь
А как какать читать длинные опции, подаваемые в скрипт?
getopt читает, я так понял, только односимвольные, а если мне нужны опции --cocksucking или вообще что-то вроде --version==5.2?
Операции со словарем простые и нативные по своей сути
Прикольно. Это только на дваче сработает или на других вакабах тоже?
Есть идеи, что ещё можно для борды полезного реализовать?
Скрипт под двач, но сам класс парсера должен работать везде, где такая же разметка
> Есть идеи, что ещё можно для борды полезного реализовать?
скрипт, который будет фиксить соотношение сторон картинок в каталоге
Что-то не вижу в этом ничего полезного - ты в каталог заходишь на пару секунд. Это скорее к верстателям двача или создателям кастомных цсс
Линкуются
a = ""
b = ""
id(a) == id(b)
> True
Но строки иммутабельны, ты когда делаешь
a += "symbol"
то не меняется строка "", а создаётся где-то в другом месте новая. Поэтому сбоя нет.
>Пиздец. Хорошо хоть в питоне
На самом деле пиздеца нет, а очень разумное поведение, просто не очевидное.
Вот, например, код
my_list = ['x', 'y']
a, b, c, d = [my_list] 4
по логике просто очевидно, что тебе нужно именно размножить мутабельный объект my_list, соответственно очевидно, что a,b,c,d будут эквивалентными
Почему в случае с [[]]4 должно быть иначе?
Но понятно что не очевидно, очень часто тут напарываются, как и в случае [] в качестве аргумента функции по-умолчанию.
А зачем может понадобиться 4 имени, которые привязаны к одному и тому же списку, даже когда он изменяется?:
Нашел, thx.
Как получать название выделенного окна в винде, когда питонопрограмма свёрнута?
Сейчас есть программа, которая получает название активного окна в Windows'e при нажатии Enter'a в питонопрограмме, но я хочу получать название активного окна пока питонопрограмма в фоне.
Как можно сделать цикл или забиндить клавиши, чтобы они работали, пока питонопрограмма не является активным окном
Код питонопрограммы: https://pastebin.com/1mZRgA6y
Если я правильно, тебе нужен бесконечный цикл while(True): , который содержит ожидание нажатия, триггерящее функцию взятия имени текущего активного окна. Затем запускаешь скрипт и всё - жамкаешь свой ентер, а скрипт считывает то, что нужно.
Дано: сервак с redhat, питон 2.6 (к сожалению, этого я не могу изменить) и вот такая АБСОЛЮТНО ЕБАНУТАЯ структура каталога (см. пикрил)
Что я хочу сделать?
В красных каталогах либо лежит лог и вавка, либо только лог. В случае, если есть лог и вавка, я хочу достать из лога длительность вавки (там она пишется), запросить длительность у самой вавки, сравнить их между собой, и ЕСЛИ числа не совпадут с допуском, скажем, в 5 секунд, я хочу получить полный путь до красной папки.
Проблема в том, что вавка должна ПОСЛЕДНИЙ РАЗ МЕНЯТЬСЯ не позже, чем 14 дней назад. Дата создания и дата изменения (os.path.getmtime()) могут очень сильно не совпадать, поэтому просто отсечь по родительским каталогам не получится.
Так вот, как мне лучше реализовать сканирование этой ебанутой директории? Сначала я хотел сделать os.walk('/data'), ждать, когда len(dir) станет равна нулю, тогда это будет означать, что я дошел до содержимого красных папок. Но чет говно вышло, да и медленно, плюс, меня накормили говном за os.walk()
Теперь говорят, что надо делать через os.scandir(), но чет я не понимаю, как здесь:
1. Брать только те файлы, которые изменялись не позднее 14 дней
2& Как понять, что я дошел до конца, где уже вавки лежат с логом?
Примите во внимание, что каталог дохуя большой, папок просто ебануться
Подскажите, плес :з
да, забыл добавить — указанная структура у всех папок на одном уровне иерархии, для простоты восприятия не дублировал
в чём твоя мотивация, почему ты задаешь вопрос здесь, а не на SO>?
>Как понять, что я дошел до конца, где уже вавки лежат с логом?
Почему ты просто не можешь считать уровни вложенности?
> scandir
Его же нет во 2 питоне.
x: int = "3.14"
Возможно тебе лучше глянуть на модуль glob, он для поиска файлов по шаблону, есть в 2, и os.stat, с помощью которой ты можешь узнать дату изменения файла.
Ещё вариант, вместо glog запусть либо субпроцесс с командой find
там ты можешь опции указать,
find . -mtime -14
это найти все файлы, модифицированные последние 14 дней
-name ".wav" (звезду добавить, двач режет) найти все файлы по шаблону
ну или на вход скрипта сразу подать вывод find, возможно это тоже вариант
python script.py https://2ch.hk/pr/res/1867362.html (М)
OR
python script.py https://2ch.hk/pr/res/1867362.html#1869046 (М)
- Исправлена проблема с парсингом когда есть только открывающий тег, без закрывающего (типо <br>)
- Добавлена возможность указывать ссылку на любой пост, а не только оп-пост
нужно в общем инициировать энное количество нажатий в телеге, чтобы ускорить рассылку объяв по группам, нужно в 1 скрипт запихнуть рассылку текста с разметкой по всем группам на которые юзер подписан
я даже закину вам на пивчан и рыбу если бот или скрипт сработает
Я не знаю так в вакансии написано куда меня позвали. "Разработка приложений с микросервисной архитектурой на Python". Я представляю что такое микросервисы и даже совсем чуток нюхал докер. Не знаю, что еще нужно знать хотя бы на уровне "представляю о чем речь идет"
Вот тебе пример:
Если тебе нужно, чтобы у тебя программа что-то считывала, например, команды для змейки в игре, тебе нужен бесконечный цикл, который без задержки или с дискретностью считывает какое-то условие или инпут:
В данном случае дискретность(задающаяся функций time.sleep(n) ) не нужна, так как нажатия нужно считывать мгновенно(как можно быстрее)
Спасибо, но это работает только когда окно программы активно. Как заставить её работать, когда окно свёрнуто?
Микросервисы это сервисы из который состоит твоя апликуха например. У тебя сложное и большое приложение Шлюха. Ее отдельные сервисы (может быть отдельный сервер, может быть внутренний сервис типа календаря или планера) это сосать, брать, дрочить и печь пироги. Все отдельные друг от друга сервисы, работают по вызовам. Пользователь говорит Шлюхе - сосать. Подрывается сервис сосать и начинает выполнять и тд. Там есть парочка главных сервисов типа Кора и админа соответсвенно.
>я даже закину вам на пивчан и рыбу если бот или скрипт сработает
Как щедро с твоей стороны. И ТЗ такое подробное. Думаю, мы можем скинуться всем тредом и закинуть тебе за щеку. Как тебе предложение?
и кст такое решение работает:
#labName - это строка, на которую выводится текст
def Cycle():
tempWindowName = win32gui.GetWindowText(win32gui.GetForegroundWindow())
labName['text'] = tempWindowName
root.title = tempWindowName
root.after(1000,Cycle)
> root.after(1000,Cycle)
решительно не понимаю данную конструкцию
есть только предположение:
root - основное окно
after(1000 - после 1000 мс
Cycle - должно выполнить функцию Cycle
сделаю за 4к
>tempWindowName = win32gui.GetWindowText(win32gui.GetForegroundWindow())
>labName['text'] = tempWindowName
>root.title = tempWindowName
Это заменяется на одну строчку
root.title = win32gui.GetWindowText(win32gui.GetForegroundWindow())
точняк. не совсем так, но действительно
labName['text'] = win32gui.GetWindowText(win32gui.GetForegroundWindow())
впрочем, вопрос остаётся открытым, как взаимодействовать со свёрнутой программой?
Я не эксперт в модуле вин32гуй, и чето впадлу его сейчас ставить, но судя по названии функции, она и не будет захватывать свёрнутое окно, а только активное(на переднем плане)
Кури доки модуля и ищи нужную тебе функцию
GetForegroundWindow()
Я про неё, она, видимо, захватывает активное окно
GetWindowText()
Эта берёт текст из активного окна
Чтобы декорировать свой код чужим, лол.
Посмотри как тот же фласк работает.
https://flask.palletsprojects.com/en/1.1.x/quickstart/#quickstart
Я вообще не представляю что там у них, вот и думаю какие абстрактные вопросы в вакууме могут задать?
>>69114
Да я понимаю что такое микросервисы, независимые по факту программы, которые друг с другом общаются по апиhttp реквесты или типа того Просто не понимаю что перед собесом почитать или подтянуть, он завтра будет вот и задумался
reduce и либа operator.
Лучше погугли про польскую нотацию, прежде чем пилить калькулятор
Юзай LeetCode, там удобнее в этом плане
>Просто не понимаю что перед собесом почитать или подтянуть, он завтра будет вот и задумался
Да расслабься. Ты не на экзамен идёшь, где препод оценивает твои знания. Собеседование это беседа. Если ты будешь относиться, как к экзамену, это почувствуют и тебе откажут скорее всего, если тебя именно на работу зовут, а не на стажировку.
>Ты не на экзамен идёшь
А почитаешь мы вам перезвоним тред, так складывается впечатление, что именно как к экзаменам все относятся, включая работодателей.
PyCharm заебал. Я пришёл вкатываться в кодинг, а не вкатываться в решение десятой ошибки "библиотека не может быть установлена"
пук
ну блядь почему так всрато то?
PyCharm несколько часов моего потраченного времени
Visual Studio - установка библиотеки в ОДНО нажатие
Хочу запилить генератор бугуртопаст на рандоме из предзаписанных строчек бугурта, разместить его на вебсайте, чтобы можно было тыкнуть кнопку "Побугуртить" и получить рандомно сгенеренный бугурт. Задача изи, но я совсем новичок, и у меня есть затруднения с тем, как это реализовать.
Список строчек для бугурта - каждую из них хранить в отдельных переменных?
Полагаю, для рандомизации надо юзать модуль random - но как сделать, чтобы строчки не повторялись в одном бугурте?
Как сделать вызов этого питонового скрипта на вебстраничке и вернуть результат в хтмл? У меня есть опыт поднятия простеньких сайтов с пижженным жс на нжинксе, но как это сделать с питоном?
ns t,fkj ,s pfdfkbk nj
я еще больше новичок, но мои советы
чтобы не повторялись фразы - используй массивы
чтобы всё работало онлайн - используй телеграмм бот
> используй массивы
или последовательность: 1, бугурт, 1, батрудин, итд
и каждый раз, когда бугурт использовался в бредогенераторе добавляй к предыдущему числу, скажем, единицу
и сделай проверку, если перед бугуртом стоит 2, то не использовать этот бугурт
Такблядь, почему как только я решил уходить с этой параши, она заработала?
устанавливаешь anaconda > создаешь среду в пайчарм или навигатор> выбераешь нужною версию(желательно 3.7)> вебераешь среду через консоль прописываю команду "conda activate имясреды" > устанавливаешь библиотеку на нее через conda желательно, pip также доступен
табуляция если однопоточно, многопоточность можно включить в numba, в питоне она не доступна из-за GIL
не делай моих ошибок, учись последовательно. От простого к сложному. Сначала сделай бредогенератор, а потом импортируй его в интернет
Утешаю себя мыслью, что на подобных курсах ничему толком не учат и все эти вкатуны завалятся на первом же вопросе про синтаксис.
лол, эдакий миниунивер, есть ли курсы дольше?
хотел передавать данные через мобильник на ардуино, обрабатывать текстовые массивы, записывать их в энергонезависимую память устройства, ну и работать одновременно с 4 модулями
2 месяца буксования на месте
потом решил начать с малого и докидывать функции по мере готовности предыдущих
ичсх через месяц был рабочий прототип, а через 3 месяца я долечил последний баг
Не уверен, но скорее всего х2 от текущей зарплаты. Я в перезвони-треде прочитал.
чтобы достать первый элемент по оси 0 нужно просто прописать:
import numpy as np
somearray = np.ones((10,10))
print(somearray[0,:])
Без цикла невозможно, в силу того, как устроены списки и списки списков. В том или ином виде, может неявно, но список будет.
numpy тебе не поможет, если у тебя был список списков, а не какой-то объект.
Подсписок - это самостоятельный список, объект, который где-то лежит по произвольному адресу. Внешний список о нём ничего не знает вообще. Невозможно без обхода получить те данные, которые тебе нужны.
Можно через зип извратиться, но будет не так наглядно.
Да и какой особый смысл избегать циклов? Разве что чтобы не плодить вложенности и дополнительные переменные, компрехенсота это решает.
хуя, витька блуд
А почему решает? Разве цикл, оформленный в виде компрехенса или лямбды - это не точно такой же цикл, просто написанный изъебисто, чтобы тебе больше платили и ставили лайки в кодварс?
Для генерации спискоты в цикле надо заводить отдельную переменную и аппендить.
С вложенностью очевидно - если тебе надо несколько циклов и условий, будет пиздец портянка, а так аккуратный читабельный однострочник.
Можно сделать на жаваскрипте (пять строчек) прям в браузере и захостить на гитхабе, бэк и нжинкс и питон не нужен для этого
>Разве цикл, оформленный в виде компрехенса или лямбды - это не точно такой же цикл
Что-то из этого будет быстрее, что-то медленнее.
Я, конечно, могу написать
print(f'{some_variable:.15f}'), но лицезреть у десятимилионной дроби ещё столько же нулей после последнего знака, сколько перед ним - не айс.
А если ничего не писать - то будет выводиться 0, ибо значимое число идёт в 7 или даже 8 знаке после запятой.
Можно как-то это решить?
> дроби отображались именно в том виде, в котором они есть
ух щас тебя накормят теорией
твои 0.000001 нечитаемые становятся с шести знаков, для такого придумали саентифик нотейшон
"{:g}".format(foo)
чтобы данные передать в си и обратно вернуть интерпретатору притона придётся обмазаться ситайпами
как альтернатива (такая себе) сишку сконпелять и запускать через subprocess а данные передавать через пайпы
ещё одна (такая себе) альтернатива - приделать к сишному коду веб сервис и http-реквестами с жсонами тренькать (ну или обычным tcp сокетом)
Возможно тебе нужно в виде экспоненты выводить
>>> c = 0.0000000000000000000123456789
>>> print("{:.6e}".format(c))
1.234568e-20
Именно так, как хочешь ты, никак, если только свою функцию не реализовать. Слишком уж логика мудрёная того, чего ты хочешь.
Но твоя логика не очень осмысленна, считать на экране, там 20 нулей или 21 перед цифрой тоже не очень удобно.
встречный вопрос
сколько будет [2] + [2]
и сколько будет numpy.array([2]) + numpy.array([2])
и что будет
bar = numpy.array([1,2,3])
foo = bar[:]
foo[0] = -1
print(bar)
>сколько будет [2] + [2]
Это очевидно
>numpy
А это внешний модуль, не относящийся к стандартной библиотеке питона. Его логика переопределена под его конкретные задачи, из соображений, что вот в тех задачах так лучше.
То есть неочевидность в данном случае ни разу не проблема языка.
тут все очевидно
>сколько будет [2] + [2]
[2, 2]. В стандартном питоне списки соединяются вместе, поскольку это удобно для макакинга.
>и сколько будет numpy.array([2]) + numpy.array([2])
[4]. Это сделали, чтобы было удобнее для датасаенса - для сложения векторов и матриц.
>и что будет
>bar = numpy.array([1,2,3])
>foo = bar[:]
>foo[0] = -1
>print(bar)
numpy.array([1,2,3])
Срезы из Numpy массивов не копируются по очевидным причинам. Поэтому будет [-1, 2, 3].
мими дата саентист
>не копируются по очевидным причинам
Не очевидны со стороны.
Как не очевидно поведение:
>>> numpy.array([1000])+numpy.array([1, 2])
array([1001, 1002])
>>> numpy.array([1000, 2000])+numpy.array([1, 2])
array([1001, 2002])
>>> numpy.array([1000, 2000])+numpy.array([1, 2, 3, 4])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (2,) (4,)
То есть очень много магии, нужно быть специалистом по numpy, чтобы в ней понимать, обычному спецу по питону код не очевиден совсем.
Если кто писал подобное или решал их, какие могут быть маргинальные случаи, которые код мог не покрыть?
По условиям, комплексных абсорбирующих штатов нет, все единичные. Всегда есть хоть один штат и на него его путь 100%.
Я просто не понимаю уже что делаю не так. Хоть заново все пиши. Я перепроверил вручную штук 20 тестов - все без толку. Всё правильно и совпадает с ручным решением.
Должен быть какой-то пограничный случай, который я упускаю. Но и матрицы минимального и максимального размера, и с одним поглощающим штатом, и с одним транзиторным штатом, и с очень большими числами, и с крутилкой я проверил.
>Не очевидны со стороны.
>То есть очень много магии, нужно быть специалистом по numpy, чтобы в ней понимать, обычному спецу по питону код не очевиден совсем.
Просто Numpy заточен под математику и определенные предметные области. Для людей, которые в них разбираются, он интуитивен.
Попробуй генерацию текста с помощью random walk, текст выходит гораздо более связанный и звучит почти осмысленно.
Помню как угорал с речей Трампа, написанных таким скриптом.
numpy.array([1000])+numpy.array([1, 2]) == numpy.array([1, 2]) + 100
numpy.array([1000, 2000]).shape == numpy.array([1, 2]).shape
numpy.array([1000, 2000]).shape != numpy.array([1, 2, 3, 4]).shape
Очевидно, потому что это векторные операции. Вектор и число можно сложить, можно сложить два вектора одной размерности, но складывать два вектора разной - это все равно что складывать прямую и куб. Лишено смысла.
Это не нампай, это банальная линейная алгебра.
Мими сайнтист, посоветуй вкатуну книг по дате. Сейчас читаю Python for data analysis, и я там на первых страницах нашёл ответы на вопросы, на которые мне почему-то нормально никто не ответил из людей, которые заявляли себя таковыми.
Просто всякие курсы мне сразу не вкатывают, нравится последовательное изложение связанного материала от профи.
>посоветуй вкатуну книг
Можешь начать с "The Elements of Statistical Learning". Но без специализированной вышки (желательно ПхД) ты вкатишься максимум макакой на побегушках. В таком случае быстрее и проще пойти в веб.
Мне не интересен веб, мне интерсна статистика и автоматика сами по себе. Ещё в вузе заинтересовался с подачи препода.
Так что вкатываться или нет для меня вопрос не стоит, это для меня выбор жизненного пути скорее и чем я хочу заниматься.
Алсо, если ты дата сайнтист, то удели пару минут пожалуйста и подумай >>69692 над этим. Мне даётся матрица рандомных шагов. Моя задача - с использованием только стандартных библиотек найти её лимитирующую матрицу. Всё случаи которые мне пришли в голову, она находит. Мб сразу придёт в голову какие-то случаи которые легко упустить?
Это трайл от корпорации зла, поэтому я не могу искать ответы или писать задание полностью, они предупреждают что выкинут с тестирования если решат что я мухлюю, и судя по отзывам, такие случаи бывали реально.
П. С. Код проходит 9 тестов из 10. Значит я упустил какой-то пограничный или специфический случай, а не сам принцип.
Не, я уже проходил собесы до этого и даже прошёлв сбер, но там долгая история почему не получилось устроится, просто не хочется оказаться в ситуации, где мне говорят о чем-то, а я даже не знаю что это такое. Я думаю, что это чувствуется. Условно говорят мне, что работа будет связана с разверткой приложений на k8s и предполагается, что я как-то на это отреагирую, вопрос уточняющий задам типа в теме и понимаю о чем речь. А я такой пук среньк и мне потом перезвонят.
Лол, а хули там 15 месяцев делать? Чтобы прям совсем с нуля вкатиться времени нужно больше значительно. Если есть какая-то база, типа "делал лабу сложение матриц в универе", то значительно меньше.
КУДА ЭТА МРАЗЬ ДЕВАЕТ ДВОЙКУ И ЧЕТВЁРКУ?????????
Потому что ты на каждом этапе удаляешь куски a, пока цикл по нему шагает. Был у тебя в нулевой клетке 1, его отправили, удалили, теперь в нулевой клетке 2. Алгоритм делает шаг в первую клетку, там 3. Отправляет-удаляет, теперь в первой клетке 4, алгоритм шагает в следующую клетку, там 5.
2 и 4 остались в a, 1, 3, 5 переехали в sent_messages
Попробуй вместо
for x in a:
print(x)
Сделать
for i in range(0,4):
print(i)
print(a)
print[a]
Сделать и сразу абсолютно все поймешь
А, понял. Квадратные скобки приняли решение просто не отображаться. Короче твой список "а", а рядом в квадратных скобках i
Пиздец ваша анаконда параша. Помню ставил тензорфлоу чисто побаловаться, она мне сделала под него среду на 5 гигабайт. Я охуел, снёс это говно и забыл как страшный сон.
Ставить игрушки на 50+ гб = True
ставить среду разработки на которой предустановленны библиотеки на все случаи жизни = False
Да посыл не в этом. Какого чёрта энвайромент столько весит? Или туда вообще всё запихано, включая и КУДА-либы нужной версии? Я в этом сомневаюсь, потому что вряд ли у конды реализован механизм определения железа, скачивания и установки нужных либ и т.д.
>>69815
1) Я не играю в игры
2) Место на ССД ограничено и это было ударом по моей психике шизоида, который каждые 20 минут жмёт Win + E, чтобы глянуть, не съедено ли ещё лишних полгига, и если съедено, то кем и почему.
>>69816
Я понимаю, что там может столько весить, но согласись, нихуя не преемлимо не предупреждать пользователя перед началом установки хотя бы о том, сколько места понадобится.
Винда всё равно сожрёт, какие крохи ты там сэкономил. 5гб? 1-2 апдейта и WinXSis станет +5гб.
>WinXSis
В смысле WinSxS?
Не замечал увеличичения объёма системы после обновлений. Даже после апдейта до 2004. Очистка диска(включая системные файлы) + удаление Windows.cuckold
анаконда автоматически делает предустановку нужных библиотек устанавливаемой библиотеки и предупреждает о конфликтах версий, это нормально что тф мак столько весит.
ссд'шники быстро работают и быстро дохнут, так что я пользуюсь старыми добрыми hdd, старыми в обоих смыслах(уже 10+ лет работает).
ни одного так как я не покупал, у твердотельных накопителей записывающая способность ограничена сильнее чем в обычных винчестерах, и вся память это заряды которые нужно обновлять, а если его оставить без энергоснабжения то данные могут повредиться.
Есть poetry
>pipenv
>Windows is a first-class citizen, in our world.
>Install Pipenv Today!
>Нет инструкции по установке на винду
Хех, мда. А всё почему? Потому что там оговорок на полстраницы, и вообще иди документацию читай!
Что нужно учить помимо Python+Django? Или для этого лучше подойдёт пыха?
Anaconda хороший дистриб, но нахуя она мне если я не буду пользоваться почти ничем, что она поставляет?
> немного окунуться в жс
Это обязательно или просто для того, чтобы всё выглядело не вырвиглазно?
Ну да, поэтому на ссд ставят систему и программы, который ты один раз записал и мб потом обновляешь раз в несколько недель или месяцев. Я не понимаю, как можно таким образом израсходовать ресурс в несколько десятков терабайт перезаписи, ведь в таком случае ты в основном читаешь информацию, а не пишешь её.
кучу вкусных библиотек из коробки, собственную консоль, навигатор и юпитер
0 - ссд будет обновлять заряды в памяти в любом случае
1 - операционная система постоянно что то записывает и читает в фоне
2 - файл подкачки (его при желании можно отключить но все же)
террабайтные ссд рассчитаны 300 тб +-50тб, так же зависит от его многомерности.
мой диск d:
- hold my beer
И раз во сколько это происходит?
Правда говоря за долговечность и объем нужно платить скоростью и неравномерным износом.
Я прошу чисто математические методы, которые могут быть имплементированы в виде кода а не решение.
что значит по всему диску, епта наркоман, ты че на винде?
find /poshel/nahuy/data -mtime 14
надо несколько директорий - делаешь несколько файндов. если тебе хочется поиск по всей системе - ищи от корня /
Тебе надо научиться понимать, когда нужно делать полную копию объекта, которым манипулируешь, иначе у тебя в какой-то момент код будет мешать объекты, на которые ссылаются другие объекты и все полетит в пизду, а ты будешь бегать как я позавчера с горелой сракой и не понимать почему это не работает.
Обязательно почитай про идентичность объектов и запомни это накрепко.
Твой код подобен тому, как если бы ты считал шарики в пачке, вытаскивая нижний. Ты вытащил шарик 1, на его место упал шарик 2, но ты уже считаешь шарик под номером 2, который изначально был под номером 3. Так работает твой код. Тебе нужно сначала посчитать шарики, а потом удалить отсчитанные.
Хули его убеждать, пусть сидит себе на хдд.
>который каждые 20 минут жмёт Win + E, чтобы глянуть, не съедено ли ещё лишних полгига, и если съедено, то кем и почему
А мог бы прогу на питоне написать, которая за тебя это делает.
>Помню ставил тензорфлоу чисто побаловаться, она мне сделала под него среду на 5 гигабайт
Тензорфлоу со всеми зависимостями где-то столько и весит. Среда анаконды хранит установщики пакетов плюс сами пакеты, никакой магии тут нет. А еще ее можно чистить - гугли conda clean.
>>69832
>ссд'шники быстро работают и быстро дохнут
Так было десять лет назад. SSD уже давно обогнали по надежности HDD.
>>69885
>террабайтные ссд рассчитаны 300 тб +-50тб, так же зависит от его многомерности
Это до потери гарантии. Реально терабайтные SSD без проблем нарабатывают терабайты записи.
Да и 10 лет назад они надёжные были, надёжнее HDD. Дохнут реже, а когда дохнут, часто данные при этом доступны, просто писать новое не могут.
А вот HDD легко могут без предупреждения сдохнуть, причём так, что данные не вытащишь, только в специальное место нести и большие деньги платить.
Ресурс даже бытовых огромен, реально ведь перезаписывается очень небольшая часть. У HDD тоже ресурс есть, механика не вечная, причём работает эта механика и в режиме простоя, диск крутится, и в режиме активного чтения головка двигается туда-сюда.
Если надо использовать диск для очень активной записи, то есть специальные серверные варианты, ресурс которых сильно больше, в десятки-сотни и тысячи раз. Но они дороже, конечно же. Но зато их почти как оперативку можно использовать.
АВОТ ФЛЕШКИ! А ВЫ ЗНАЕТЕ ФЛЕШКИ!!! А ВОТ ФЛЕШКИ ТО ГОРЯТ! ВСЯ ИНФОРМАЦИЯ ТЕРЯЕТСЯ!!! ВООООТ!!! А НА ДИСКАХ НЕ ТЕРЯЕТСЯ ЗА CD БУДУЩЕЕ!!!
Потому что ты его назвал pyautogui и он сам из себя пытается импорт сделать.
>Раньше всё работало.
Судя по предыдущему сообщению, ты его pyaytogui называл
>Как фиксить?
Переименовать свой файл.
Переименовал, такая же херня
Понял, спасибо.
Например потому что я только что услышал про какой-то ahk, а про автоматизацию на python слышу постоянно.
Не оченб понятно. :/ можно что-то проще пожалуйста.
Find_elements_by_css(*element_name)
Для чего там звездочка? Ведь это элемент, а не элементы.
ну с таким фронтом, как на двачах и без жиес можно, достаточно бутстрапа.
В питоне означает операцию распаковки последовательности. Если element_name является например массивом, то в качестве аргументов функции будут переданы все элементы массива. Гугли про args, kwargs
Проебался с разметкой. Это я про звёздочку
https://www.codewars.com/kata/5b180e9fedaa564a7000009a
бля ну я старался, у меня не прошли рандомные тесты. То ли я не понял задание, то ли контриб - просто пидор. Сотреть в решения - толку нету, там будуд дрочить кто на что горазд. Я просто ебнул циклами со счетчиками.
https://www.codepile.net/pile/edxgv2nm решение
Глянтье плис кто решал эту кату, чяднт?
Да вроде те, я 100500 раз ставил то туда то сюда, в итоге - так, тк n уже имеет зачение. Пробовал удалять n, обнулять заново. В итоге, в ипутоне, и на кодворзе сошлолсь - так, кроме рандома.
Ну ты че. Во первых условия проверки счётчика убери из цикла. А то получается что только одна итерация у цикла. А во вторых проверки счётчика с длиной должны находиться на одном уровне.
А ещё нахуя тебе break после return?
Не знаю, что там у тебя проходило, n <= len(s)/2 будет почти в любом случае срабатывать с первого раза. Надо досрочно проверять только upper и делать upper, в конце возвращать lower.
В вс код так же - активированная для проекта среда будет сама активироваться в терминале при открытии проекта.
just sayin'
Как обстоят дела с заказами на Django? Или на АпВорке котируются другие области программирования на Питоне?
По моим ощущениям больше половины заказов это ебучие парсеры, остальное либо консультации либо долгосрочные проекты на +3 месяца
А что такое "парсер"? (я просто только-только вкатываюсь, может эту тему и надо изучать)
на питоне
Понятия не имею, там .dll подгружаются, а питончик обертка только, я боюсь туда глубже лезть. run_in_executor() меня полностью устроит, я просто не хочу копипастить эти методы с приставкой асинк при каждом изменении. Главное чтобы снаружи как бы асинк и норм.
Надо смотреть, то есть может быть и треды надо делать, с риском свалиться где-нибудь на thread-unsafe.
Полноценная асинхронность требует глубокой переработки кода. Хотя для многого есть асинхронные аналоги обычных синхронных функций, или там можно близко переписать.
Но просто "приписать асинк" в принципе не поможет, это так не работает совсем. Запросы всё равно останутся блокирующими синхронными.
Как мне определять, что что-то является ссылкой? Ведь может быть указана и без приставки http(s)://, например. И доменов в ней может быть несколько уровней.
Есть какая-нибудь либа, в которой есть метод isLink() или типа того?
Слышали, но только вот как на питоне сделать gui приложение в стиле электрона? Вот чтобы приложение само загружало одно headless окно браузера и через него работало?
>Полноценная асинхронность
Не нужна. Нужно колдунство, которое автоматически создаст асинхронные методы аналогичные синхронным. Плевать что у них внутри, лишь бы их можно было в loop пихать.
Но все равно спасибо за помощь.
Есть один комбобокс в котором пользователь выбирает цифру
Как мне сделать эту цифру глобальной?
Верхний вариант не работает https://www.geeksforgeeks.org/global-local-variables-python/
arduino_port = 10
def textTest():
print("Arduino is connected to", arduino_port)
Как из одной функции в другую кинуть переменную?
>>70971
Заработало:
def getText():
global arduino_port
arduino_port = 10
def textTest(self):
print("Arduino is connected to", arduino_port)
Что значит этот SELF?
Мог уже начать читать книгу, а ты тратишь время на никому не нужные огрызания. Так и останешься дебилом.
И зачем ты конструктивную беседу свел к такой хуйне?
Заебал. Если ты накопипастил не зная, что такое self, для чего это в питоне, то вот реально, иди в ньюфаг раздел, там тебе пояснят может даже я посяню. Там ещё нормально, здесь это уже ниже минимума до такого опускаться.
command = str.encode('1')
arduino.write(command)
time.sleep(1.5)
Вот что значит while 1?
В питон-треде. Предполагается, что ты хотя бы неделю попробовал книжки почитать по теме, прежде чем лезть с вопросами в тематический раздел.
Те, кто не приложил никаких сил, вообще никаких, чтобы разобраться, не достойны внимания и времени.
ага, хуй соси, мнение петуха очень важно нам
Автоматически не получится. Но надо смотреть, какие у тебя блокирующие синхронные сетевые вызовы сейчас используются.
Вообще неправильно так относиться к программированию. Надо понимать, что и как делает твой код, в любом случае надо.
И с асинхронностью надо разбираться, без неё сейчас никуда, если ты не хочешь на обочине оказаться. Особенно, если ты с сетями, внешними сервисами и внешними процессами работаешь.
>>70677
PySide и PyQt нужны чтобы работать с Qt, а в Qt есть QML - декларативный язык создания интерфейсов, это другая ветка гуи, параллельная обычным Qt виджетам.
https://doc.qt.io/qtforpython/tutorials/basictutorial/qml.html
https://doc.qt.io/qt-5/qmlapplications.html
https://wiki.qt.io/Getting_Started_Programming_with_QML/ru
Но и для обычных виджетов Qt есть возможность нарисовать интерфейс в QtDisigner, сохранить его в виде файла, а потом его просто его загрузить в своем коде. И такая же возможность есть для WxPython и GObject, обвязками для WxWidgets и GTK+ соответственно.
https://doc.qt.io/qt-5/qtdesigner-manual.html
https://www.tutorialspoint.com/wxpython/wxpython_gui_builder_tools.htm
https://glade.gnome.org/
Есть Kivy со своим декларативным языком интерфейса, он кроссплатформенный, но там больше под мобилки все заточено.
https://kivy.org
Если прям очень хочется работать с набором html/js/css, чтож, и это возможно. В составе и Qt, и WxWidgets, и GTK+ есть свои WebViewб которые рисуют веб-контент. Есть PyWebWiev, они стараются использовать существующий в ОС WebView. Есть Eel, они прям пишут, что позволяют делать simple Electron-like offline HTML/JS GUI apps. Есть Flexx, тоже используют отрисовку в браузере.
https://github.com/r0x0r/pywebview
https://github.com/samuelhwilliams/Eel
https://github.com/flexxui/flexx
(конкретно - имя пользователя)
>как сохранить величину, чтобы после перезапуска программы она сохранилась?
Записать в файл. Если таких настроек много, то используй JSON.
Опять ты! В петушиный угол, быстро и решительно
Чмонь, ты про огурец что-то слышал? https://wiki.python.org/moin/UsingPickle
Сейчас доделал задание с random walk, проблема в том, что решение с тз математики было изначально правильное, но дико медленное. Я прошёл все тесты только оптимизировав скорость вычислений.
Дико плаваю в данной теме, я не понимаю что будет продуктивнее, я не понимаю почему плохо создавать много объектов (да, они жрут память, но я понятия не имею сколько, может крохи) и пр.
Проблема в том, что я уже четвертую книгу по питону читаю, и нигде не видел разбора этой темы. Заранее спасибо если кто посоветует.
Похоже на костыль, какой смысл?
Я тут с Ардуино пришёл, у нас пока цикл не выполнится, код дальше работать не будет. Тут с таким решением код не встанет?
>ты про огурец что-то слышал
Он нужен когда нельзя сериализовать данные. Нахуя его использовать для сохранения простой конфигурации?
Смысл в условии?
Запустить бесконечный цикл. Он может быть прерван твоим действием или внутренним брейком.
Ну судя по тому что я вижу, а я вижу плохо, то при озвученных данных встанет намертво. Потому что внутри нету брейка. То есть прерывания цикла.
то есть всё как на C++ - пока цикл работает, всё стоит
смысл цикла из примера - максимально быстрая скорость отклика на какое-то событие
в реальном коде его использовать голым нельзя, а только пихать в какую-то функцию
и, как я опять же понял, его можно запустить с любым условием, например "while 10==10", но while True - это самый быстрый способ
Всё так?
>2 строки
json.dump(zalupa, open("zalupa.json", "w"))
zalupa = json.load(open("zalupa.json", "w"))
справедливо, тогда спасибо
Да. Можно запустить с любым объектом, который отдаёт True в виде значения. Просто 1 отдаёт это значение всегда.
Да, я так и подумал, что это кайнда тикток, который что-то измеряет, постоянно посылая сигнал, или генерирует дискретную волну.
В питоновском скрипте нельзя, он повесит скрипт намертво.
Скорее пришло с сишечки и других языков, где тру просто нет.
Вряд ли кто-то ебался так за скорость.
Не за что, анон.
Оно не работало быстрее, в ранних версиях Питончика boolean просто не было как класса.
Аноны, расскажите, какие программы вы писали чисто для себя, для решения каких-то личных задач?
у меня собственная скачивалка сериалов с торрентов и заодно предоставляет расписание, которое берется из tvmaze и фильтруется по моим нуждам
Что-то они с замерами накосячили
У меня этот скрипт без изменений, комп довольно старый, ноут при этом:
python2.7 tt.py
('while True: ', 0.5859780311584473)
('while 1: ', 0.4057488441467285)
python3.6 tt.py
while True: 0.6227456871420145
while 1: 0.6395597131922841
python3.7 tt.py
while True: 0.6898804837837815
while 1: 0.7296387189999223
python3.8 tt.py
while True: 0.6560212508775294
while 1: 0.6543496972881258
pypy3 --version
Python 3.5.3 (fdd60ed87e94, Apr 24 2018, 06:10:04)
[PyPy 6.0.0 with GCC 6.2.0 20160901]
pypy3 tt.py
while True: 0.012471317779272795
while 1: 0.012444301974028349
pypy3.7 --version
Python 3.7.4 (87875bf2dfd8, Sep 24 2020, 07:26:36)
[PyPy 7.3.2-alpha0 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
pypy3.7 tt.py
while True: 0.014255640096962452
while 1: 0.013212095946073532
Да, третий питон немного более тормозной, чем второй, на подобных вот операциях, это давно известно. Но умеренно.
Что-то они с замерами накосячили
У меня этот скрипт без изменений, комп довольно старый, ноут при этом:
python2.7 tt.py
('while True: ', 0.5859780311584473)
('while 1: ', 0.4057488441467285)
python3.6 tt.py
while True: 0.6227456871420145
while 1: 0.6395597131922841
python3.7 tt.py
while True: 0.6898804837837815
while 1: 0.7296387189999223
python3.8 tt.py
while True: 0.6560212508775294
while 1: 0.6543496972881258
pypy3 --version
Python 3.5.3 (fdd60ed87e94, Apr 24 2018, 06:10:04)
[PyPy 6.0.0 with GCC 6.2.0 20160901]
pypy3 tt.py
while True: 0.012471317779272795
while 1: 0.012444301974028349
pypy3.7 --version
Python 3.7.4 (87875bf2dfd8, Sep 24 2020, 07:26:36)
[PyPy 7.3.2-alpha0 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
pypy3.7 tt.py
while True: 0.014255640096962452
while 1: 0.013212095946073532
Да, третий питон немного более тормозной, чем второй, на подобных вот операциях, это давно известно. Но умеренно.
У тебя 3.6
А там 3.2, в самом начале третий пистон жутко тормозил, поэтому не особо с двойки хотели переходить
Запустил под докером. Там всё тормозит сильнее, видимо из-за системных вызовов виртуализованных.
docker run -it --rm -v $(pwd)/tt.py:/tt.py python:3.2 bash
root@6228fc6cf7e7:/# python tt.py
while True: 1.065101146697998
while 1: 1.0656909942626953
docker run -it --rm -v $(pwd)/tt.py:/tt.py python:3.8 bash
root@f58ff9555dc5:/# python tt.py
while True: 1.109615134075284
while 1: 1.102664346806705
То есть что 3.2, что 3.8 одинаково. Да и я сам в те времена тестировал, такое же ощущение было, что 3-я версия тормознее, но не сильно.
Проблема в том, что вот например flip по X
[code]
q = np.array(i.pixels).reshape(int(len(i.pixels)/4), 4)
i.pixels = q[::-1].flatten()
[/code]
работает, а по Y он почему-то меняет порядок, вместо RGBA я получаю ABGR то есть альфа первая и пиксели перепутаны.
Есть у кого какие мысли как можно правильно?
на какую книгу лутца стоит обратить свое внимание?
в чем разница между "изучаем python" и "программируем на python"?
только вез вот таких конструкций.
prog = r'''
#include<stdio.h>
int main(){
printf("Hello\n");
return 0;
}
'''
f = open('foo.c', 'w')
f.write(prog)
f.close()
subprocess.call(["gcc", "foo.c", "-ofoo", "-std=c99", '-w', '-Ofast'])
print(subprocess.call(["./foo"], stdin=sys.stdin))
за ранее спасибо
>np.array(i.pixels).reshape(int(len(i.pixels)/4), 4)
На моменте, когда у тебя осмысленное название в строчку не влезло и пришлось переименовывать в i, стоило задуматься, сможешь ли ты этот мысленный конструкт осознать, чтобы потом отдебажить.
Зачемучить dls ahk, если можно просто библиотеку на питоне импортировать?
Тебе нужно знать размер картинки width x height x 4 и делать reshape(height, width, 4).
>Тебе нужно знать размер картинки width x height x 4 и делать reshape(height, width, 4).
Ты явно не понимаешь, как работает reshape.
>Что не так?
Посмотри на свою картинку: первые четыре числа [1, 0, 0, 1], и после перестановки должно было получиться [0, 0, 1, 1], а не [0, 0.7, 0, 0.9] как у тебя.
> первые четыре числа [1, 0, 0, 1], и после перестановки должно было получиться [0, 0, 1, 1]
RGBA в GBRA? Зачем? Он хочет инвертнуть по Y же.
Данные идут RGBA|RGBA|RGBA:RGBA|RGBA|RGBA, нужно переставить первый ряд со вторым, что и происходит.
> Он хочет инвертнуть по Y же.
Понял, я в глаза ебусь. В таком случае ты делаешь правильно, но только переворачиваешь по оси X. По оси Y нужно вот так: a[:, ::-1].
>да, они жрут память, но я понятия не имею сколько
Погугли профилировщики для питона, также есть функции которые показывают размер переменной типа getsizeof, int_info.
Создаешь сессию, добавляешь к ней заголовок с авторизацией, а потом обычный post.
Ну или если это одноразовый запрос, то можно вхуячить сразу в headers без сессии.
content length автоматически просчитается для поста, второе надо добавить вручную, а третье это тело поста, да.
> content length автоматически просчитается для поста
То есть его можно вообще не вводить?
Или вводить всё же надо, но оставить пустым?
> второе надо добавить вручную
А откуда его взять? Ебучий яндекс на этот счёт вообще нихуя не написал в своей ебучей документации
Не надо вводить.
>А откуда его взять?
айди и секрет у тебя должны быть, делаешь их через : и энкодишь в бейз64, ну и добавляешь такой заголовок.
Я так троллю иногда тамошнюю фауну.
class FullStateTest(unittest.TestCase):
def setUp(self):
self.fs = FullState()
def check_instance(self):
assert isinstance(self.fs, int)
if __name__ == '__main__':
unittest.main()
Ran 0 tests in 0.000s
OK
Тестируемые функции должны начинаться с test_
b"\x00\x00\x00\x00\x00\x00'\x10"
Это по идее должен быть 0, но когда я пишу
struct.unpack('L', smpp_tx_node_value)[0]
то получаю 1163899028698562560 вместо 0
Спасибо!!!!
По идее список отсортированный, поэтому выполняться это должно быстрее чем O(n), как это сделать на практике в питоне?
Сделать объект-обертку, чтобы он по индексу дергал этот атрибут.
Достаточно реализовать getitem и len, по-моему.
>>> data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)]
>>> data.sort(key=lambda r: r[1])
>>> keys = [r[1] for r in data] # precomputed list of keys
>>> data[bisect_left(keys, 0)]
как сделать так что при совпадении строк из первого и второго в конец строки которая из 1го файла дописать текст?
Ты же понимаешь что ты второй раз за О(n) проходишься по уже отсортированному списку?.. С таким успехом я могу просто пойти по списку через for each пока не встречу элемент, который превосходит тот, что я указал
Если нет ограничений по памяти, то читаешь второй в сет, потом итерируешься по первому и смотришь в сете, пишешь в новый файл, в конце старый заменяешь.
Если есть, то итерируешься по первому, на каждую строчку итерируешь второй, дальше так же.
Вообще принцип называется "дихотомия". Стартуешь со среднего элемента, тогда у тебя с каждой стороны от твоего элемента половина интервала. Если больше, выбираешь середину от первого интервала, если меньше, то от второго. И так далее рекурсивно.
Нужно только аккуратнее с округлением быть.
bisect нужен для того, чтобы свои велосипеды в этой части не изобретать, в простых случаях.
для чего бот?
Я знаю что в numba можно отключать GIL (@ngit(nogil=True))
так же там есть паралейный рейндж (prange), и самое главное что он переводит в питон в своего рода машинный код через JIT компилятор, так же вы можете обратить внимание на cthon
Но конечно для лучший производительности лучше синергировать Python и С. (btw C довольно похож на питон, но {} и ; реально бесит)
>Но конечно для лучший производительности лучше синергировать Python и С.
Есть гайды для кикстарта?
И что в нем си-лайк?
Вот перл си-лайк, в питоне по-моему ещё и намеренно дистанциировались от обоих.
>btw C довольно похож на питон
Вот совсем-совсем нет. Практически ничего общего. Только во втором питоне форматирование строк напоминало, но в третьем другое принято. И целочисленное деление во втором было, в третьем убрали.
А всё остальное другое. Циклы другие, if-else другие, switch нет, присвоение-сравнение нет (в 3.8 в виде особого оператора), оператора ++ нет, без которого Си не Си, никаких констант и #define, другое построение стандартной библиотеки, другие строки. То есть нет массы всего того, к чему привыкаешь в Си, и есть масса другого, чего нет в Си/C++ в принципе.
JS/PHP построены на базе Си, это да.
По cython есть квик-гайд для брайнлета?
я про вид синтаксиса, а не про что есть и чего нет
$5
Я его предвосхитил, начал сразу с видео)
Что из себя в среднем представляет тестировка приложений и почему для этого нужен питон?
Нашёл свою первую заявку до этого не работал. Нужен питон и знание "основ тестирования ПО". Чего мне ожидать от такой работы, как вообще тестировка проходит? С помощью специальных утилит или ручками?
Пыиался проверить атрибут класса, errorname выдаёт. Чяднт?
Хех, начало мне уже нравится.
Он работает, просто там печатать нечего.
В смысле не будет? Он чё охуел? Я то думал он закрывает файл только после выполнения всего блока кода под with
А он так и закрывает. Закрытие файла это просто освобождение дескриптора файла. Просто ты уже прочитал файл.
Ну если ты про file.seek() то да можно. Но это просто будет новый итератор по файлу. Хотя может я ошибаюсь
Нипонел, а почему не работает?
[code]
# Solve the quadratic equation ax2 + bx + c = 0
# import complex math module
import cmath
a = 1
b = 5
c = 6
# calculate the discriminant
d = (b2) - (4ac)
# find two solutions
sol1 = (-b-cmath.sqrt(d))/(2a)
sol2 = (-b+cmath.sqrt(d))/(2a)
print('The solution are {0} and {1}'.format(sol1,sol2))
[/code]
>>72604
я правильно понял, что это https://github.com/ololoepepe/MakabaCode/
больше не работает?
b2 это что? почему неправильно написал?
Лол, я подумал, оно генерирует такие пикчи.
А так ничего интересного, анальные танцы с гуи тулкитом.
Сейчас смотрю на canvas в родном tkinter, turtle и pycairo. В какую лучше вкатиться и есть ли годная альтернатива?
Смотри модули для дат, там должны быть средства парсинга и у готовых объектов уже сравнения.
if date1 != date2
Используй datetime
https://pythonworld.ru/moduli/modul-datetime.html
Сначала сведи значение в стандартный timestamp
datetime.timestamp() - возвращает время в секундах с начала эпохи.
А потом сравни между собой.
Есть 2 списка с флотами: list1, list2.
Как их сравнить с учетом погрешности?
Я делаю assertAlmostEqual(list1, list2)
Получаю ошибку unsupported operand type(s) for -: 'list' and 'list'
Нужно вручную проходить по спискам?
upd.
сделал delta = np.max(np.abs(np.array(list1) - np.array(list2)))
assertAlmostEqual(delta, 0)
Но это колхоз какой-то
Есть программа на винде, грубо говоря, она сохраняет картинки, а информацию о картинке хранит в виде текста только на рабочем окне программы и не сохраняет. Направьте, как можно парсить эту инфу?
Стоит смотреть в сторону ArtMoney?
Или лучше воспользоваться этой программой:
https://www.youtube.com/watch?v=sSAbk7M3SYQ
а точнее, выводимой инфой "Class" или HWID
Это встроенный функционал шиндовс апи.
Там набор функций поиска окон, разных контролов и т.д.
Делов на десять минут.
Без numpy:
max(abs(x - y) for x, y in zip(list1, list2))
for x, y in zip(list1, list2):
....assertAlmostEqual(x, y)
>'iyr:2020, hgt:178cm, ecl:grn, hcl:#18171d, pid:613792489, cid:240, eyr:2028,
byr:1972'
Как конвертнуть ее в словарь? Пробую с json.loads но пока безуспешно
Ну или может кто в advent of code принимает участие - как вы в сегодняшней задачке распарсили строку?
>'iyr:2020, hgt:178cm, ecl:grn, hcl:#18171d, pid:613792489, cid:240, eyr:2028,
>byr:1972'
Я бы так распарсил, может модно как-то красивее, но я быдлокодер:
a = 'iyr:2020, hgt:178cm, ecl:grn, hcl:#18171d, pid:613792489, cid:240, eyr:2028, byr:1972'
dictionary = {}
for x in a.split(", "):
dictionary[x.split(":")[0]] = x.split(":")[1]
print(dictionary)
dict_mne_zapili(str)
В чем колхозность-то придурок?
Любая абстракция то-же самое будет делать, просто скроет от тебя.
Самый верный способ взять memoryview на строку и и читать ее по символу
Да я понял. Там какая-то жесть блин с этой функцией. Поочерёдно выдаёт два разных класса, по два раза.
Единственное что приходило на ум, это перевести вывод в текстовую переменную и распарсить текст, привязать счётчик. Но это какие-то костыли костылей и я забил. Нашёл решение попроще хоть и менее удобное.
Какая жесть? Если приходит мув, то мув, если клик, то клик.
Всего то надо проверить инстанс, или есть ли там батон.
Дел на три копейки.
def on_click(x, y, button, pressed):
print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x, y)))
with mouse.Listener(on_click=on_click) as listener:
listener.join()
Только учти, что зип отбрасывает лишние элементы, если списки имеют разную длину.
а ты им напиши. теми же словами.
phone_number = raw_phone_number.replace('-', '').replace('(', '').replace(')', '').replace(' ', '')
(например если мы очищаем номера телефонов) не катит, мало того чтоб смотрится не очень, так еще и проходится по одной и той же строке несколько раз вместо одного
maketrans, translate
Напиши хелпер, который принимает memoryview строки и мап символов замены и делай всего один проход. При желании можно даже сделать так, что бы всего одна аллокация была
Нет. Официальные доки по языку програмиррования должны описывать всю спефицику функционали и behind the scenes
И просто охуел от его тормознутости. Это я тупой или это норма? Типа простые иде быстрые и лёгкие, а другие - тяжёлые для моего нубука?
По интерфейсу спайдер очень приятный, кста.
Мб я затупил и не убрал что-то в настройках, подгрузке и тп?
Сорри за нубский вопрос.
Используй translate. Сходу не вспомню как она аргументируется, но она позволяет создать словарь переименований, и проходить будет один раз.
Да, убери там галочки "Сложна" и "Тормоза", это специально делают, чтобы отпугивать вкатышей.
Конечно же, не бывает программ, которые по умолчанию подгружают заранее некие не всегда нужные библиотеки и программы типа того же кайт, которые я уже отключил.
Ты безусловно показываешь себя таким образом профи, а не тупым мудаком. Мои поздравления.
Да, профи так и ведут себя, поэтому тупые мудаки проталкивают везде коде оф кондакт.
Ага, пизди больше.
Все остальное говно по-отключай и должон быть неплох. Старпт будет тугой, но как разгочегаришь - то норм.
Попробуй.
Окей, спасибо, анончик.
Я вижу, что они работают вместе, но боюсь что посередине кода будет выкинут какой нибудь сюрприз.
С точки зрения нампай фракция - такой же вид намбера как и интегер или флоат, но мб они в чем-то конфликтуют? Не встречалось?
Вы видите копию треда, сохраненную 22 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.