ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat - с этого начинать, перед тем как задавать вопросы. Кажется, устарел, требуется обновление или замена на что-то другоеКнижки: https://yadi.sk/d/HQhhsBsq3TVRUqЕщё книжек? https://yadi.sk/d/tArKKuQu3KejuqБольше книжек Богу книжек! https://yadi.sk/d/H-00n-UG3RSQemПредыдущий >>1421793 (OP)
Доброго вечера, достопочтенные.Пытаюсь в Трединг....В общем задача задать аргументы для 4 потоков, они изменяемые и зависят от входящих данных, и чтобы каждый поток выполнялся строго друг за другом, 1(2 или 3 или 4) закончился начался снова 1 (2 или 3 или 4) соответственно, но с другими данными. Как это делается? мы задаем в функции аргумент в который будем передавать threading.Event() и в самой функции ставим вот ето вот арг = агрумент уникальный для каждого из тредоварг.wait() арг.clear() тело функцииарг.set() ? вообще че то я запутался с динамическими аргументами... надо попробовать просто написать это без динамики со статическими данными.
Пацаны,що с этим делать libpython2.7 : Depends: libpython2.7-stdlib (= 2.7.15-4ubuntu4~18.04) but 2.7.15~rc1-1ubuntu0.1 is to be installed-1ubuntu0.1 is to be installed Depends: libpython2.7-stdlib (= 2.7.15-4ubuntu4~18.04) but 2.7.15~rc1-1ubuntu0.1 is to be installedE: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).Никакие комманды не работают,хелп
Если мне нужно сохранить лист numpy-массивов в файл, смогу ли я просто использовать read и write методы?
Как в питоне можно уместить в одну строкчу конструкцию изif чота:не-pass else: if (чота2):не-pass else: не-пасс?знакомому с очень широким монитором очень нада!
>>1431177Поправьте что-то или просто обоссыте.https://pastebin.com/zTFzbuXeвроде все идет нормально. размыми "тредами" чи не? как узнать то.... хер его знает
>>1431521А что это? Местную инкапсуляцию ультрапросто обходить, то, что никто не ебошит приватные методы вне класса держится только на соглашении
Как обрабатывать исключение когда передаешь объект в функцию и вызываешь внутри его метод, чтобы не было ошибки что у объекта нет этого метода. Что это за тип исключения?
>>1431608Есть массив пользователей, поскольку обращаться к базе по средствам одного аккаунт нельзя очень часто и много, я хочу разделить массив между техническими аккаунтами.Я не погромировал и не учился этому, все что делаю делаю на ощупь поСобственно каждый раз запуская тред мне надо передать в него нужные параметры имя пароль и массив который он будет обрабатывать.Понял что можно запустить тред и отдать ему только маасив // количество тех акаунтов. А разделение на количество запросов можно организовать в самой функции.Собственно вопрос в том как организовать многопоточность с динамическим данными юсер:пас . у меня не правильно, надо задать жёсткий контроль в количестве и первым ждать исполнение последнего. Чтобы не на плодить этого говна кучу кучную.
>>1431647>обращаться к базе по средствам одного аккаунт нельзя >по средствамНа питоне все такие безграмотные мудаки, или ты один такой феномен?
Антош, поясни мне за проектирование программ.Я, кажется, что-то делаю не так. Мне нужно было написать программу(в одно рыло) на мобилки + сервер для их обслуживания. К слову, опыта работы у меня было не много. Естественно я начал искать фреймворки. Начиркал, как Грэди Буч завещал, схему классов и объектов для мобилок(сразу же столкнулся с тем что не понятно на каком моменте можно прекращать придумывать абстрактные классы и писать уже код). Начал пилилить мобильное приложение. Столкнулся с тем, что объекты классов стало очень сложно с какого-то момента использовать и модифицировать. И в конечном счете, вместо красивого ООП стиля все вылилось в хз что за стиль, яля говнокод. Ок. После этого взялся за серверную часть. Там я выбрал фреймфорк джанго(потому что немного его знал). Опять начал изучать по хожу написания кода вместе с изучением фреймворка. В результате, куча времени и я опять сталкиваюсь с тем: писать ли функцию/класс под конкретную нужду, или продумывать офигенный класс-родитель который я потом могу использовать наследованием или сменой параметров объекта под любую задачу того рода для которой этот класс готовился. Меня тянет сделать этот клутой класс-родитель. И тут я понимаю что это иногда занимает недели, когда написав быстренько под конкретную задачу займет 1-3 дня. Потом я прочитал в закрепе как кто-то написал что для нормального программиста писать 15 000 кода - это норма. Я посмотрел свой код. Ну, я написал около 2 000 питоновского кода за пол года. Я "быстрый". Чертовы фреймворки. Говорят что должны ускорить разработку. Чертов джанго такой большой, что это утверждение у меня стоит под вопросов. Чертов ООП. Говорят что он должен ускорить разработку за счет наследования. Хрен там, все работает не так как планировалось. Не всегда удобно менять методы. Если хочешь изменить класс фреймворка, то надо изучить его код, потому что в доках не всегда дается полноценная информация.Правильно/не правильно я работаю? Как вы проектируете и воплощаете в жизнь свой код? Можете ли кинуть примеры хорошего кода? Ведь, если смотреть первый попавшийся на гитхабе, то нет гарантии что код писал не говнокодер.
>>1431711Потому что это непонятная хуйня, где есть 2.5 книги и ролика по питону, но зато куча хуйни по жс и css редактор
>>1431726Если в захламленном помещении легко найти то что нужно, то лучше оно. Ведь в чистом вообще ничего нет.
я написал функцию приведения опыта в уровень, но она очень не практична, чем больше опыта - тем больше времени выполняется подсчет. как фиксить?https://pastebin.com/dMB448ta
>>1431696Все педанты орфографии и грамоты такие желчные людишки, или только ты? >>1431701>zip данных>cycle аккаунтовНе понимаю как мне это поможет.У меня есть список ID, по каждому ID надо сделать запрос. Количество запросов ограничено во времени, чтобы сократить время обработки всех ID нужно запустить еще 3.Или ты по оформлению кода и его заграждению примитивными циклами?
>>1431735Мдя, алгоритмист из тебяЧто-то типаexp_per_level = 1000exp_sum = 0lvl = 0;while(exp_sum < target_exp):\texp_sum += exp_per_level\texp_per_level (star)= 1.2\tlevel+=1ЗЫ наверняка можно еще быстрее, учивая что next_level = log (exp_to_next_level/1000, 1.2), но я забыл как там эти ряды считаются
>>1431625AttributeErrorТы можешь проводить эксперименты в консоли питона - набрать, например, str.foo, у класса str нет ни поля ни метода с именем foo, поэтому ты увидишь ошибку AttributeError. Можешь без исключений просто встроенной функцией проверять наличие атрибутировать у объекта: hasattr(obj, name), функция hasattr вернет True если в obj есть name, иначе False. А вообще, читай документацию https://docs.python.org/3.7/library/exceptions.html#bltin-exceptions
>>1431735проигрул. вот как я бы сделол. оно на единичку меньше експы возвращает потому что я не знаю обосрался ли ты.def calc_lvl_m(exp):....lvl = 0....lvlexp = 1000....while(lvlexp <= exp):........exp -= lvlexp........lvl += 1........lvlexp = round(next_lvl_exp next_lvl_k*lvl) - 1....print("lvl: {}\nexp: {}".format(lvl, exp))....return lvl, exp
Кто-нибудь из вас конспектирует знания/мысли. Если да, то как выбираете самое нужное, что предпочитаете, бумагу или электронную версию?
>>1430914 (OP)> Кажется, устарел, требуется обновление или замена на что-то другоеДа вроде не особо.Другое дело, что гайд не окончен, но вряд-ли кто-то возьмётся доделать.
>>1431900Коллега на работе завёл себе несколько тетрадок и от руки записывает туда какие-то вещи(вплоть до новых слов на инглише) + распечатывает себе whitepaper'ы. Но он датасаентист с приветом небольшим.
мб не совсем по теме, но как при помощи opencv убрать вмятину? На рис. 1 оригинальное изображение, на рис. 2 - то, что хотелось бы. cv2.convexHull не совсем подходит, так как деформирует другие края (рис. 3).
>>1432247Найти разницу между convexHull'ом и оригинальным изображением. Ты получишь бублик с разной толщиной краев. Там, где бублик тонкий, удали все совсем. Где толстый, оставь.
>>14322851. Уменьши его толщину https://docs.opencv.org/3.4/db/df6/tutorial_erosion_dilatation.html . Не факт что это нужно, но должно быть нужно2. Бублик превратится в серию островков. Ищешь площадь каждого островка https://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html Если она достаточно большая, увеличиваешь этот островок на 1 пиксель (чтобы отменить то что было на этапе 1, если ты его делал), и копируешь на свою картинку. Если маленькая, нихуя не делаешь
Подскажите плиз, как в пандасе сохранить структуру датафрейма после groupby, если я хочу отсеять элементы по значению некоторого признака. Это делает следующая строчка кода df.groupby(“someId”).apply(some_function), а функция определяется как:def some_function(group): if group[group[“some_feature”] > 0.1].shape[0] > 0: return group[group[“some_feature”] > 0.1] else: return groupПроблема в том, что возвращается датафрейм с индексами - “someId”, по которым разлелялись группы.
>>1433217Там примеры есть работы, юзай их, не зря анон писал.Правда насчёт актуальности хз ибо давно делали и апи могло обновиться.
>>1431706Возможно, ты просто слишком сильно угорел по ООП и абстрагированию. Будь проще и код потянется.
>>1431706Ты просто боишься, что твоя программа будет неидеальной. Страх ведет к стрессу, а стресс к прокрастинации. Решение: забить хуй на код и решать задачи, оптимизируя проблемы по мере их появления.Видение того, "как надо делать" не возникает ниоткуда. Опыт, сын ошибок трудных, как говорится, решает.
>>1431706>Я, кажется, что-то делаю не так.>Начиркал, как Грэди Буч завещал,Я еще лет в 13 открыл в библио-глобусе его книгу и понял, что этот словоблуд вообще не стоит внимания. >И в конечном счете, вместо красивого ООП стиля все вылилось в хз что за стиль, яля говнокод. В ООП всегда так.>Правильно/не правильно я работаю?Нет. Набери в гугле "критика ООП" и читай, читай, читай.
>>1433385>критика ООП>ну наследование заебись>да и всё остальное>а вот инкапсуляция говно>ну как бы потому что мне нужна свободаНе набирай, она в конечном счёте сводится к этому.
>>1433453Если хочешь работать именно со списками, лучше так:hight = 10width = 5left = 1 right = 101 [[np.random.randint(left, right) for j in range(width)] for i in range(hight)]Если хочешь с array из numpy, то как второй пример здесь >>1433474
>>1433474>>1433540Спасибо, почему-то думал что по итератору можно получить доступ к самому элементу. Вообще randint тут чисто филер для проверки, вообще у меня должен быть лист из массивов NumPy разной длины, где каждый элемент массива — случайное значение из словаря или совершенно новое созданное по образцу из одной из категорий, но это уже проблема другого порядка.
Чем urllib.request отличается от библиотеки requests? Читаю... и не могу понять, они ведь используют одни и те же методы надстройки над низкоуровневой библиотекой работы с сокетами.вкатывальщик
>>1433558Конечно можно. Только итерируемую последовательность во время итерации менять нельзя. for x in xs: <делаем что-то с элементом x>Здесь можно что-то делать с переменной x, но от присвоения переменной x какого-либо значения последовательность xs не поменяется.Видишь, здесь >>1433474 в первом примере итерируемая последовательность это range, а не список a, элементы этой последовательности используются как индексы для доступа к списку a и изменению его элементов
отцы нубский вопрос: for comment in stream_comments(): comm_body = comment.body if any(list in comm_body for list in config.spam_list): for i in comm_body: if i != config.reply_comm: comment.reply(config.reply_comm) else: continueпытаюсь сделать такое:бот агрица если в теле коментария(comm_body) есть слова из config.spam_list, далее отвечает на комментарий из config.reply_comm, НО если тело коментария уже содержит ответ из config.reply_comm, то он его пропускает и идет дальше. при подобном раскладе почему то не выходить(
В питоне есть какой нибудь синтаксический сахарок, чтобы передать в параметры функции N элементов массива, но не одним объектом, а поэлементно? Например, вот есть у меня пикрил, мне лень писать na_data[0]...na_data[7], но и в конструкторе я не хочу делать параметр массивом данных. можно ли как то зделоть зоебись сделать типа NetworkActivity(na_data[0]..na_data[7])?
>>1434032можно. Если тебе надо передать ровно 8 элементов, а в na_data может быть больше, то код будетfoo(na_data[:8])если список исходно из 8 элементов, то вообщеfoo(na_data)
>>1434377Там еще есть grid, который, как можно догадаться, размещает элементы в ячейках таблицы, и place, который размещает элементы по очно заданным координатам.
посоны, кто-нибудь занимался запуском питоновских скриптов из-под JVM? Что лучше для этого использовать? Py4J / Jython / JPype?
Кто-нибудь в PyQt5 разбирается?Я сейчас с ума сойду. Надо перехватить событие закрытия окна, и я несколько дней не могу понять как это сделать. В одном источнике пишут, что надо добавить: def closeEvent(self, e)В класс описания окнна. Это не работает, функция не вызывается при закрытии. В другом источнике к этому добавляют в фуннкцию создания окна следующее:quit = QAction("Quit", self)quit.triggered.connect(self.closeEvent)Это так же не работает, жалуется на неверное использование QAction: QAction(parent: QObject = None): argument 1 has unexpected type 'str' QAction(str, parent: QObject = None): argument 2 has unexpected type 'Ui_MainWindow' QAction(QIcon, str, parent: QObject = None): argument 1 has unexpected type 'str'Что я делаю не так? Как мне повесить событие на закрытие окна??
>>1435261Не понимаю. Я использую окошко из QT-редактора, вот код:https://pastebin.com/N33z2TtcЧто я делаю не так? Подскажи плиз
можно ли удалить файл со скриптом после того, как python script.py запущен, но еще не отработал? если да, то как нибудь, имея только pid запущенного процесса, можно ли получить запущенный скрипт?
>>1435281Ты создаешь класс, наследуясь от object, а я от QMainWindow. object - базовый класс для всех.
>>1435284я возможно недостаточно точно выразился. есть произвольная линуксовая система, на которой запущен скрипт командой python3 scriptname.py от имени рута, но запускал не я, хоть и есть доступ к руту. ни в / ни в ~ рута скрипта scriptname.py нет, да и через find/locate по всей системе он тоже не находится. мне нужно узнать, что именно делает скрипт, в иделае вообще получить его сорсы. как это можно сделать?
>>1435295Но файл уже как бы удален же. Ему нужно как-то найти ссылку на файл, которую держит процесс скрипта.
>>1435296Это я вижу. Тоесть QT-редактором вабще пользоваться нельзя, т.к. после него всё перепиливать надо?
>>1435308ну т.е. питон при запуске считывает весь файл в какой нибудь постоянный буфер, который остаётся в процессе до выхода?
>>1435305Не знаю, скорее всего никак не реагирует. Файл уже считан, преобразован в байткод и все необходимое держится в памяти, как я себе это представляю.
>>1435313Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.>>1435314Ну да. Никогда не видел результат работы sudo rm -rf /* в системе? Все, что осталось в оперативке - то и работает, пока не завершится. Так и работает в целом. Скрипт в оперативке.
>>1435322>Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.Есть на примете материал, который рассказывает как правильно сделать? Где там это всё выбирать. Спасибо
>>1435327Если честно, то не знаю. Я просто доки читаю и в vim пишу. qt creator только для c++ использовал. Вот тут вроде просто описывается, быстро глянул https://python-scripts.com/pyqt5Вот тут уже подробнее, но касательно самой qt https://www.riverbankcomputing.com/static/Docs/PyQt5/
>>1435322>>1435315нашёл вот такой вот гайд https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12. пайтон шелл раскочегарил, а вот что дальше делать - пока не знаю. какими инструментами из шелла можно посмотреть какие функции/классы/модули имеются?
>>1430914 (OP)Наверное, постоянный вопрос в этих тредах, но сколько пройдёт времени Нормального обучения языку, прежде чем я смогу получать с этого какие-то деньги?
>>1435345Ты можешь поместить скрипт в переменную а потом построчно его оттуда вытаскивать при помощи exec
>>1435330>быстро глянул https://python-scripts.com/pyqt5Ну вот тут он у них автоматом создаётся класс наследующий QMainWindow, а у меня при тех же действиях - от object.
>>1435355каким образом, если я как раз и запустил этот pyrasite-shell для того, чтобы проанализировать скрипт? какие вообще у питоновского промта (который как >>> три > если вдруг разметка сожрёт выглядит) возможности к интроспекции? в том же гайде пишут, что можно если бы я знал модуль запущенного скрипта, то мог бы узнать какие там есть функции и классы через dir(my_module). а как узнать, какие в рантайме есть модули? понятно, что там будет еще куча всяких системных, но ведь наверняка должен быть и мой, нет?
>>1435363Поэтому и говорят, что не надо слепо верить ide, нужно уметь делать все руками, а только потом - ide.
>>1435365Да вот я ньюфаг, и не хотел особо разбираться в ide, хотел залететь на скорую руку, но что-то зациклился на этом.
>>1434767Конечно. Метод resizable, пусть есть корневой виджет по имени root, тогда root.resizable(False, False) запретит изменение окна приложения по горизонтали и вертикали. Ты такие штуки спрашиваешь, быстрее самому нагуглить, чем ждать, пока ответят на двоще, совсем простые вещи
Анон, пишу говнокод короче, нужно подключится к ftp и скачать оттуда актуальные данные, но подключение не идет, я знаю в чем проблема, на работе у нас стоит прокси сервер, так вот как заставить через него работать мой говнокод? Когда подключаю свой мобильный как роутер, то без проблем конектится.
>>1435489Дает без каких либо проблем.>>1435521Ну ведь он дает, если использовать какой нибудь браузер, но с говнокодом моим не дает.
>>1435540Попробуй просто на сокет подключиться для начала.Потом можно сделать tcpdump и посмотреть, какой там диалог.Попробуй через телнет подключиться, проверить соединение:https://www.webdigi.co.uk/blog/2009/ftp-using-raw-commands-and-telnet/
Питонистусы, как сделать так чтобы при ошибке скрипт ждал моего подтверждения y/n и по результатам продолжал работу цикла или шёл дальше по скрипту?
>>1435580Внутрь try-блока ты уже не сможешь вернуться.Что за логика у программы? Если конкретная функция выдаёт ошибку, то надо просто её в цикл обернуть с обработкой исключения или ошибочного значения, схематичноwhile True: result = None try: result = try_do_work() except: yes_no = input() if no: breakесли таких вызовов много, можно обернуть в какой-нибудь декоратор.
>>1436236А что не так, не достаточно информативная строка, или надо все в одну строчку писать, типа f-string надо использовать вместо format?А, вижу, в info может быть либо ничего, либо только одно слово, тогда не нужен ни массив не join. Ну, проебались чуть, можно же исправить
>>1436236Вангую, что автор привык собирать строки таким образом, вот по привычке и сделал, хотя тут можно было бы обойтись без списка.
Аноны, доебал препод с тем, чтобы я на питоне накидал ему прогу с парсингом экселя и формочкой для собсна выбора файла, выбора диапазона ячеек и графиком.Я с этим языком знаком лишь по синтаксису. Ткинтер вообще не ебу, а при попытках раскидать эксель в матрицу знатно заебался с пандой и хлрд, так и ничего не сделав.Похуй с ним с ткинтером, сам нагуглю надеюсь как сделать форму со всеми этими свистоперделками. Поделитесь кодом, чтобы прочитать эксель файл как[ [row1 column1, row1 column2...], [row2 column1, row2 column2...], ...]С меня тонны благодарностей от препода и моя сердечная любовь до гроба no homo
>>1436489Ставь или модуль pandas (pip install pandas)или можно сохранить данные в csv и парсить их.Панды эти какие-то замудрённые, разбираться с ними надо. Но зато много умеют.import pandasdf = pandas.read_excel('file1.xls')for row in df.itertuples():___ if isinstance(row[2], str):___ ___ print(row[2], row[3])
>>1436489а что сложного с пандасом? вот например за 3 строчки в csv можешь сначала сконвертировать, потом с csv работать как обычно. мне лень питон запускать и либреофисhttps://stackoverflow.com/questions/10802417/how-to-save-an-excel-worksheet-as-csv/45297469
Добрый деньАноны, к сожалению, я очередной хуй, который хочет вкатиться в python. Проблема в том, что у меня очень мало времени из=за работы, но есть деньги на то, чтобы купить курс (не надо только ссать на меня). Что скажеет про яндекс практикум? Их программа для backend
Аноны, я практикующийся ньюфаг, накидал знакомому софтинку для учёта вип-аккаунтов от серванта БФ4. Если кому не сложно, зацените код:https://www.codepile.net/pile/2xO3Z9x6В даннном случае, вся база хранится в списке. Список хранится в pickle-объекте. При загрузке программы pickle-файл считывается и содержимое помещается в базу, следом обновляется Qt таблица. При любом редактированнии базы (добавленние, удаление, редактирование), происходит сохраненние базы, загрузка, таблица отрисовывается с нуля.В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть?
>>1430914 (OP)Кто-нибудь знаком с pygame? Пытаюсь решить задачу - есть группа спрайтов-деревьев и спрайт огня. Деревья спавнятся в случайном месте по нажатию кнопки. Огонь доходит до дерева, активируется функция, которая определяет скорость, с которой оно сгорает. Но так как деревья спавнятся, нет конкретной переменной, которую можно вписать в функцию. Как можно применить функцию к экземпляру дерева?
>>1436815>В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть? Ты без обид, с точки зрения проектирования всё плохо. Ну работает, и хорошо, хотя я не проверял. Но абсолютно не поддерживаемый код, всё захардкожено в усмерть. Напоминает ад в PHP, что творился в начале нулевых и за что это направление не уважали.Не только разметка намертво вшита в QT код, то есть ты не переверстаешь ничего просто так, но и логика программы, выборка данных. В идеале, тебе надо разносить разметку, её отрисовку, и выборку данных.То есть у тебя есть какой-то конфиг, в котором ты настраиваешь, какого размера какие окна и как они располагаются, и если координаты одного завязаны на другое, то лучше через переменные это делать. Этот конфиг ты передаёшь в функцию, которая строит интерфейс.А за данные отвечает какой-то свой набор функций или класс, ты сначала получаешь данные, а потом уже объект с ними передаёшь в функцию рисования. Если ты действия какие-то с базой делаешь, то они тоже вызовом методов этого класса делаются.Это идейно.
>>1436835Хорошо, попробую осмыслить и учесть, хотя мне сейчас многое непонятно.QT-код целиком из QT-редактора, я его не сам писал, потом он такой.
>>1436839Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер. Потом ещё раз. Сам придёшь к этому.И с выбором данных, попробуй подумать, как ты будешь в другом формате их хранить, а лучше чтобы была возможность выбора. И тоже, сам придёшь к тому, что надо выделать классы и общаться с ними через методы.Все эти теории проектирования из жизни пришли.
>>1436846>Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер.ну, на самом деле не вижу проблемы. В функциях отрытия окна можно отредактировать любой элемент разметки окна, для дочерних оконо по крайней мере. С основным окном не уверен. В общем мне не совсем понятно о чём речьНа самом деле я только собираюсь детальнее PyQt изучить, потому особо редактировать тот код, что да редактор, не могу.>И с выбором данных, попробуй подумать, как ты будешь в другом формате их хранитьТоже не совсем понимаю, ты про сохранение данных в pickle? Чуть позже собирался изучить SQL и применить базу данных для сохранения
>>1436828Пайгейм не трогал. Ты не можешь получить экземпляр дерева рядом с огнем? Ты ссылки на деревья куда-то записываешь? У тебя задача на коллизию огня и дерева?
>>1436863Там походу только пересечением координат объектов можно что-то сделать подобное.Как-то пытался курсач на пайгейме сделать. Больше обсёра у меня не было. Пока не начал рабоать, офк.
>>1436874> Там походу только пересечением координат объектов можно что-то сделать подобное.Коллизии так и делаются, в общем-то.
>>1436890Лол, а там нет функции которая определяет коллизии объектов ? По моему вот так:def is_collided_with(self, sprite): return self.rect.colliderect(sprite.rect)
>>1437131было бы странно, если бы их не было. но я подумал, раз тот анон о них не знает, то наверное нет. он же наверняка погуглил столкновения прежде чем самому писать алгоритм. не буду же я гуглить фичи пайгейма, который я ни разу не использовал и не собираюсь.
Почему по сабжу нет нормальной актуальной книги? Либо какие-то справочники, либо фигня для детей, либо старая книга Лутца с ненужной легаси 2.6, кроме 3.
>>1430914 (OP)Жаба-джун заехал в тредПоштудировал ваш Питонух и малость приохуел:1) С хрена ли доступ к любому атрибуту и методу можно осуществлять как извне класса, так и просто из самого модуля точечной нотацией?.. Почему кладется хуй на систему геттеров-сеттеров?2) Где вообще инкапсуляция как таковая? С хуя ли не могу адекватно задать приватные атрибуты в классе? Какие-то блять _ вместо private/public/protected . И есть ли тут вообще бля возможность сделать класс доступным ТОЛЬКО на уровне модуля, а? Че-то пока хуйня получается
>>1437227Я не могу быть в этом 100% уверен. Но просмотрел несколько источников. Если у тебя есть годная книга, буду благодарен.
>>1437233>геттеров-сеттеровНахуй ты со своей парашей лезешь и пытаешься устраивать правила?>private/public/protectedЕсть соглашение о использовании. Если додик или джун, например, то тебе ниего не мешает говнокодить и в джаве, используя везде public. Просто дандеры используй и методы соответствующие.
>>1437218Тебе уроки нужны? Или документация? Если первое - иди на ютуб или https://wiki.python.org/moin/BeginnersGuide. Если второе - https://docs.python.org/3/
>>1437243>Нахуй ты со своей парашей лезешь и пытаешься устраивать правила?Это унылая регулярная паста, не бугурти.Система геттеров и сеттеров есть.При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.
>При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.Как это сделать, кстати?В общих словах.Если через __getattribute__(), то он и внутри класса посмотреть свойство/вызвать метод мешает.
>>1435580def except_goto(func): def wrapper(args, kwargs): try: result = func(args, kwargs) except: quest_text = ( 'Тут ошибочка вышла. ' + 'Можем повторить? y/n: ' ) answer = input(quest_text) if answer == 'y': return wrapper(args, *kwargs) else: return None return result return wrapperПример работы: https://repl.it/repls/FluidImprobableSeahorse
>>1437654Вот пример с приватными методами, в виде скрина, идейноЯ когда-то давно такое делал, но просто для фана, реально не использовал. Другие методы тоже есть.Это не 100% метод, вот здесь можно обойти, если назвать объект не a, а self, никто не запрещает ведь. Но от этого можно защититься, можно контролировать, из какого файла идёт вызов и из какой строки. Тут демонстрация идеи. Конечно, можно просто переопределить функцию is_local_call. Но ведь это защита не от хакеров, а от нежелательных прямых вызовов. Есть другие способы, но тоже извращённые.
Анон, почему это не работает?Я ввожу с клавиатуры что угодно (это может быть str опвалопвао, int 43242, либо что-то смешанное типа 9t49ting_))!n3).Мне нужно три развилки - если введено число, то а, если введена строка - то б, все остальное, в том числе смешанное - в.В этом куске всегда срабатывает только string.
>>1437754Потому что input всегда возвращает строку. Ты сам должен конвертировать в нужный тебе тип.> The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.
>>1437758А каким образом я могу сам конвертировать?Допустим, у меня есть некий результат input - я ввел "312312". Как мне дальше на основе такого инпута ковертировать эту же самую информацию в другой тип?
>>1437770Если у тебя там только строки и int'ы, то самое простое этоvalue = input()try:. . value = int(value). . # числоexcept ValueError:. . # не int
Есть инвентарь в игре, задача идентифицировать объект в ячейке и посчитать количество (цифра в левом правом уголке).Сейчас я делаю:- пробегаю по всем ячейкам, делая скрины каждой отдельной, определяю пустые, чтобы с ними дальше совсем не работать. < 1 секунды времени- Сначала я пытался распознавать объект пиксельхантингом, а количество распознавая цифру с левом верхнем уголке. Но отказался о этого т.к. получалось медленно и цифры распознавались нестабильно, ~98% что не устраивает.- сейчас я навожу курсор на не пустую ячейку и распознаю уже текст тултипа. Тут текст 100% распознается хорошо и сразу 2 задачи и имя объекта и число.Но это все равно слишком медленно. Как можно ускорить процесс? В плане алгоритма или может быть какие-то практические советы?Например, почему pyautogui.moveTo(x, y)такой тормозной? Всего 10 позиций в секунду, а если еще нужно периодически ctrl зажимать, отжимать, то получается совсем уж смешная скорость. Есть способы двигать курсор и жать кнопки побыстрее?
>>1437790О, PoE, клёво, давненько в него не заныривал. Много в него народу шпилит?> пишет на скриптовом интерпретируемом пистоне с тормозной виртуальной машиной> удивляется, что тормозитНе еби мозги и бери C++ с OpenCV
Антошь будь няшей, поясни за aiohttp.Мне нужно отвечать на GET запрос, причем так что ответ никак не зависит от запроса, а получается в результате работы заранее запущенных асинхронных задач. (это докер контейнер который начинает тестирование удаленных сервисов сразу после запуска, отдающий результат тестирования по http и тут же умирающий)Набросал упрощенный примерчик https://pastebin.com/CRJPrqN5, он работает. Но вот что он говорит:>DeprecationWarning: Changing state of started or joined application is deprecated> app['json'] = json_Что же делать?Глобальные переменные? 2к19?
>>1437804Я не погромист, это просто баловство,мозги размять когда время есть, поэтому на плюсы я так с наскока не пересяду при всем желании. Он же, на сколько я знаю, не самый дружелюбный для новичков.OpenCV изучаю, с питоном же он тоже хорошо интегрируется.Вроде много, от лиги к лиге сильно скачет цифра. Я сам не играю, просто трейдбота пишу сядя в хо
>>1437807>>1437806>Что же делать?>Глобальные переменные? 2к19? Глобальные не нужно. Ты просто делаешь класс, который за коммутацию отвечает, хранит, в том числе, json_Создаёшь объект класса в функции main(), этот объект сохраняешь в app, и в других объектах, которые отвечают за связанные асинхронные задачи. Потом просто меняешь свойство json_, прямо или косвенно. В нём можно сделать метод вроде get_data_for_web(), можно не делать, работать напрямую.Доки рекомендуют скорее подход, чтобы ты из app всем управлял, через какие-нибудь очереди и т.п., то есть что app такой главный и всем рулит, но это спорный подход и не для всех случаев. Может быть web-интерфейс вообще опционален?
>>1437806Делаешь класс, который делает все. И будет достаточно его свойств, принципы ООП соблюдены - глобальные переменные не нужны.
>>1437826Спасибо анон!Сделал упрощенный пример и он работает без warnings.https://pastebin.com/WTin2nVm>>1437834>Делаешь класс, который делает все.ИМХО этот подход примерно эквивалентен глобальным переменным.>принципы ООП соблюденыИ разумеется не соответствует ООП и более того является известным антипатерном - "объект бога".Я признаться честно не большой специалист в программировании, но кажется asyncio более тяготеет к процедурщине. А уж тем более в моем случае, когда выполняется много мелких задачек, слабо связанных между собой, городить для этого единый класс, чтобы потом запускать методы по отдельности, только ради namespace, такое себе.Лучше как >>1437826 анон предложил.Но в любом случае спасибо.
>>1437814>OpenCV изучаю, с питоном же он тоже хорошо интегрируется.Тут ключ к успешному решению твоих задач.> трейдбота пишуМм, прибыльно, наверное?
>>1437863Сам только перекатываюсь на asyncio и aiohttp. Правда до этого и на питоне много писал, и на других платформах сетевые вещи писал.Как спроектирован aiohttp пока не очень нравится, asyncio симпатичен и разумен. Доки рекомендуют всё хранить в app, но это грязно, видимо поэтому этот warnings и появляется. Если делать класс, то это не глобальный объект. Ты ведь можешь сделать несколько таких классов. Доки по aiohttp и рекомендации отчасти предполагают, что aiohttp главный объект, то есть что ты вебсервер реализуешь. Но это не всегда так. У меня может быть другой главный сервис, а aiohttp лишь один из сервесов, который там работает. Можно с ним, а можно без него. Или можно с двумя разными aiohttp, на разных портах и разного назначения. Я сейчас вижу архитектуру так. Ты делаешь приложение my_service, инициализируешь его. В него уже передаёшь созданный, но не запущенный app (aiohttp сервис), либо даже просто соответствующий класс. Приложение my_service само пропишет ссылку на себя в app и стартует его. web-app уже даёт интерфейс для app, вроде метода "получить данные", синхронного или асинхронного, не принципиально, и ещё нужные методы, чтобы через веб можно было управлять твоим главным сервисом. В общем всё, чтобы максимально отделить основной сервис от сервиса с веб интерфейсом. Идея, чтобы asyncio-app отвечал за содержательный функционал мне не нравится, если задача уходит дальше, чем обычный вебсервер.
>>1437924>web-app уже даёт интерфейс для appопечатка, my_service даёт интерфейс для app, веб интерфейса
Вечер в хату, котаны! Спасайте!Задача: есть список сайтов, код которых надо пропарсить на наличие определенной сигнатуры html/js. То есть в идеале скрипт принимает на вход файл со списком и выдает другой файл где собраны сайты, на страницах которых есть нужный код. Проблема в том, что мои познания в питоне ограничиваются тем, что он простой и для большинства задач уже собран готовый велосипед. Мой максимум - разобраться за часик другой в чьем-то коде и попробовать докрутить под себя. Ну или за большее количество времени написать что-то криво-косо с нуля, если мне объяснят, какие основные библиотеки и фичи нужны для решения этой задачи. Помогите, антоны, с меня как всегда лучи добра.
>>1437790Определять тип объекта можно попробовать при помощи построения вектора кождого из товаров(вектор основывается на гистограмме цветов). Для этого надо для начала подобрать базу скринов и по ним вычислить вектора. Дальше делаешь скрин ячейки, вычисляешь вектор и делаешь быстрое перемножение: твой вектор ячейки на кучу векторов уже в БД (матричное перемножение итт), дальше сортируешь по степени схожести(от 0 до 0.9) и берешь самый лучший вариант.Делал подобное, но на больших фотках, анализ одной, на процессоре, занимал примерно 0.002с, у тебя же фотки меньше, можешь сделать это все ещё и мультипроцессингом - вообще огонь будет.Эх
Котаны, подскажите, если вэб в питоне?Куда перекатываться после пхп? И есть ли смысл перекатываться?Я по мухосранску Краснодар hh смотрел - именно вэб вакансий чет совсем мало. Синтаксис питона знаю.Ща ковыряюсь в Node.js. И думаю о питоне. Короче мучаюсь выбором второй платформы для изучения.Вообще в принципе преимущества питона в вэб-бекенде относительно пхп каковы? ( я не троллинга ради, хочу вектор для себя набить)С node.js все понятно - там асинхронность из коробки, событийный цикл, все это интересно, но такое ощущение что noda нахрен никому не нужна в РФ.А питон?
>>1438109>Котаны, подскажите, если вэб в питоне?Учить пользоваться поиском, по технологиями и по вакансиям.>>1438109>Я по мухосранскуЯ думаю там по всем направлениям IT мало вакансий.>>1438109>Вообще в принципе преимущества питона в вэб-бекенде относительно пхп каковы?Просто более внятный и стройный код, сам язык поддерживает многие конструкции элегантно и удобно. После питона писать на пхп противно. Фреймворки тоже иначе сделаны, но это уже от фреймворка зависит.
>>1431706>на каком моменте можно прекращать придумывать абстрактные классы и писать уже кодС самого начала. Зачем тебе вообще классы в питоне? Напиши логику, а потом уже абстрагируй, если необходимость появится.
Анон подскажи нубу плз. Пилю для себя скрипт. Хочу чтобы после обработки данных скрипт создавал файлик в гугл докс. Что вообще курить, в какую сторону двигаться?
>>1438150Ну досюда то я догуглил. Просто чёто как-то страшновато туда лезть. Там вообще сильно сложно для самовкатывальщика?
>>1430914 (OP)нигеролюб идёт на хуй вместе со своим уёбищным тормозным питоном и всеми говнопроектами на нём.
>>1438390Если тебе непонятны такие пустяки, то ты выбрал неправильное занятие.Это условие у тебя покрывается уже отработанным условием сверху.
>>1438390иф выполнится при любом tто что над ним есть другой иф - иррелевантно, чтобы стало релевантно используй elif
>>1438421yatoopanool, у тебя же там И, а не ИЛИтогда хуй знает, не должно быть никаких варнингов. я не ебу что за иде и дефолтные условия, но дело в них
>>1438425Тебе варнинг показывается не на if целиком, а только на первую его часть. Просто выделено слабо и сформулировано неочевидно, я сам долго понять не мог, пока не пригляделся, что там выделение есть.По смыслу там должно быть неif t >= 60 and t < 3600а простоif t < 3600
>>1438499А в плане читаемости лучше было бы использовать конструкциюif t < 60:.... elif t < 3600:....
>>1438495соси хуй, быдло. к семантике языка это не имеет никакого отношения и в дефолтном питоне никаких варнингов не будет>>1438495понял, типа статический анализатор определил, что это бессмысленное сравнение ввиду предыдущего ифа
>>1438499>>1438507> понял, типа статический анализатор определил, что это бессмысленное сравнение ввиду предыдущего ифа
В Python есть инструменты для взаимодействия с элементами приложений Windows? Хочу дать проге доступ к клавиатуре.
написал программу с бесконечным циклом которая постоянно принтует "Ты пидор Ты пидор Ты пидор Ты пидор" первый раз за всё время обучения погромированнию получил удовлтеоврение и положительные эмоции.
>>1438796>написал программу с бесконечным циклом которая постоянно принтует >первый раз за всё время обучения Надеюсь сегодня твой первый день обучения. Иначе тебе стоит поискать другую специальность.
>>1438796я даже больше скажу. когда я её первый раз написал, после этого я редактировал её 3 раза, пока не довёл до того что в итоге там осталась только одна перменная. программа получилась идеально простой и понятной.>>1438798у меня итак другая специальность. просто мне досталась ангельская книжка по питхоне ну и вооружившись гугле переводчиком решил "чего добру то пропадать" вот сижу с июня потихоньку читаю её.
>>1438802>пока не довёл до того что в итоге там осталась только одна перменнаяТебе действительно стоит поискать другую вещь для вката. Для такой программы не нужно переменных вообще.
>>1438803я не собираюсь вкатываться блять, я тупо читаю книгу по питону которая нахялву досталась. у меня уже давно есть вкат в другую специальность.кстати напиши код без перменных интересно как он будет выглядеть.
>>1438803покажи код программы без перменных которая будет выводить бесконечно "Ты пидор...", заинтриговал.
>>1438803жду код без переменных, кукаретик ебучий? а ты, что падла думал сейчас простых упражнений поверхностно нарешаешь и погромист дохуя? ахахах соси хуй маня, это тебе сюда вкатываться не надо, ты поверхностый хуесос который хочет зазубрить синтаксис и нихуя более. давай жду цикл WHILE без перменных
import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltimg_rgb = cv.imread('mario.png')img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)template = cv.imread('mario_coin.png',0)w, h = template.shape[::-1]res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED)threshold = 0.8loc = np.where( res >= threshold)for pt in zip(*loc[::-1]): cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)cv.imwrite('res.png',img_rgb)Чет не догоняю как вытянуть позиции(координаты) найденных темплейтов, в pt есть какие-то координаты но они не совпадают с объектами, совсем, и много повторяющихся значений.
>>1438803>>1438798ЭЭЭЭЙ, задрот. АУУУУУ, где твоя программа без перменных? Что ты там говорил, бля? Что это не моё? Може это не ТВОЁ? МАНЯ ЗАЛЁТНАЯ, ПОССАЛ ТЕБЕ НА ЕБАЛО С РАЗБЕГУ. пиздеть горазд, а как обосрался в игнор. чсвшное задротище, наверное такие ублюдки как ты пишут статьи на лурочке. вид важный будто хуй бумажный, а на деле нихуя не знает и не умеет, всё поверхностно. только на двоще передеть может. ТЫ ОБОССАН
>>1438823Преставь себе два вектора, т.е. две стрелки, выходящие из начала координат. Как измерить их близость? Можно измерить расстояние между кончиками. Можно измерить угол. Можно измерить скалярное произведение.При этом нам не важно, сколько измерений в твоем векторе, может быть 2, может быть 3, может быть 1000, у каждого такого вектора можно все это посчитать, просто формулы обобщаются на все большее число измерений. Т.е. например расстояние в 2д этоsqrt((x1-x2)^2+(y1-y2)^2) по теореме Пифагора, в 3д это sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2), а в общем виде sqrt((sum(xi-yi)^2)). То же можно провернуть и с формулами скалярного произведения, угла, и так далее.Далее, в задаче темплейт матчинга нам нужно посчитать меру близости между двумя изображениями. У нас есть два изображения, большое и маленькое. Маленькое будет "скользить" по большому от пикселя к пикселю, и мы будем сравнивать близость между маленьким изображением и куском большого, на который мы в данный момент попадаем. Отсюда появляется T'(x', y') с одной стороны (маленькое изображение - нет скольжения) и I(x+x', y+y') - большое изображение. И R(x, y) = Yoba(T'(x', y'), I(x+x', y+y') ) - где Yoba является конкретной мерой близости. Соответственно R(x, y) измеряет близость каждого пикселя x,y и его окружения большого изображения и между твоим темплейтом.Затем мы каждое изображение представляем в виде многомерного вектора и измеряем степень близости. Первое - это обобщенная на многомерный случай расстояние между кончиками векторов по теореме пифагора, только для упрощения рассчетов остается квадрат, не вычисляем корень x^2 + y^2 + z^2. Второе - это расстояние дополнительно делится на длины векторов. Третье - скалярное произведение. Четвертое косинус угла между векторами по формуле скалярное произведение делить на длины. И так далее.Ну и да, если ты не понял, что я написал, ты не вкатишься никогда, потому что не все люди достаточно умные, чтобы оперировать на таком уровне абстракций. Если понял - то почитай десяток книг по компьютерному зрению, по DSP, несколько научных статей, и это проблем представлять не будет.
>>1438881да, точно с ебланил. ну извини, ладно. да я же читал в книге что цикл работает если заявление тру. блять мог бы сам додуматься до этого.
Анон, помоги нюфажине. Тут падас или нампай.Есть датафрейм вида1 | 1 | 1,1 1 | 2 | 1,2 1 | 1 | 0,871 | 3 | 0,651 | 4 | 3 1 | 1 | 2,32 | 2 | 4 2 | 1 | 0,65 2 | 3 | 11..........Т.е первый столбец содержит идентификатор (как видно он может повторяться для строк), второй столбец колеблется в каких-то повторяющихся пределах, а третий содержит уникальные значения.Надо:- разбить табличку на минитаблички по параметру "1столбец". Я правильно понимаю. что первый столбец надо сделать ключом в таком случае?- подсчитать частоту второго параметра для каждого идентификатора из первого столбца- на основании этого для одинаковых параметров из второго столбца суммировать значения из 3го.
Сколько надо дрочить питон чтобы выйти хотя бы на 60к? Скажем, если я на обучение выделяю каждый день часа 4 после работы и один выходной с утра до вечера.Наверняка таких вопросов дохуя было, можно в факе закрепить.
>>1439297Такие вопросы обычно задают в "мы вам перезвоним".Надо в первую очередь уметь программировать. На чём именно - не важно. Если ты уже программируешь, то питон осваивается быстро. Если ты владеешь какой-то технологией на одном языке, будь это треды/процессы/async, то и на питоне с ними разберёшься относительно быстро. Зарплата вообще не тот вопрос. В первую очередь вопрос о том, чтобы тебя взяли на работу, чтобы ты был кому-то нужен как программист. Чистый питон никому не нужен. Нужны сопутствующие технологии, они требуют много времени на освоение, смотри вакансии по ключевому слову python.
Есть цифры такого вида (1 скрин), поигравшись немного с ресайзом и инверсией привел их в более менее стабильный для распознания tesseract'ом вид (2 скрин), но хоть и редко,все равно бывает плохо распознает. Размер и шрифт цифр всегда один, но количество может быть до 99. Как, кроме tesseract'а можно распознавать их стабильнее и желательно побыстрее?
>>1439372А насколько там стабильный источник цифр? Это скан или что-то ещё? Одинаковые цифры выглядят очень похожими друг на друга, с точностью до пикселя.Нельзя ли просто взять тестовую картинку, взять контрольную, посчитать разницу между ними по какой-то метрике. Может быть проверить несколько вариантов, со сдвигом на один-два пикселя. По минимальной разнице и выбрать то, что нужно. Дёшево, сердито, быстро, но ограничено, конечно.
>>1439380Небольшая нестабильность заключается в том, что это цифры на всплывающем полупрозрачном тултипе в игре, но в варианте 2 по идее они должны попиксельно совпадать.Думал примерно о том, что ты говоришь, но только как о концепции, как это реализовывать не представляю. Мне нужно будет подготовить 10 контрольных (0123456789) и каждый раз их по кругу прогонять на тесовой картинке в поисках совпадений?
>>1439301>>1439311>>1439337Ок, упрощу вопрос без гаданий об индивидуальности вопрошающего. Сколько у вас ушло времени, чтобы выйти по зп на 60к+?
>>1439419Съеби нахуй дебил. Смотря в каком городе, че за контора, СУПЕР СИЛЬНО зависит от софт скилов на собесах, а не от умения кодить.
>>1439421В первую очередь надо уметь программировать. Но этому и за годы можно не научиться, а сваливать всё на софт скиллы, которые да, тоже важны.
>>1439424Не нужно философствовать, был конкретный вопрос от зеленого нуфага, у которого по определению не может быть харда, и на собесах будет решать именно софт.
>>1439390Не знаю, как такое делать на питоне, наверное уже надо подключать пакеты numpy, чтобы быстро было. Как у тебя эти картинки в питоне представлены? Картинка фиксированного размера в пикселях? В питон как, в виде списка кладёшь?Вот если ты хранишь во вложенных спискахdigit[y][x]просто считаешь сумму в виде:summ = 0for y in range(SIZE_Y): forn x in range(SIZE_X): summ += (checking_number[y][x] - sample['5'][y][x])^2summ = summ / (SIZE_X * SIZE_Y)Только не ^2, а возведение в квадрат, две звезды которыеэто среднеквадратичное отклонение. Так для всех цифр. Даже просто в питоне должно работать быстро, а если numpy, то ещё на порядок можно ускорить. Разные оптимизации можно придумать дополнительные. В таком варианте даже если есть легкий фон, не страшно. Можно. Надо тестировать. Смотришь, у какого образца будет минимальное отклонение.
>>1439428Если ты неуверенно держишься и приходишь как на экзамен, это в минус.Но говорить с тобой будут в первую очередь о программировании, прикидывать, насколько ты мыслишь как программист. Тысячи примеров, народ ничего не знает, показывает это, а потом валит всё на софт скиллы и на то, что муйню ненужную спрашивают.
>>1439428>был конкретный вопрос от зеленого нуфагаНе нужны.Зелёный нюфаг спросил про "60 т.р.", а не про то, "что надо уметь, чтобы взяли на работу". Это приговор. Нюфаг просто не понимает, что это лютый пиздец.
>>1439440Да,он обречен, именно поэтому я начал свой пост с>Съеби нахуй дебил.Ну и что бы совсем не офтопить, дополнил для других залетных.
Куда делась ссылка на конфигуратор кода?Есть кусок кода в джаго работающий со связкой поста и мылвышибает IndentationError: unindent does not match any outer indentation levelи указывает на строку subject В чем проблема, не понимаю. Кусок кодаhttps://ideone.com/yASeqiпомогите
Есть встроенная функция open()Про нее могу почитать в документации в Built-in FunctionsА в каком разделе можно почитать про файловые аргументы типо .write() или .close() ?
Что лучше использовать для хранения списка структур: ванильный питоновский list([dict(), dict()...]) или pd.DataframeВ какой структуре нода ищется быстрее?
Стоит ли читать Лутца? А то книга очень длинная. Не то, чтобы я не могу прочитать тысячу страниц, просто много никому ненужной информации. Есть годная альтернатива без воды "от и до"?
Читаю Лутца, самую первую книгу для нобов, "Python learning" или что-то такое.СТОЛКНУЛСЯ С ПРОБЛЕМОЙПримерно сотня страниц посвящена воде, достаточно занимательной, и онан даже нового узнал, но тем не менее воде, ибо про код ни строки.Сразу за этим РЕЗКО идут кулстори про списки/словари/пробки анальные. Не то, чтобы это прям не понятно, но аФФтар использует в объяснении вещи, которые ещё не проходили в рамках книги.Так вот, насколько важно посимвольно понимать и прогонять примеры из книги? Если кто читал, прошу пояснить, в какой момент мне станет внезапно всё понятно.
>>1436489Короче разобрался с вопросом. Как я и думал -- решение есть, надо лишь его правильно нагуглить.метод as_matrix переводит почти в нужную мне матрицу (массив массивов-строк). Транспонировав (метод transpose, вроде из либы numpy) матрицу я получил то, что и реквестил.
>>1440192Я для себя решил сначала решить задачки на питонтуторе чтобы иметь хоть какое-то представление о предмете, потом вернусь к Лутцу.
>>1430914 (OP)ВВОДНАЯНесостоявшаяся пхп макака которая только и смогла осилить процедурный код, поверхностно коснуться баз данных и ооп стало скушно, не интересно, можно применять только в вебе хочет вкатиться в питон.ЗАДАЧАПомочь макаке с поиском книжки на русском, чтоб как у О'райли Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript - свежее издание, годная подача материала, чтоб совсем для бомжей типа меня, и чтоб майнкрафт змейку писать научил!
>>1430914 (OP)Приветствую, питононы! Вопрос скорее - математический.Есть простенький скрипт: https://rextester.com/TVNM46327Как видно, при его исполнении, некое сгенерированное число - делится с остаткомна различные делители, являющиеся степенями двойки.При этом, вся информация о числе - содержится в остатках.В каждом из случаев - множитель спадает в ноль.Пусть x - неизвестное число. Пусть стоит задача подобрать x перебором.Пусть известно условие, которое исполняется, если число x - корректно. Пусть также будет известна - максимальная битовая длина числа x,и пусть она будет равна значению power = 12.И пусть в качестве бонуса, искомое x находится в мультипликативной группе кольца вычетовпо простостому модулю (это не обязательно, но если поможет - вот).Внимание, вопрос. Возможно ли, глядя на результат вывода предыдущего скрипта,как-то ускорить подбор x, используя различные делители?Существуют ли какие-либо закономерности, позволяющие, например, составить систему уравнений и решить её,определив последовательность остатков/бит, и как следствие - составить из них искомое число x?
>>1440258Ничего не понятно. У тебя есть двоичное разложение числа, то есть фактически само число. > Пусть известно условие, которое исполняется, если число x - корректно.В общем случае никак. Вот пусть тебе криптохеш известен. Или экспонента числа по модулю (DH, RSA). Это как крайние случаи.Собственно ты и лезешь в DH/RSA и спрашиваешь, нет ли быстрого способа вычислить. Способы есть, существенно более быстрые, чем перебор, но всё равно экспоненциальные. Но это тебе надо в специальную литературу лезть. Или я не понимаю. То есть я точно не понимаю, что ты спрашиваешь.
>>1440261>Ничего не понятно.Я скрипт, просто как пример скинул, чтобы было видно закономерности деления с остатком на степени двойки.Некоторые вижу, а некоторые нет.Может есть какие-то скрытые закономерности.И хотелось бы их все учесть, собрать воедино и связать в алгоритм или систему уравнений, которую можно было бы взять и решить.>У тебя есть двоичное разложение числа, то есть фактически само число. Как видишь, в скрипте, число x - генерируется, а потом раскладывается.Но если x неизвестно, неизвестно и его разложение, и множители, и остатки.Известен только делитель - последовательно увеличивающаяся степень двойки.Но, как видно по результатам работы скрипта, самый последний множитель в каждом разложении - равен нулю. Везде, при любом делителе.И хотелось бы как-то через эти разложения, от числа, прийти к нулю кратчайшим путём (ну или от нуля к числу),параллельно с этим - определяя (генерируя), как множители, так и главное - сами остатки.Сдаётся мне, что использование нескольких делителей - может помочь в этом, потому что видно, что есть некие закономерности...Но, всё это очень мутно у меня, пока что... Не могу сформулировать толком.> Пусть известно условие, которое исполняется, если число x - корректно.Тут имелось в виду то, что приходя от нуля к x, через генерацию множителей и остатков,можно к нему либо прийти, либо не прийти.Так вот, условие это такое, что оно исполняется, только если x составлено корректно.То есть, когда подобранное из множителей и остатков число - действительно равно x.Иначе, условие не исполняется.>В общем случае никак. Вот пусть тебе криптохеш известен. Или экспонента числа по модулю (DH, RSA). Это как крайние случаи.>Собственно ты и лезешь в DH/RSA и спрашиваешь, нет ли быстрого способа вычислить.>Способы есть, существенно более быстрые, чем перебор, но всё равно экспоненциальные.>Но это тебе надо в специальную литературу лезть.Узко-специализированное нечто, для конкретных целей, ну там коллизии всякие (к хэшам),или алгоритмы, атаки, бекдоры (RSA/DH) - всё это, не особо интересует...Тут скорее, я пытаюсь - именно общий случай рассмотреть.Но если хочешь узнать более конкретно, то вот...На пикрелейтед - простая, циклическая и элементарная группа Zp малого порядка - 13. Z13Как видишь, она состоит из 13-ти элементов, один из которых - нулевой (чёрная точка).Остальные 12 элементов, имеют свой номер от 1 до 12.Их можно складывать, вычитать, умножать и делить. А ещё, можно найти обратный элемент (-5 = 13 - 5 = 8; -6 = 7).Операция деления тоже определена, ведь число 13 простое, поэтому кольцо это - является конечным полем, полем Галуа.И в нём определена операция деления.Ну, и собственно задача, есть элемент, пусть он будет седьмым. И надо найти его индекс - число 7.Конечно же, число p может быть намного больше чем 13, и первое, что приходит в голову,так это последовательный перебор всех значений от 0 до 7 (или до дохулиарда-семь).Но чё-т сдаётся мне, что можно взять и поделить, а потом ещё раз, и ещё раз и ещё раз.
>>1440270>Ну, и собственно задача, есть элемент, пусть он будет седьмым. И надо найти его индекс - число 7.Я всё равно не понимаю. Что такое индекс?Ты можешь породить какую-то группу по умножению, её порядок будет = 12 (p-1 для простого p). Но эту группу ты чем-то порождаешь, каким-то элементом.Можно двойкой:1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1можно ещё чем-нибудь. Про выбор порождающих сейчас не помню.Найти обратный элемент несложно, это называется "расширенный алгоритм Евклида". Найти логарифм, то есть степень, в которую нужно возвести 2, чтобы получить 7, сложно. На этой сложности базируется система обмена ключей DH.Там есть более продвинутые алгоритмы, чем просто перебор, то есть для p порядка 2^64 ты можешь быстро найти, но они умеренно быстрые. Для 1000 бит ты уже не сможешь найти. Но это уже серьёзная наука по теории чисел и криптографии. Ты, конечно, можешь пытаться сам что-нибудь придумать, но поверь, ты не первый и даже не тысячный. Очень много думали и очень серьёзные люди.
>>1440258Тоесть тебе нихуя не известно про число, кроме длины его представления в двоичной системе и способа проверки этого числа на "правильность". И ты хочешь (быстро) найти это число?
>>1440519>>1440513Потому что ты пидор Потому что в питоне нумирация массивов начинается с нуля, потому что в большом массиве элемент под индексом 2, то есть третий элемент, это другой массив, третьим элементом которого является тройка. Запись things[2][2] означает "взять третий элемент третьего элемента списка things". Серьезно, чего ты ожидал другого? Это же самые азы
>>1440274>Я всё равно не понимаю. Что такое индекс?Индекс - это порядковый номер элемента в той группе. Если элемент - седьмой, то индекс - 7.>Ты можешь породить какую-то группу по умножению, её порядок будет = 12 (p-1 для простого p).>Но эту группу ты чем-то порождаешь, каким-то элементом.>Можно двойкой:>1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1>можно ещё чем-нибудь.А это для чего?Вообще, было бы годным - как-то породить полугруппу, например Z6,и каким-то образом проверить принадлежность элемента к этой полугруппе,то есть узнать содержится ли элемент в полугруппе или же нет.Это дало бы возможность сравнивать индексы двух элементов,отвечая на вопрос: "Больше ли индекс первого элемента - чем индекс второго или меньше?".Так, для группы Z13:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12полугруппой являлась бы некая группа Z6:0, 1, 2, 3, 4, 5, 6, содержащая ровно половину элементов изначальной группы.Или, если с другой стороны, то :7, 8, 9, 10, 11, 12, 0 - вторая половинаТогда, разница двух элементов, скажем 3 и 7,может быть как положительной: 7-3 = 4;так и отрицательной: 3-7 = -4 = (-4) mod 13 = (-4+13) mod 13 = 9 mod 13 = 9;А определяя в какой полугруппе результат вычитания - можно было бы определить,больше ли индекс 7 у уменьшаемого элемента, нежели индекс 3 у вычитаемого, или же он меньше.А ещё, некая полугруппа Z6, порождённая двойкой:0, 2, 4, 6, 8, 10, 12 - она содержала бы все элементы с чётными индексами.Однако (12 + 2) mod 13 = 1; (1+2) mod 13 = 3; и т. д.То есть, если продолжить предыдущую Z6, продолжая прибавлять двойку,то она просто совпадёт с изначальной группой:0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11 - будучи при этом той же,изначальной Z13, а не её полугруппой.Если удалось бы сгенерировать именно полугруппу, и проверить принадлежность элемента ей,то можно было бы сказать чётный ли индекс элемента, или же нечётный,а дальше уже, чётко зная чётность - либо разделить этот индекс на два, либо отнять единицу а потом разделить на два.И так, последовательно - прийти к нулю, извлекая биты числа x.>Найти обратный элемент несложно, это называется "расширенный алгоритм Евклида".Я знаю. Индексом такого элемента является мультипликативная инверсия,индекса изначального элемента по модулю количества элементов.>Найти логарифм, то есть степень, в которую нужно возвести 2, чтобы получить 7, сложно.>На этой сложности базируется система обмена ключей DH.Вообще-то, у меня, задача состояла в том,чтобы найти индекс элемента в пиздатом кольце, а не показатель степени.Но судя по этой таблице https://ru.wikipedia.org/wiki/Дискретное_логарифмирование#Примервидно, что показатели степени, по порядку - тоже формируют кольцо, и результаты - замыкаются в кольцо.>>1440286>Тоесть тебе нихуя не известно про число, кроме длины его представления>в двоичной системе и способа проверки этого числа на "правильность".>И ты хочешь (быстро) найти это число?Если более конкретно, то меня тут, скорее - эллиптическая кривая в конечном поле,и точка, как элемент абелевой группы. Ведь там множители точек тоже образуют кольцо (поле), и группу.А так-то я в общем вопрос ускрения перебора тут рассматриваю...Может кто и найдёт какие-либо скрытые закономерности и взаимосвяжет их в алго или систему уравнений.>>1440304>010101>в данном случае это 6?Да. >>1440274>Там есть более продвинутые алгоритмы, чем просто перебор,>то есть для p порядка 2^64 ты можешь быстро найти, но они умеренно быстрые.>Для 1000 бит ты уже не сможешь найти. Но это уже серьёзная наука по теории чисел и криптографии.Я видел тот же pollard rho алгоритм, который работает до корня от числа.>Но это уже серьёзная наука по теории чисел и криптографии.>Ты, конечно, можешь пытаться сам что-нибудь придумать, но поверь,>ты не первый и даже не тысячный.>Очень много думали и очень серьёзные люди.Вот я и думаю... И глядя на ту таблицу, то есть на результат работы скрипта https://rextester.com/TVNM46327решил поставить задачу вот так:Оптмальнейшим образом - попытаться прийти от нулей к числу, используя различные делители- сделать это за ограниченное количество шагов, и возможно даже - синхронно.Согласись, перебрать остатки - намного проще, нежели перебрать всё число.Особенно если их перебирать не надо, и если они как-то закономерно между собой - коррелируют.Ведь я вижу, что данные каким-то образом всё-же взаимосвязаны в той таблице:1. Все множители различных делителей - содержатся в множителях, при делении числа, с остатком - на 2.2. Первый множитель - сдвигается на показатель степени двойки у делителя.3. ВСЕ множители - плавно убывают до нуля, за ограниченное битовой длиной числа - количество операций.4. Остатки всегда меньше делителя, они содержат сдвинутые биты изначального числа, и несут всю информацию о числе.5. Иногда, остатки повторяются, а иногда - нет. Если повторяются, то остаток меньше делителя, иначе - больше, и остаток - разница между предыдущим остатком и делителем.6. Вижу связь между множителями различных делителей - множитель текущего делителя,это либо (предыдущий множитель / 2), либо (предыдущий множитель - 1)/2Может ещё есть какие-то закономерности, но я их не вижу?
>>1440556>0, 1, 2, 3, 4, 5, 6, содержащая ровно половину элементов изначальной группы.Здесь у тебя 7 элементов.У меня такое ощущение, что ты не до конца разобрался с темой, как эти группы устроены.Мне приходится лезть в литературу, чтобы вспомнить определения. Процитированная "полугруппа" из 7 элементов не будет полугруппой, она не замкнута относительно операции. 5+6 = 11 mod 13, это не элемент этой полугруппы. А ещё, некая полугруппа Z6, порождённая двойкой:0, 2, 4, 6, 8, 10, 12 - она содержала бы все элементы с чётными индексами.Однако (12 + 2) mod 13 = 1; (1+2) mod 13 = 3; и т. д.Вот ты и сам ответил, что это не полугруппа.Не путай полугруппы и подгруппы.Полугруппа отличается от группы, что там может не быть единичного (или нулевого, если мы по сложению строим) элемента, может не быть обратного. Но она замкнута относительно своей операции.Если полугруппа порождена одним элементом, то такие полугруппы будут, порядок самой группы не является простым числом. 13 простое число, поэтому все элементы, кроме нуля, будут по сложению порождать полную группу. Если ты смотришь мультипликативную группу по умножению, то её порядок 12, соответственно там уже будут полугруппы меньшего порядка, как то 2, 3, 4, 6. Не очень понимаю, как ты будешь принадлежность элемента какой-то подгруппе или полугруппе определять. Здесь простые случаи. Если ты будешь работать со сложными группами, которые представляются в виде матриц, то там, даже имея порождающие, не такая простая задача найти подргуппы. Зачем нужно то, что ты спрашиваешь, не очень понимаю. Смотрится так, как будто ты пытаешься придумать какие-нибудь способы решения криптографических задач вроде RSA и DH. Поверь, ты не первый, тут всё очень хорошо изучено.
Анон, подскажи, пожалуйста.Есть таблица вида:№ |Cat1 | A1 | B1 | C1 | D2 | A2 | D2 | B3 | CКак привести её к виду одномерного массива:№ A B C D1 1 1 1 12 1 1 0 1...Т.е элементы второго столбца оригинальной таблицы должны стать названиями столбцов новой матрицы, а наполнения ячеек этих столбцов - булевое 1 или 0 - т.е были они в оригинальной таблице или нет?
>>1440657nombers = dict(enumerate(set(yoba[:, 0]))))names = dict(enumerate(set(yoba[:, 1]))))vtoraya_tablica = np.zeros(len(nombers), len(names))for i in yoba.shape[0]: vtoraya_tablica[ nombers(yoba[i, 0]), names(yoba[i,1]) ] = 1примерно так
Есть встроенная функция open()Про нее могу почитать в документации в Built-in Functionshttps://docs.python.org/3/library/functions.html#openА в каком разделе можно почитать про файловые аргументы типо .write() или .close() ?
Добрый день всем.Аноны, на работе проводят курсы для желаюших вкатиться в big data, аналитику и прочее с использованием питона (нет, фирма не уровня говно параша). Сам работаю в около айти сфере. Насколько это перспективно по вашему? С математикой и погромированием ранее проблем не испытывал.Давненько думаю про backend и беспокоит, что всякие js, java и php дышат в спину, а то и вовсе востребованее. Спасибо
>>1440602>Здесь у тебя 7 элементов.Да, включая нейтральный, нулевой элемент. Вот тут чёрную точку из картинки поста >>1440270>Процитированная "полугруппа" из 7 элементовНу, я просто взял то кольцо с картинки, мысленно провёл прямую от чёрной точки к верху кольца,потом взял шестой элемент и все элементы до этого, шестого - просто загнул в такое же кольцо.Да, это Z7, не Z6. Не знаю, что это получилось - полугруппа ли, просто группа, или подгруппа...Но там, без нейтрального элемента - ровно половина элементов этих...>Процитированная "полугруппа" из 7 элементов не будет полугруппой, она не замкнута относительно операции.>5+6 = 11 mod 13, это не элемент этой полугруппы.Действительно, 5+6 = 11 mod 13 = 11 - не является элементом {0, 1, 2, 3, 4, 5, 6},но является элементом {7, 8, 9, 10, 11, 12, 0}.А если 5+6 = 11 mod 7 = 4, то хотя 11 !==4, но 11 - это четвёртый элемент в {7, 8, 9, 10, 11, 12, 0}.Если сравнить их вот так:{00, 01, 02, 03, 04, 05, 06} - тут 04 на определённой позиции{07, 08, 09, 10, 11, 12, 00} - а тут 11 на той же позиции>А ещё, некая полугруппа Z6, порождённая двойкой:>0, 2, 4, 6, 8, 10, 12 - она содержала бы все элементы с чётными индексами.>Однако (12 + 2) mod 13 = 1; (1+2) mod 13 = 3; и т. д.>Вот ты и сам ответил, что это не полугруппа.Ну понятно, если её полностью догенерировать, то получится та же группа.А я - половинку хотел бы сгенерировать, не полную.То есть не по mod 13, а по mod (13+1)/2 = mod 14/2 = mod 7.Но не всю, конечно же, нахрена генерировать всю, особенно если там дофига элементов?>Не путай полугруппы и подгруппы.Да, в представленных выше примерах, речь скорее о отдельной группе, нежели о подгруппе, или о полугруппе.Полугруппой я её назвал не по терминологии, а просто потому что без учёта нейтрального элемента,там ровно половина элементов из предыдущей группы.Но, как видишь, нейтральный элемент там есть, и это элемент с индексом - ноль.>Но она замкнута относительно своей операции.Понятно.>Если полугруппа порождена одним элементом, то такие полугруппы будут, порядок самой группы не является простым числом.>13 простое число, поэтому все элементы, кроме нуля, будут по сложению порождать полную группу.Вот тут - понятно.А вот, выше, к простому числу прибавил единицу, сделал из него не простое,а потом уже, разделив на два - получил его половину.А дальше уже, по модулю этого числа - сгенерировал две разные, то ли группы, то ли полугруппы, то ли подгруппы.Так вот, число это, 7 - оно простое же! А группы - разные. И по модулю этого простого числа 7, они и взаимосвязаны, индексами.4 - является индексом элемента 11 во второй полугруппе, так как (5+6) mod 13 = 11; но в то же время: (5+6) mod 7 = 4; >Если ты смотришь мультипликативную группу по умножению, то её порядок 12,>соответственно там уже будут полугруппы меньшего порядка, как то 2, 3, 4, 6.Вот тут я не совсем понимаю, откуда ты получил число 12,и как группа по умножению, и её разложение может помочь подобрать индекс x...Но я вижу, что указанная тобой группа по умножению, порождённая двойкой:>1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1действительно содержит 12 уникальных элементов, а единичка - повторяется.При этом 2,3,4,6 - делители числа 12.А как её разложить на полугруппы, не очень понимаю.Но ясен пень, что если можно было бы проверить принадлежность элемента к полугруппе,то в маленьких полугруппах, в каждой из них по отдельности, было бы проще искать элемент,и можно было бы всё это дело распараллелить.Это уже намного - лучше, чем перебор всех вариантов в основной группе,с учётом того, что в пределах одной полугруппы, искать индекс элемента, если он есть,можно алгоритмами - до корня от значения индекса элемента в полугруппе.>Не очень понимаю, как ты будешь принадлежность элемента какой-то подгруппе или полугруппе определять. Это пока - просто абстракция. Ну, то есть - критерий какой-нибудь. Либо элемент есть в полугруппе/подгруппе, либо его там нет.Или если, вот, можно было бы условие какое-то сделать, например подобное условию принадлежности точки к эллиптической кривой,то можно было бы и не генерировать всю полугруппу/подгруппу полностью, и не перебирать индексы в ней,а просто подставить координаты точки - в уравнение, и проверить - лежит ли точка,В ПОДГРУППЕ группы точек эллиптической кривой в конечном поле, или же - не лежит.>Здесь простые случаи. Если ты будешь работать со сложными группами,>которые представляются в виде матриц,>то там, даже имея порождающие, не такая простая задача найти подгруппы.Ну если они ведут себя как кольца, или поля (если порядок - простое число, а значит пределена операция деления),то какими бы сложными не были все эти матрицы, для элементов такой группы,определены же всё те же операции сложения/умножения/вычитания/деления...Да, они сложнее будут, по структуре своей, но вцелом это те же операции...И если решить оптимально - этот вот, общий случай, с кольцами этими ебучими, то и эти матричные группы разрулились бывсе так же полиномиально, или хотя-бы субэкспоненциально.>Зачем нужно то, что ты спрашиваешь, не очень понимаю.Я уже писал выше, что у меня - эллиптическая кривая в конечном поле.Если более точно, то задача - дискретного логарифмирования на эллиптической кривой:https://ru.wikipedia.org/wiki/Дискретное_логарифмирование#В_группе_точек_на_эллиптической_кривойЯ вижу кольцо это, в группе точек на эллиптической кривой, то есть индексы точек - замыкаются в кольцо...Поэтому задача эта, немного переквалифицировалась на дискретное логарифмированиев кольце вычетов по простому модулю (то есть - в поле Галуа):https://ru.wikipedia.org/wiki/Дискретное_логарифмирование#В_кольце_вычетов_по_простому_модулюНо после всего этого, особенно после того, как оно всё заебало нахуй,я решил просто оптимизровать подбор самого x,используя разные пути прихода к нему от нуля, и разные делители.Поэтому, я написал тот скриптец, вкинул его сюда, и ржу.И мне чё-то кажется, что можно сделать систему уравнений, или написать на базе этого -какой-то пиздатый матричный самосинхронизирующийся мега-супер-пупер-гипер-ультра-алгоритм.
Блять, а ">=" к строкам применяется?Мне в последовательности надо кусок вырезать, начиная с определённой строки, вот только кусок повторяется, состоит из разного содержимого и расположен в разных местах.
Скоро аноны скажут "пиздуйте в math" и будут правы>>1440685>Вот тут я не совсем понимаю, откуда ты получил число 12,Порядок будет равен p-1. А если модуль pq, то порядок будет (p-1)(q-1), это так называемая функция Эйлера. На этом основаны алгоритмы DH и RSA.Можно придумать аналогичные алгоритмы на этом принципе.Но я вижу, что указанная тобой группа по умножению, порождённая двойкой:>1, 2, 4, 8, 3, 6, 12, 11, 9, 5, 10, 7, 1действительно содержит 12 уникальных элементов, а единичка - повторяется. При этом 2,3,4,6 - делители числа 12.2 - порождающий элемент мультипликативной группы.Он имеет порядок 12. Если ты возьмёшь 22 = 4, то его порядок будет = 6. Если вы возьмёшь 222 = 8, то его порядок будет 4. Если ты возьмёшь 2222 = 16 => 3, то его порядок будет 3, а вот 2^5 = 32 => 6, поскольку 5 взаимопросто к 12, то порядок будет 12.Тут всё просто.>>1440685>Я вижу кольцо это, в группе точек на эллиптической кривой, то есть индексы точек - замыкаются в кольцо...>Поэтому задача эта, немного переквалифицировалась на дискретное логарифмированиеЯ так и подумал. Ты пытаешься как-то просто решить серьёзные криптографические задачи, на которых сейчас всё строится. Поверь, тут очень серьёзная наука. Поверь, над этими вопросами думали многие десятки тысяч очень серьёзных математиков. Ну флаг в руки.
>>1440695Если ты возьмёшь 22 = 4, то его порядок будет = 6. Если вы возьмёшь 222 = 8,Тут знаки умножения пропали, которые стояли между двойками. Продолжать не буду, вряд ли кому интересно. Думаю, тебе стоит пойти в math. К питону это никакого отношения не имеет, к программирования почти никакого.
>>1440737пиздец. какие же вы блять ну просто... трассировку программы делай если что-то не работает, а не спрашивай об этом. бери и разбирай почастям всё тобою написанное.
>>1440746Мань, извини, но мне надо разобраться и сделать, и чем быстрее, тем лучше.Наставников и коллег у меня нет, а сраный стаковерфлоу и учебники не на всё дают ответы.
>>1440749если ты учишься то это>быстрее сделатьне канает. делай трассировку программы, отслеживай каждое действие в ручную и на одном из этапов ты поймёшь на какой ступени твои ожидания расходятся с результатом программы. это полезный навык.
>>1440753Биться над задачей можно очень долго. И есть возможность можно и срезать пусть обучения. Это не наука, где без усилий неизведанное не станет открытым, и надо непременно страдать и рвать жопу.
>>1440755Сделать трассировку будет гораздо быстрее, чем дождаться ответа здесь. Или ты совсем обленился?
>>1440755>и надо непременно страдать и рвать жопу. Почти в любой деятельности нужно пройти через цикл порванная жопа - оргазм от успеха. Эти американские горки эмоций и делают программирование таким притягательным. А ты вместо этого прокачиваешь навык попрошайничества на бордах
>>1440760>Или ты совсем обленился?Отчасти.Отчасти там столько проблем, что не знаешь что и ка решать.Есть ту Ыксперты панды? Или нампая хотя бы?
>ты мог неправильно датасет даже задатьВ jupyter показывается хотя быdata = pd.read_csv("X://123123123.csv")set = data['Колонка 1', Колонка 2', Колонка 3', Колонка 4']Как-то так + ещё 0,5 обработки.
Почему оно переносит строку без символа переноса строки \n?Как пофиксить? Так и должно быть? Неприемлимо бляд.я новенький, лучше обоссыте
>>1440874И почему нельзя писать title(рандомная_переменная), а в функции str(рандомная_переменная) можно?
>>1440874Потому что у функции print есть аргументы по умолчанию, а среди них есть аргумент по имени end, который по умолчаниж равен "\n", значение этого аргумента автоматически добавляется в конец строки, можешь его изменять, например print("qwerty", end="") напечатает qwerty без перехода на новую строку. А еще ты можешь задавать функции print сразу несколько аргументов, и они будут напечатаны в одной строке, разделенные пробелами, какой именно символ для разделения использовать определяет значение аргумента sep, сокращение от "separator", то есть "разделитель", по умолчанию sep равен пробелу. Так print("dog", "cat", "frog") напечатает строку "dog cat frog", а print("dog", "cat", "frog", sep="@@") напечатает строку "dog@@cat@@frog" Начинай поиски с встроенной функйии help, например, help(print), и документацииhttps://docs.python.org/3/library/functions.html#print
>>1440899>Так print("dog", "cat", "frog") напечатает строку "dog cat frog"Вывело ('dog', 'cat', 'frog')
>>1440874print() почти? всегда переносит строку. Ты бы хоть уточнил, что вообще хочешь получить в результате. Если "Govno Govno Govno", то используй, к примеру, print((example2 + ' ') * 2 + example2).мимонуб
>>1440902Я просто не хотел чтоб оно само переносилось, АТО в дальньейшем возникли бы некоторые проблемы
>>1440916На практмке почти всегда надо, чтобы принт печатал с новой строки. Это удобное поведение по умолчанию. Наверно, у тебя книга про второй питон. Раздобудь версию про третий питон, это настоящее и будущее питона.
>>1440918Эрик Мэттиз, год издания 2017.>На практмке почти всегда надо, чтобы принт печатал с новой строкиПонял, принялНаверное, Эрик просто старый пердун
>>1440695>Скоро аноны скажут "пиздуйте в math" и будут правыон уже попиздовал, но там нихуя не сказали, нахуй он там нужен со своим програмином да ещё и на питоне
Сап, анончики. Как временно можно перестать испытывать отвращение к текущему месту работы? Все было заебись, пока я не начал все глубже погружаться в код и осозновать, какое же ебаное говно было написано моими коллегами, из-за чего простые задачи растягиваются на несколько дней, потому что приходится все переписывать и заставлять это работать... Тим лид вообще уебан, если честно, нихуя не делает, но вечно говорит, что занят, лицемерный пидарас короче.
>>1440944Ну тут два стула:1. Отпуск2. Смена работы и поиск проекта посвежее.Если отработал более 6 месяцев - можешь спокойно менять работу, в резюме это выглядит ок.
>>1441050Потому что реверс перезаписывает все твои переменные - оно у тебя в самом конце.Попробуй засунуть реверс в переменнуюмимо нуб
>>1441059Так я тоже делал, этом случае выдаёт пустой список. Наверное это особенность этого реверса, с ним не получается сделать два разных списка, если конечно изначально не создать два разных списка.Задачу та я эту решил, хотел код короче сделать и нагуглил этот реверс
>>1441050Потому что у тебя l и l2 - два имени для реально одного объекта. Это не два разных списка, а один список. Сделай, напримерl[0] = 10000000print(l2)Это mutable типы. Аналогичная история со словарями, объектами и т.п. Сделай копию списка. Как l.copy() или какl2 = l[:]
>>1441075>>1441050и классичский реверс списка на питоне выглядит так:l2 = l1[::-1]Что это такое и как работает? Ботай про срезы ака слайсы
>>1441075i = ["1", "2", "3", "4", "5"]i2 = i.reverse()print (i, i2)А почему во втором списке выдает ноне?другой нуб
>>1441067>Так я тоже делал, этом случае выдаёт пустой список. Наверное это особенность этого реверсаЭто немного особенность питона.lst.reverse()ничего не возвращает. Это метод, который применяется к самому списку.lst = [*range(10)] # сделать список из 10 элементов от 0 до 9print(lst) # [0, 1, .. , 9]lst.reverse()print(lst) # [9, 8, ..., 0]
>>1441071Если ты про 4 задачу эйлера:for i in l: spisok1.append(i) spisok2.insert(0, i)Таким образом создал два разных списка и сравнил их>>1441075Спасибо, твой вариант тоже помог
>>1441077>>1441078i = ["1", "2", "3", "4", "5"]print (i)i.reverse()print (i)Вот так получилося, но как сделать чтоб из одного массива можно было достать джва разных результата?
Есть задача: отправлять гет запросы с ардуинки и выводить их в веб. Под ардуинку наговнячил, осталось веб. Выбор пал на питон потому что его мало-мальски знаю. Нужен какой нибудь фреймворк который работает с реквестами и рендерит хтмл. Джанго и фласк я так понимаю слишком функциональные, и мне потребуется какое то время чтобы в них разобраться. Нет ничего попроще?
>>1441102Есть такой мини-фрэймворк bottle, его исходный кодтвообще помещается в один файл. Вроде, не сложный. Может, подойлет тебе
>>1441102Зависит от целей и требуемого функционала.Если не нужна работа с базой, Джанго заведомо не нужен. Там на базу всё завязано, и вся суть фреймворка в этом. Тебе нужно быстрее разобраться, либо легковесное что-нибудь? Многие легковесные фреймворки требуют понимания продвинутых технологий питона, вроде asyncio. Боюсь, тебе или надо обвязку всякий uwsgi осваивать, как это работает, либо asyncio и аналоги. Может быть тебе проще будет сделать на node.js, что ты хочешь. Для несложных сетевых вещей самое то.
как сейчас фиксится поломка пипы, когда она не находит пакеты? В гугле советы, как всегда с этим языком, на уровне переустанови виндовс
>>1441185Разница не столь велика. Для начала лучше изучи, 1.9 какой, а разницу со второй проще по докам нагнать.Советую Antonio Mele(вроде так) с Яндекса брать и читать.
Аноны, какими средствами на pyqt5 лучше сделать pop-up (маленькое окно такое, типа оповещения, с текстом и изображением, которое должно вылазить у юзера в углу открытой программы)?Обычное окно не подойдёт, я так понимаю.
>>1441185У джанго очень хорошие доки. Там и пример учебного приложения хороший, шаг за шагом, и отдельно первичный разбор функционала джанго, и детальная информация.Всё есть. Если тебе хочется именно русскую документацию, то может там и старая версия. Но там совсем не такая большая разница. Из заметного работа с url, смотри лучше английский вариант.
>>1441225Вовсе не только, очень много вакансий без джанго. Но правда там торнадо какой-нибудь или asyncio, это более серьёзные вещи и более сложные.
>>1441235Вот это не поможет совсем, это просто перпендикулярные вещи. Но джанго в любом случае очень полезная вещь.
>>1441243Не в качестве помощи, а именно в качестве полезной штуки, изучая которую, можно будет прокачаться
>>1441185На русском книга недавно вышла "Django 2 в примерах". Хуй знает можно ли скачать, я не нашел пару месяцев назад и купил. Там тебе и про асинхронность расскажут, и про редис, и про рестфул апи. Годнота короче. Советую не пожалеть 1200 рублей и купить.
>>1441272Два чаю этому господину, книгу не покупал, так как в моих пердях ее точно нет, но вот скачать я ее скачал, подтверждаю книга огонь, сейчас пилю по ней магазин, в целом все разжежывают и рассказывают, думаю после любой сможет вкатится сильным таким джуном как минимум.
Ну привет змеетред. Подскажите что сейчас ожидается и что требуется на собеседовании от джуна питониста? >>>>>>>>>>>Платиновый вопрос
>>1441422Смотря куда идёшь, я вкатывался через Django, смострячил магазин за пару вечеров и показал на собесе. Вообще требуют знания ООП, если там какой то скрапинг сайтов то естественно знать регулярные выражения, плюс аддоны типа beautiful soup и т.д.
Почему выдает разные результаты? Че за магия, блядь?Задача создать и суммировать список чисел с помощью функции sum()
>>1441481Ты во втором примере принтуешь исходный список, а не сумму чисел в нём. Напишешь print(sum(numbers)) - всё будет нормально.
>>1441485Пиздец я дебил, это получается такие вот функции не конвертируют переменные если я без переменной их использую?
>>1441489А вот если я возьму за привычку мне так проще для каждой подобной ситуации создавать переменную заместо того чтоб сразу выводить нужный результат, это будет говнокодом?
>>1441490Мои нубские соображения: если тебе нужно вывести результат без того, чтобы его в дальнейшем каким-либо образом использовать, то лучше лишние переменные не создавать.
>>1441481По правде говоря, твоя исходная задача может быть решена вообще в одну строчку:print(sum([i for i in range(1, 10)]))
>>1441513>>1441524Кек. Сука, яж так нихуя не пойму. Ну выучу я этот ваш синтаксис хуинтаксис, функции хуюнкции, но понимания того как всё это работает не придет жеж. Или дроча питон можно таки добраться до самой сути камплюктера?Не хочу быть таким, советуйте что почитать после того как я освою основы питончика!
>>1441531А что непонятного? Там же прямо так и написано, что делается. Вывести сумму чисел из диапазона от 1 до 10
>>1441535Пока правописание непонятно, например. Вот принт эт функция, например, в этой функции может быть аргументом функия в которой аргументом будет еще одна функция. Так можно?
>>1441531Дрочи задачи на сайтах всяких, потом со временем поймешь, почитаешь объяснения, запомнишь примеры хорошего кода и будешь фибоначи с закрытыми глазами считать.
>>1441538> Вот принт эт функцияда> в этой функции может быть аргументом функияПринт берет результат работы функции sum и делает свое дело.> которой аргументом будет еще одна функция. пока ты передаешь функции то, что она принимает проблем не будет, можешь городить хоть 100 функций подряд
>>1441513>[i for i in range(1, 10)]Вот эту конструкцию можно записать как[*range(1, 10)]и любую аналогичную с генератором
>>1441456Магазин был согласно пепу оформлен? На гите показывал все это? Можешь показать что показывал на собесе soc13140@ya.ru очень большой страх просить деньги за услуги в которых я плаваю... Но в которых мне хочется развиваться
>>1441566Мне кажется анон подпизживает.Джанго не ЦМС, в комплекте только для бэка идёт. Рисовать фронт или придётся с нуля, или брать чужой макет. Макет ещё надо прикрутить к бэку, наладить взаимодействие. Короче тут не так просто.
>>1441552Да поебать мне какие он там кнопки наугад нажал и получил верный результат. Нахуя с такими вопросами вообще идти сюда ебаный в рот.
>>1441566>Магазин был согласно пепу оформлен?А на оформление по ПЕП похуй, это вообще ни о чём. Система в первую очередь должна работать и спроектирована хорошо по use case, по моделям внутри и пр.Это не так просто, если ты делаешь реальное приложение, а не примитивный набросок-демонстрацию.
>>1441570Мне кажется, анон говорил про бек только, или какую-то говеную морду, учитывая джунность позиции, о чем указано в моем посте, делать полностью работающий магазин, с прикрученными платёжками за вечер, он мог бы претендовать на что-то гораздо выше чем джуниор. Я думаю просто логика записывания в базу покупок, корзины и прочего.
>>1441635>Только питон, базы и ооп? Тоесть даже фуллстек не нужен? А зачем? Сеньёру отличается не размером списка, а опытом работы и глубиной понимания технологий.Вот первое обязательное требование:1) Опыт разработки системы, которая работает под высокой нагрузкой и с большими объёмами данных.Всё, уже это требование очень серьёзное. Это только реальный коммерческий опыт, и не каких-то небольших сайтов, а чего-то реально нагруженного. Здесь масса проблем будет, и надо хорошо понимать, откуда эти проблемы берутся, как они проявляются, как диагностировать и решать.3) Работа с разными видами баз данных, оптимизация запросов, настройка самих баз. Это требует опыта и квалификации.С п.2, многопоточностью, проще, но это не про джунов всё-таки. В желательно тоже много чего серьёзного. Подразумевается обычно, что чего-то из этого есть.
>>1441665>>1441635Более того, старших вакансий на питоне без фронта очень много. Но все подразумевают серьёзные бэк-скиллы.
>>1441665Ну когда в пхп пытался вкатитьсяпонятно, программирование хтмл и верстка на ксс кокок еще, этим я лет в 15 увлекался, так там везде фуллстек только.Правда, в пхп далеко я не продвинулся - ни одного фреймворка не выучил, ООП не освоил толком, зато задачки на процедурном коде у того самого ОПа вполне себе решал, кек, держу в курсе.А чем вообще питон от пыхи в вебе отличается? За исключением того что в питоне одну задачку можно решить двумя строчками, в отличии от и анальным ограждением разметки кода пгобеламикокок угнетение гулаг швабодка
>>1441676>Правда, в пхп далеко я не продвинулся - ни одного фреймворка не выучил>>1441676>А чем вообще питон от пыхи в вебе отличается?В твоём случае всем. Если ты работал без фреймворков, то ты или создал свой фреймворк но это точно не так, или у тебя была типичная php-лапша, где скрипт получает запрос, сразу обращается к БД и генерит код в промежутках.На питоне такой xCGI подход не работает. Там другой принцип построения сайтов. Тебе надо изучать и сам питон, и технологии построения сайтов через фреймворки. Это уже другой уровень.
>>1441678>типичная php-лапша, где скрипт получает запрос, сразу обращается к БД и генерит код в промежутках.Это. Даже доставляо удовольствие, до тех пор пока не понял что я ограничен ссаным браузером.>На питоне такой xCGI подход не работает. Там другой принцип построения сайтов. Тебе надо изучать и сам питон, и технологии построения сайтов через фреймворки. Это уже другой уровень.Заебись, прямо мотивировал
>>1441678Ты очень сведущ, скажи пожалуйста, основной пласт работы для питониста это веб или что то другое?
>>1441680Работаю щас на лесопилке 2 через два в мухосрани, игры заебли в свое время, сериалов нормальных не завозят, жены нет, накатывать под ютьюб каждый вечер здоровье уже не позволяет.Вот сижу, хунёй всякой страдаю тут, на должность в уютненьком коллективе зуммерков-разработчиков даже и не рассчитываю - дрочу просто для того чтоб все охуели как я могу.Ага, сегодня первый день выходных, накатываю охоту крепкую и мрию о том что рано или позно освою основы погромирования и начну пилить пет проекты фор фан, такссать.продолжаю держать в курсе
>>1441681Еще сисадминам пригождается, вроде. Не зря жеж в большинстве дистрибутивах линукса питон дефолтно изкаробки поставляется
>>1441476Да там даже не полноценный магазин, верстка минимальная, корзина, вывод товаров и т.д. Сделал чтобы просто было что показать на собесе.
>>1441578Именно так, накидал бэк магазина, из функционала каталог товаров, персональная страница товара и корзина все. Просто чтобы показать что я умею в в Джанго. Верстка минимальная была, JS не было вообще.
>>1441570А мне кажется ты долбаёб, я сделал просто бек простенького магазина, с примитивной вёрсткой, основная задача была показать, что я умею работать с Джанго, знаю структуру проекта, и т.д. этого были вполне достаточно чтобы вкатится.
>>1441566Не ссы никто не ждёт от джуна проект уровня Инстаграм или Авито. Достаточно показать что ты умеешь хоть что-то . Выше были посты про книгу Django 2 в примерах, там есть пример навороченного магазина в сто раз круче чем у меня, так что качай книгу и делай все по ней и в конце будешь готов к работе джуна если не больше.
>>1441698Тоесть задача говнякакть код максимально быстро, хоть на джумле - главное чтоб заказы фирме были?Рыночек решает, однако
>>1441702Нарисуй примерно то, что хочешь видеть. Я так понял, здесь сидят ребятки которые не хотят обосраться по простому поводу, и похуй что доска анонимная.Бамп>>1440878
>>1440878Потому что title() - это метод класса str, а str() - конструктор объекта соответствующего класса. str.title() не принимает никаких аргументов, кроме объекта своего класса (поэтому и в скобки записывать нечего), а применение метода в Python оформляется через точку, а не с помощью записи в скобки.мимонуб
>>1441720Что-то мне подсказывает, что различия и соотношения между терминами "функция", "метод", "класс", "объект класса", "конструктор класса" etc стоит прояснить для себя чуть ли не в первую очередь, если желаешь вкатиться в Питон.
>>1441723Был один тип что видеоуроки для пыхи преподавал, так он гордился тем что преподает основы языка сразу начиная с ООП, и похуй что в первом же уроке он говорил, мол пока не думайте что значит for в конкретном примере, просто делайте что я говорю - главное понять суть того что я вам сейчас скажуМеня такой подход вообще не устраивает, например, особенно если я бомж в погромировании и вообще впервые пытаюсь вкатиться.
Питонисты, помогите тугодуму. Вообще не могу в алгоритмы, все пыжусь и пыжусь над сортировками. Это какой то пиздос, как вообще этот Radix sort сделать ? Короче, есть годные книги по сортировкам на питоне ? знаю звучит хуйово
>>1441481Во втором случае сделай numbers = sum(numbers)Тем самым переопределишь старую переменную массива на сумму его значений
>>1441732> Короче, есть годные книги по сортировкам на питонеВ этом твоя проблема Ты изучаешь способы написания алгоритмов на N языке, а не сами алгоритмы Возьми язык Shema, он прост как два пальца, за 1.5 часа освоишь. На нём реализовывай алгоритмы в отрыве от языка. Глянь еще Грокаем Алгоритмы, там на пальцах и картинках поясняется. Годная книжка в обще если тебе нужно понимание алгоритмов, а не просто реализации алгоритмов, то без матана никуда. Тебе в /math
>>1441732Алгоритмы сами по себе, питон сам по себе.Тебе надо разобраться с алгоритмом, почему и как он работает. Это первая задача. А вторая задача в том, как грамотно реализовать алгоритм на нужном языке программирования. Два разных скилла, оба нужные для развития. Хотя в жизни ты будешь пользоваться библиотечными реализациями, конечно же.Конкретно про radix, она же "числовая сортировка", попробуй на бумажке просто с конкретными примерами её осмыслить. Она простая в плане алгоритмов. Вот как грамотно реализовать? Это думать уже надо.
>>1441531Самое удобное и понятное - читать в процессе. Заходишь на chekio или codingame и начинаешь решать все подряд. Будешь сталкиваться с проблемой или слишком сложным исполнением задумки - ищи на Стаке и в документации.Чтобы научиться программировать, надо программировать
>>1441758Подразумевает, и много. Не не в сортировках, которые просто вынесены в отдельные функции. Вот работу с деревьями ты уже так просто в отдельные функции не вынесешь. И много чего ещё не вынесешь.
>>1441739>>1441757Спасибо аноны, сами эти сортировки я уже давно на бумажке расписал по нескольку раз, но проблемы с реализацией. Бывало загуглю реализацию и ахуеваю от того, как люди додумали написать для сортировки код, причем так кратко и лаконично. Причем мне очень трудно даётся написание алгоритма с рекурсией, прям хоть ты убей, ни как не получается.Ну а с МатАном у меня вроде норм. Диффуры там, интегралы. Об этом речь идёт ?
>>1441700Многое зависит от компании, где то да похуй как ты это делаешь, главное чтобы сделал, меня например просят вёрстку на работе подправить или кнопочку там добавить или убрать и похуй что я бекенд, главное есть возможность получать опыт. Я сейчас уже работаю третью неделю за все время на питоне написал строчек 5-6, основная работа это писать запросы в БД и из БД в soap сервисы других компаний (платежные системы) да первые дни хотелось все бросить и съебать, даже было предложение о знакомого на другое место где больше по деньгам но туманные перспективы, в итоге пересилил себя и остался, вроде втягиваюсь потихоньку, скоро обещал дать допилить пару модулей уже на питоне. В целом жить можно, основная цель стать мидлом и съебать на большую ЗП и лучшие условия
>>1441700Далеко не всегда.Если фирма крупная, то с кодом можешь работать не ты один и важна читаемость и тд.
Поясните, пожалуйста.class Demo(Frame): def __init__(self, parent=None, options): Frame.__init__(self, parent, options)Что такое "options" и логика parent и вообще вот эти две строчки.Зачем нужна 3-ья строчка? Сорян за тупость.
>>1441884Ты делаешь класс Demo, который наследуется от FrameТы реализуешь конструктор. То если ты сделал свой конструктор, то конструктор родителя вызван не будет. Впрочем, это для всех методов класса так, которые ты переопределяешь. Для этого ты и вызываешь явно конструктор класса-родителя. options, с двумя звёздами - это такой способ для получения словаря со всеми элементами "ключ-значение". Аналогично, когда ты передаёшь словарь с двумя звёздыми в функцию, происходит его раскрытие.Если она звезда, то это уже список позиционных аргументов.
>>1441884про звёзды тут есть:https://pythonworld.ru/tipy-dannyx-v-python/vse-o-funkciyax-i-ix-argumentax.html
>>1441894>>1441896Про звезды всё понял.Не совсем понял про переопределение конструктора.Это пример из Лутца.Есть фрэйм. Он делает подкласс Демо с кнопками. Нахуя он переопределяет конструтктор фрейма, чем он его не устраивает в этом конкретном примере?И не понимаю, зачем вызывать конструктор родителя явно? И это касается любых методов?
>>1441599На первом пике - да. И ответ тебе - 45. На втором ты суммируешь и все, список остается списком, его ты на печать и выводишь.
>>1441919Если ты чётко знаешь, что конструктор родителя тебе не нужен, то не надо его вызывать. Но в реальности часто конструктор делает какую-то полезную работу, проводит инициализацию внутренних переменных, может подгружает что, и т.п. Ты ведь наследуешь ради того, чтобы получить какой-то функционал родительского класса. А без вызова конструктора этого функционала может не быть.
А тут ест аноны, которые работают над серьёзными вещами типа дата сайнс или машиным обучением, а не магазины делают?
>>1442000Может и есть, только чем тебе магазины не угодили, лучше пилить какой нибудь магазин, чем сидеть без работы или работать дворником
Ньюфаг докатился до этих ваших фреймворков для веба.В вакансиях онли Джанго. А когда и для чего используется Фласк? Ну и что лучше учить для каких целей? Вообще немного не понимаю, что для чего и зачем.Объясни пожалуйста, анон.
>>1442009Я про заработок не спрашивал, но если на то пошло, то я лучше на завод пойду, или мебель собирать, чем буду магазины дрочить. для меня парень который собирает магазины это профессия уровня переустановщика винды, но никак программиста
На питоне можно делать денежку по найму из дома, вроде как фласк какой был? сейчас смотрю питон 3.0, 16 часов курс на инглише, что бы написать специальную прогу для стиралки, что бы её на гвс подключить и она отбирала гвс только когда нужна гвс.мимо заебал завод, спина болит, фильтры воздуха проебали и теперь меня ещё там и травят
>>1442105Чувак, я сам работяга с лесопилки, и считаю что кодинг должен доставлять в первую очередь, а заработок с этого он рано или поздно придет. По сему, просто дрочи ЯП как хобби заместо игор/сериалов в свободное время и смотри как оно тебе заходит - АТО можешь вложить во вкат огромные ресурсы и обосраться на пол пути.
>>1442113Лишь 5 процентов людей имеют страсть с которой можно навариться, у больнишства же страсть это привычные игры, секс, путешествия и т.п.
>>1442174Ну бля, здесь все уприается в процесс обучения - главное максимально легко и интересно его преодолеть, после чего писать говнокод и наслаждаться результатом.Именно наслаждаться, томущо когда напишешь кнопки регистрации и авторизации которые будут работать, пусть даже на адском говнокоде - ты получишь такое моральное удовлетворение, такое, что ни одна катка в доте тебе не даст.
Есть один кусочек кода: https://pastebin.com/UE7DC4smЧто-то типа анимации загрузки для моего скрипта.На каждой итерации звёздочка "*" проходит по ячейкам в виде квадратных скобок "[]", в конце цикла возвращается на исходную позицию и начинается двигаться по-новому кругу. Проще запустить и посмотреть как оно работает, чем объяснять на словах. Так вот, как сделать так, чтобы в конце цикла звёздочка не возвращалась на исходную позицию, а шла в обратном направлении?
>>1442389Вот ещё такой вариант. Он чуть более большой, тут просто другая идея архитектурнаяhttps://pastebin.com/shmrgiTYа именно, чтобы генератор для этого использовать. В этом случае код немного больше, но так ты можешь более сложное поведение программировать.Можно сделать компактнее и использованием itertools, создать списокl = [1, 3, 5, ..., 17, 19, 17, 15, ..., 3] и дальше идти циклом по нему. for i in itertools.cycle(l):print(...)https://docs.python.org/3/library/itertools.html#itertools.cycle
>>1442389Конструкцию index=[x for x in range(len(s)) if x%2] # 1,3,5...19можно записать какindex = list(range(1, len(s), 2))
>>1442423>>1442389Если ты этот список дальше сам по себе не нужен, лучше его и не создавать, сразу писать for i in range(1, len(s), 2): <что-то делаем с i>
Аноны, как можно более удобнее рыться по словарям?К примеру есть такой словарь:https://pastebin.com/VU4CwsfBКак можно достать значение 1, не используя этот дебильный метод?:json.get("fun").get("j").get("f").get("1")
>>1442500Можно так записать:try:json['fun']['j']['f'][1']except:...Что более читаемо. Штатных инструментов вроде нет, но можно слепить что-нибудь колхозное в стиле xpath, чтобы была функция вродеxget(json, 'fun/j/f/1', default = 555)это иногда довольно удобно. Реализация строчек 10 максимум.
>>1442458Я только начал его изучать и решил задать вопрос,раз уж в книжке пишется что не надо заботиться об памяти используемой программой
>>1442524Надо будет но не сейчас, пока не забивай голову такими вещами, изучай основы и дальше по своему усмотрению Django/Flask/Data science и т.д . Оптимизацией приложения обычно занимаются дяди сеньоры помидоры, вот они и думают о памяти, скорости и т.д.
>>1442527ты не указывай, что мне делать, хуйло. я сам без тебя разберусь, лучше на первый вопрос ответь
>>1442500Можешь специальный класс создать, чтобы было удобно серелиозтвать/десерилизоать его в json, и было удобно работать в своем коде. Есть библиотеки для этого, например, marshmallowhttps://marshmallow.readthedocs.io/en/3.0/
>>1442533О памяти заботиться не надо, нет в питоне с этим проблем. Там есть сборка мусора, точнее контроль через подсчёт числа ссылок.Про профилирование много в официальных докахhttps://docs.python.org/3/library/debug.htmlесть модуль tracemalloc, по идее для таких задач, но лично я его никогда не использовал. Актуально более-менее думать о производительности, соответствующие инструменты полезно представлять. В память почти без шансов упереться, а в производительность легко.Я бы тоже советовал на другие вещи посмотреть, разобраться с базой языка, со всякими генераторами, метаклассами, с мультипоточностью и мультипроцессностью, с асинхронностью и всякого разного ещё. Это вот полезно и сложно.
>>1442552Да какие тут шахматы, просто было бы интересно послушать про оптимизацию приложения>>1442546Спасибо за ответ, но я думал ты что-нибудь конкретное расскажешь. Например инстагрум (а он написан на джанге, ну или как минимум его часть) вообще отключили сборщик мусора и получили прирост в производительности. Пишут ли вообще C-экстеншины в продакшене? Как обстаят дела с Cython, PyPy, Numba? Есть ли среди этих инструментов что-то готовое к использованию или действительно легче написать c-extension или вообще вынести в отдельный сервис на каком-нибудь более производительном языке (Go, например). Какой план у разработчиков питона, планируют ли они улучшать производительность языка, ведь уже всем понятно, что это главный недостаток языка. Вроде слышал, что в версии 3.8 внесли изменение в multiprocessing, и теперь по идее, процессы должны стать более легковесными.И как обстаят дела с асинхронностью в Python, про asyncio знаю, но слишком мало стандартных либ, поддерживающих асинхронность. Да и что использовать в продакшене: aiohttp, sanic или что-то вообще другое? Слышал, что джанга 3 пилиться с заделом под асинхронность.P.S. извини, что назвал хуйлом
>>1442565* обстоят>>1442546Ну и по поводу твоего поста: разве метаклассы вообще применяются в продакшене, это же довольно сильно бьет по читаемости кода? На мой взгляд эти штуки могут быть полезны только при разработке собственной либы/фреймворка. Вообще, заметил такой интересный факт, что в 90% случаев, там где люди используют метаклассы, можно было бы обойтись обычным декоратором для класса
>>1442546Вообще задам более абстрактный вопрос: Какова в принципе область примения Python в вебе? Есть ли ему место в хайлоаде?Есть тут такие разработчики, которые использует Python в высоконагруженных приложениях, и при этом не пожалели об этом после нескольких лет эксплуатации? Было бы очень интересно послушать ваши стори.Ну помимо этого, хочу поднять такую тему как архитектура веб-приложений в Python. Даже в таком популярном фреймворке, как Django до сих пор не сложилось строгой архитектуры проекта. Понятно, конечно, что есть апликайшины и базовая структура, но это всё равно не то. Фрейморку уже 10 лет и по сути до сих пор нет конвенционального мнения где хранить бизнес-логику (бля, некоторые вообще во вьюхах до сих пор всё хуячат). Опытные разработчики, какой подход используете вы при организации структуры проекта? Можно не только про джангу, но и про другие веб-фреймворки/либы. Буду рад если накидаете годных источников по этой теме.
Кстати, какой пакетный менеджер всё-таки выбрать pipenv или poetry? Какие у каждого достинства и недостатки?
>>1442572Ты спрашиваешь слишком специализированные вопросы.У меня нет опыта реального хайлоада. Я думаю, тебе надо идти на специализированные ресурсы по питону или хайлоаду. Я правда не знаю, у тебя просто праздное пионерское любопытство, либо же серьёзный интерес и приличная квалификация.>>1442572>не пожалели об этом после нескольких лет эксплуатацииПравда жизни в том, что до хайлоада проект надо довести и не сдохнуть на полпути. Фейсбук писали на PHP, потом придумывали техники, чтобы его радикально ускорить, компилятор PHP сделали и ещё что-то. Если бы сразу писали на C++, может такой проблемы не было бы. Но скорее всего потому, что они просто не написали бы логику за разумное время и с разумными ресурсами, и вместо фейса взлетел бы другой проект. На таком же PHP или чём-нибудь подобном.На питоне хорошо логику реализовывать. Сейчас платформа активно развивается, перспективы есть. С тредами печаль, но нынче главный упор на асинхронность, её недавно поддержали, но прилично.
>>1442565>Слышал, что джанга 3 пилиться с заделом под асинхронностьВот что они сами пишут:> Django 3.0 begins our journey to making Django fully async-capable by providing support for running as an ASGI application.> Note that as a side-effect of this change, Django is now aware of asynchronous event loops and will block you calling code marked as “async unsafe” - such as ORM operations - from an asynchronous contextТо есть ORM пока поддерживаться не будет.Но Джанго это в первую очередь ORM, там реально очень крутая система моделей, прямо энтерпрайз. В Джанго на моделях надо логику делать, а не на вьюхах. Надо как-то извращённо скрещивать. Может быть проще просто систему моделей из Джанго подключить к асинхронным фреймворкам, пусть они там в каких-нибудь процессах отдельных крутятся. Не пробовал пока, но может скоро придётся.
Суп питонач. Вкатываюсь в Django Channels и Celery. Сколько времени понадобится на освоение этих вещей? Влез в Channels, и блядь статьи даже на русском хуй понятны. Новая терминология. Я до этого ни с асинхронщиной, ни с сокетами не работал. Ну хуй с ним накатил на проект, сделал уведомления через сокеты, но то что я использовал это 2% от всех возможностей Channels'ов.Полез дальше в Celery, пока только накатил на проект ещё не разбирался, но ебать их страничка настроек в доках занимает наверное листов 20 А4 формата.В общем посоветуйте статей\книжек на русском и английском языках чтобы прям по пальцам и терминология и основные концепции. Буду премного благодарен.
Анон, подскажи, пожалуйста. Сам не программирую, но сейчас по фану изучаю курс Automate the boring stuff. Хочу сделать вот что:1) на входе у меня есть csv табличка2) с табличкой нужно провести кое-какие манипуляции, поменять местами столбцы3) измененную таблицу нужно залить в гугл документы, которые располагаются в корпоративном пространстве и провести там еще манипуляции - удалить повторы, вот все такое4) измененную таблицу нужно скачать обратно на комп в cvsВопрос - насколько сложно реализовать заливку данных в гугл доки? Оно же там требует авторизации, вот этого вот всего. С самим парсингом и изменениями файла у меня проблем нет - в курсе это все расписано, а вот как получить доступ к гуглодокам = тут, боюсь, не знаю.
Я согрел от своей тупости. Аноны, объясните как это работает ?Первый скрин - функция.Второй, то что она возвращает.Принимает она матрицу.
>>1442862Смотри, у тебя есть список списков видаarr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]Выражение можно переписать условно так, чтобы понятнее былоdef genTextLine(l): return '\t'.join(map(str, l))def xui(arr): return '\n'.join([genTextLine(l) for l in arr])genTextLine принимает список с данными строки таблицы, например [4, 5, 6]функция map(str, l) делает из этого списка список вида ['4', '5', '6']? со стоками, а не числами'\t'.join(['4', ''5', '6'] сшивает список в строку, получается "4 \t 5 \t 6 " (пробелы я добавил тут для наглядности, без пробелов будет, конечно)И аналогично со внешней функцией, ты сшиваешь в одну строку полученные в genTextLine текстовые строки, это уже совсем просто.
>>1442871>[genTextLine(l) for l in arr]Как раз то что и надо было. Что то постоянно сбивало и не мог понять, что '\t'.join(map(str, l)) просто функция в генераторе. Спасибо!
Реально ли нубу скомпилировать киви в апк, имея в арсенале только винду?Уже всерьёз задумаваюсь уйти в жабу
При запуске jupyter notebook есть эта ошибка. Все работает. Но меня смущает эта ошибка. Нагуглить что-то внятное не могу. Кто знает, что это такое?
Посоны, а как понимать алгоритмы?Сижу над задачей час, посмотрел решение, оно там в одну строчку.Как? Можно ли как то повысить уровень знания построения алгоритмов?
>>1445753http://pythoshka.ru/p82.html>>1445919Всё настолько плохо с олимпиадным программированием, что подобное можно назвать вкатыванием?
>>1443440По поводу данной задачи. Давай пройдем длину шнурка от левого конца к правому. Сначала у нас идет свободный конце длиной l, потом поворот направо длиной а, спуск вниз длиной b. Последние два действия должны повториться три раза (осталось еще два), после чего мы делаем один поворот влево длиной a и начинаем подъем, который аналогичен нашим повторяемым действиям, а значит и выполниться должен тоже 3 раза, после чего мы окажемся с правой стороны и останется лишь пройти свободный конец l.Теперь запишем эти расстояния уравнением: l + (a + b) \ 3 + a + (a + b) \ 3. Приведя подобные получим: 2 \ l + 6 \ (a + b) + a.имо такая запись проще, чем на том сайте. Насчет понимания алгоритмов не могу ничего посоветовать, кроме прочтения книг по алгоритмам, в факе доски есть рекомендации. К слову -- я ни одну не читал