Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
179 23 68

python /python/ python 09/07/19 Втр 13:18:54 14309141
image.png (1562Кб, 1350x1080)
1350x1080
image.png (1059Кб, 1200x798)
1200x798
image.png (71Кб, 2048x1024)
2048x1024
Аноним 09/07/19 Втр 15:45:10 14310372
Как работает инкапсуляция в питоне?
Аноним 09/07/19 Втр 16:11:57 14310473
image.png (250Кб, 402x482)
402x482
>>1431037
Через соглашение между джентельменами
Аноним 09/07/19 Втр 20:46:33 14311774
Доброго вечера, достопочтенные.
Пытаюсь в Трединг....
В общем задача задать аргументы для 4 потоков, они изменяемые и зависят от входящих данных, и чтобы каждый поток выполнялся строго друг за другом, 1(2 или 3 или 4) закончился начался снова 1 (2 или 3 или 4) соответственно, но с другими данными. Как это делается?
мы задаем в функции аргумент в который будем передавать threading.Event()
и в самой функции ставим вот ето вот
арг = агрумент уникальный для каждого из тредов
арг.wait()
арг.clear()
тело функции
арг.set()
?

вообще че то я запутался с динамическими аргументами... надо попробовать просто написать это без динамики со статическими данными.
Аноним 09/07/19 Втр 21:41:19 14312155
Аноним 09/07/19 Втр 21:48:47 14312316
>>1431037
value - public
_value - protected
__value - private
Так и работает
Аноним 10/07/19 Срд 00:37:38 14313617
15582628101070.jpg (113Кб, 700x836)
700x836
Аноним 10/07/19 Срд 08:07:44 14314438
Пацаны,що с этим делать

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 installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).


Никакие комманды не работают,хелп
Аноним 10/07/19 Срд 11:58:20 14315059
>>1431443
Быстро фикс,позор мне, последняя сточка помогла

Сорри за даунизм
Аноним 10/07/19 Срд 12:21:57 143151210
Если мне нужно сохранить лист numpy-массивов в файл, смогу ли я просто использовать read и write методы?
Аноним 10/07/19 Срд 12:35:13 143151411
>>1431047
Почему же тогда чтоб получит значение __value класса A, то мне надо написать var._A__value?
Аноним 10/07/19 Срд 12:42:39 143151712
Аноним 10/07/19 Срд 12:52:35 143152113
>>1431517
Тогда это уже не соглашение, не находишь?
Аноним 10/07/19 Срд 12:59:33 143152214
покажи мне его.webm (3962Кб, 1280x720, 00:00:26)
1280x720
Как в питоне можно уместить в одну строкчу конструкцию из
if чота:не-pass else: if (чота2):не-pass else: не-пасс
?

знакомому с очень широким монитором очень нада!
Аноним 10/07/19 Срд 13:03:49 143152415
Аноним 10/07/19 Срд 13:04:58 143152616
>>1431177
Поправьте что-то или просто обоссыте.
https://pastebin.com/zTFzbuXe
вроде все идет нормально. размыми "тредами" чи не? как узнать то.... хер его знает
Аноним 10/07/19 Срд 13:26:04 143153717
>>1431521
А что это? Местную инкапсуляцию ультрапросто обходить, то, что никто не ебошит приватные методы вне класса держится только на соглашении
Аноним 10/07/19 Срд 15:26:30 143160818
>>1431177
Скажи че тебе надо сначала
Аноним 10/07/19 Срд 15:53:10 143162519
Как обрабатывать исключение когда передаешь объект в функцию и вызываешь внутри его метод, чтобы не было ошибки что у объекта нет этого метода. Что это за тип исключения?
Аноним 10/07/19 Срд 16:20:09 143164720
>>1431608
Есть массив пользователей, поскольку обращаться к базе по средствам одного аккаунт нельзя очень часто и много, я хочу разделить массив между техническими аккаунтами.
Я не погромировал и не учился этому, все что делаю делаю на ощупь по
Собственно каждый раз запуская тред мне надо передать в него нужные параметры имя пароль и массив который он будет обрабатывать.
Понял что можно запустить тред и отдать ему только маасив // количество тех акаунтов. А разделение на количество запросов можно организовать в самой функции.
Собственно вопрос в том как организовать многопоточность с динамическим данными юсер:пас . у меня не правильно, надо задать жёсткий контроль в количестве и первым ждать исполнение последнего. Чтобы не на плодить этого говна кучу кучную.
Аноним 10/07/19 Срд 17:14:41 143169621
>>1431647
>обращаться к базе по средствам одного аккаунт нельзя
>по средствам
На питоне все такие безграмотные мудаки, или ты один такой феномен?
Аноним 10/07/19 Срд 17:17:03 143170022
Аноним 10/07/19 Срд 17:19:59 143170123
>>1431647
Почему тебе простой zip данных и cycle аккаунтов в цикле не подходит?
Аноним 10/07/19 Срд 17:27:39 143170624
Антош, поясни мне за проектирование программ.

Я, кажется, что-то делаю не так. Мне нужно было написать программу(в одно рыло) на мобилки + сервер для их обслуживания. К слову, опыта работы у меня было не много. Естественно я начал искать фреймворки. Начиркал, как Грэди Буч завещал, схему классов и объектов для мобилок(сразу же столкнулся с тем что не понятно на каком моменте можно прекращать придумывать абстрактные классы и писать уже код). Начал пилилить мобильное приложение. Столкнулся с тем, что объекты классов стало очень сложно с какого-то момента использовать и модифицировать. И в конечном счете, вместо красивого ООП стиля все вылилось в хз что за стиль, яля говнокод. Ок.
После этого взялся за серверную часть. Там я выбрал фреймфорк джанго(потому что немного его знал). Опять начал изучать по хожу написания кода вместе с изучением фреймворка. В результате, куча времени и я опять сталкиваюсь с тем: писать ли функцию/класс под конкретную нужду, или продумывать офигенный класс-родитель который я потом могу использовать наследованием или сменой параметров объекта под любую задачу того рода для которой этот класс готовился. Меня тянет сделать этот клутой класс-родитель. И тут я понимаю что это иногда занимает недели, когда написав быстренько под конкретную задачу займет 1-3 дня. Потом я прочитал в закрепе как кто-то написал что для нормального программиста писать 15 000 кода - это норма. Я посмотрел свой код. Ну, я написал около 2 000 питоновского кода за пол года. Я "быстрый".
Чертовы фреймворки. Говорят что должны ускорить разработку. Чертов джанго такой большой, что это утверждение у меня стоит под вопросов. Чертов ООП. Говорят что он должен ускорить разработку за счет наследования. Хрен там, все работает не так как планировалось. Не всегда удобно менять методы. Если хочешь изменить класс фреймворка, то надо изучить его код, потому что в доках не всегда дается полноценная информация.

Правильно/не правильно я работаю? Как вы проектируете и воплощаете в жизнь свой код? Можете ли кинуть примеры хорошего кода? Ведь, если смотреть первый попавшийся на гитхабе, то нет гарантии что код писал не говнокодер.
Аноним 10/07/19 Срд 17:30:20 143170925

Я сейчас "слегка", что отражается на качестве текста. Сорри.

>>1431706 - кун.
Аноним 10/07/19 Срд 17:30:49 143171026
>>1431709
> "слегка" уставший

Самофикс.
Аноним 10/07/19 Срд 17:33:26 143171127
Аноним 10/07/19 Срд 17:39:35 143171428
>>1431711
Потому что это непонятная хуйня, где есть 2.5 книги и ролика по питону, но зато куча хуйни по жс и css редактор
Аноним 10/07/19 Срд 17:51:42 143172429
>>1431714
Что лучше: profit == 0, или profit > 0?
Аноним 10/07/19 Срд 17:54:57 143172630
>>1431724
Что лучше: захламлённое помещение или чистое?
Аноним 10/07/19 Срд 18:01:36 143173031
>>1431726
Если в захламленном помещении легко найти то что нужно, то лучше оно. Ведь в чистом вообще ничего нет.
Аноним 10/07/19 Срд 18:03:47 143173332
>>1431730
>Ведь в чистом вообще ничего нет.
Такой предпосылки не давалось.
Аноним 10/07/19 Срд 18:04:04 143173533
image.png (20Кб, 441x183)
441x183
я написал функцию приведения опыта в уровень, но она очень не практична, чем больше опыта - тем больше времени выполняется подсчет.
как фиксить?
https://pastebin.com/dMB448ta
Аноним 10/07/19 Срд 18:07:39 143173834
>>1431696
Все педанты орфографии и грамоты такие желчные людишки, или только ты?
>>1431701
>zip данных
>cycle аккаунтов
Не понимаю как мне это поможет.
У меня есть список ID, по каждому ID надо сделать запрос. Количество запросов ограничено во времени, чтобы сократить время обработки всех ID нужно запустить еще 3.
Или ты по оформлению кода и его заграждению примитивными циклами?
Аноним 10/07/19 Срд 18:08:45 143174135
>>1431733
>ValueError: Такой предпосылки не давалось.
Аноним 10/07/19 Срд 18:27:28 143177536
Аноним 10/07/19 Срд 18:32:18 143178237
>>1431735
Мдя, алгоритмист из тебя
Что-то типа
exp_per_level = 1000
exp_sum = 0
lvl = 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), но я забыл как там эти ряды считаются
Аноним 10/07/19 Срд 18:40:47 143179238
>>1431782
>texp_per_level (star)= 1.2
чет я не вдупляю, что это?
Аноним 10/07/19 Срд 18:42:30 143179539
Аноним 10/07/19 Срд 19:14:02 143180940
Аноним 10/07/19 Срд 19:17:00 143181341
>>1431795
как мне понять, сколько осталось опыта, который не потратился на уровень?
Аноним 10/07/19 Срд 19:38:16 143182642
>>1431625
AttributeError

Ты можешь проводить эксперименты в консоли питона - набрать, например, str.foo, у класса str нет ни поля ни метода с именем foo, поэтому ты увидишь ошибку AttributeError. Можешь без исключений просто встроенной функцией проверять наличие атрибутировать у объекта: hasattr(obj, name), функция hasattr вернет True если в obj есть name, иначе False. А вообще, читай документацию
https://docs.python.org/3.7/library/exceptions.html#bltin-exceptions
Аноним 10/07/19 Срд 21:00:44 143188543
>>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
Аноним 10/07/19 Срд 21:25:51 143189344
Аноним 10/07/19 Срд 21:48:07 143190045
Кто-нибудь из вас конспектирует знания/мысли. Если да, то как выбираете самое нужное, что предпочитаете, бумагу или электронную версию?
Аноним 10/07/19 Срд 22:14:50 143191446
>>1431900
вконтакте себе в лс шлю все заметки, либо в частую группу где состоишь только ты
Аноним 10/07/19 Срд 22:23:40 143191947
>>1431914
Там ведь вроде поиск не очень удобный
Аноним 11/07/19 Чтв 01:08:14 143200648
>>1430914 (OP)
> Кажется, устарел, требуется обновление или замена на что-то другое
Да вроде не особо.
Другое дело, что гайд не окончен, но вряд-ли кто-то возьмётся доделать.
Аноним 11/07/19 Чтв 01:08:37 143200849
>>1431526
Сорри конечно, не могу читать код без __main__, если это не библиотека, переписывай.
Аноним 11/07/19 Чтв 01:10:10 143200950
>>1431900
Коллега на работе завёл себе несколько тетрадок и от руки записывает туда какие-то вещи(вплоть до новых слов на инглише) + распечатывает себе whitepaper'ы. Но он датасаентист с приветом небольшим.
Аноним 11/07/19 Чтв 10:26:25 143224751
1.png (5Кб, 564x528)
564x528
мб не совсем по теме, но как при помощи opencv убрать вмятину? На рис. 1 оригинальное изображение, на рис. 2 - то, что хотелось бы. cv2.convexHull не совсем подходит, так как деформирует другие края (рис. 3).
Аноним 11/07/19 Чтв 11:13:42 143227752
>>1432247
Найти разницу между convexHull'ом и оригинальным изображением. Ты получишь бублик с разной толщиной краев. Там, где бублик тонкий, удали все совсем. Где толстый, оставь.
Аноним 11/07/19 Чтв 11:24:59 143228553
brainlet.png (21Кб, 326x253)
326x253
>>1432277
а как толщину бублика измерить?
Аноним 11/07/19 Чтв 11:34:09 143228854
>>1432285
1. Уменьши его толщину 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, если ты его делал), и копируешь на свою картинку. Если маленькая, нихуя не делаешь
Аноним 11/07/19 Чтв 11:39:10 143228955
Аноним 11/07/19 Чтв 18:26:12 143257156
Подскажите плиз, как в пандасе сохранить структуру датафрейма после 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”, по которым разлелялись группы.
Аноним 11/07/19 Чтв 18:42:26 143257957
Аноним 12/07/19 Птн 06:20:45 143289358
Где можно посмотреть список команд для api dvach?
12/07/19 Птн 13:43:13 143319359
>>1432975

Секта, где быдло из ютуба >>1432893

в разделе api джвача?
Аноним 12/07/19 Птн 14:19:23 143321760
Аноним 12/07/19 Птн 14:20:34 143321861
>>1433217
Там примеры есть работы, юзай их, не зря анон писал.
Правда насчёт актуальности хз ибо давно делали и апи могло обновиться.
Аноним 12/07/19 Птн 15:23:18 143324562
Анооон, как из функции а нескольких потоках получить ответ?
Аноним 12/07/19 Птн 17:19:09 143333863
>>1431706
Возможно, ты просто слишком сильно угорел по ООП и абстрагированию. Будь проще и код потянется.
Аноним 12/07/19 Птн 17:41:18 143335864
>>1431706

Ты просто боишься, что твоя программа будет неидеальной. Страх ведет к стрессу, а стресс к прокрастинации.

Решение: забить хуй на код и решать задачи, оптимизируя проблемы по мере их появления.

Видение того, "как надо делать" не возникает ниоткуда. Опыт, сын ошибок трудных, как говорится, решает.
Аноним 12/07/19 Птн 18:08:20 143337865
image.png (129Кб, 881x404)
881x404
>>1431706
Ебаный двощ обезумел. Слово из спам листа в посте.
Аноним 12/07/19 Птн 18:13:24 143338566
>>1431706
>Я, кажется, что-то делаю не так.
>Начиркал, как Грэди Буч завещал,
Я еще лет в 13 открыл в библио-глобусе его книгу и понял, что этот словоблуд вообще не стоит внимания.
>И в конечном счете, вместо красивого ООП стиля все вылилось в хз что за стиль, яля говнокод.
В ООП всегда так.
>Правильно/не правильно я работаю?
Нет. Набери в гугле "критика ООП" и читай, читай, читай.
Аноним 12/07/19 Птн 18:52:31 143343367
>>1433385
>критика ООП
>ну наследование заебись
>да и всё остальное
>а вот инкапсуляция говно
>ну как бы потому что мне нужна свобода
Не набирай, она в конечном счёте сводится к этому.
Аноним 12/07/19 Птн 19:45:36 143345368
image.png (23Кб, 605x238)
605x238
Разве вот так вложено нельзя идти по всему листу?
Аноним 12/07/19 Птн 20:13:17 143346869
>>1433453
Ты нигде не присваиваешь ничего списку a.
Аноним 12/07/19 Птн 20:22:22 143347370
>>1433245
Ну как переменную получить ну анон? Или классами все делоть
Аноним 12/07/19 Птн 20:23:50 143347471
image.png (150Кб, 475x476)
475x476
Аноним 12/07/19 Птн 21:57:15 143354072
>>1433453
Если хочешь работать именно со списками, лучше так:

hight = 10
width = 5
left = 1
right = 101
[[np.random.randint(left, right) for j in range(width)] for i in range(hight)]

Если хочешь с array из numpy, то как второй пример здесь >>1433474
Аноним 12/07/19 Птн 22:25:33 143355873
>>1433474
>>1433540
Спасибо, почему-то думал что по итератору можно получить доступ к самому элементу. Вообще randint тут чисто филер для проверки, вообще у меня должен быть лист из массивов NumPy разной длины, где каждый элемент массива — случайное значение из словаря или совершенно новое созданное по образцу из одной из категорий, но это уже проблема другого порядка.
Аноним 12/07/19 Птн 22:46:16 143357974
Чем urllib.request отличается от библиотеки requests?

Читаю... и не могу понять, они ведь используют одни и те же методы надстройки над низкоуровневой библиотекой работы с сокетами.

вкатывальщик
Аноним 12/07/19 Птн 23:23:10 143360675
>>1433558
>по итератору можно получить доступ к самому элементу
Можно, но это работает иначе.
Аноним 12/07/19 Птн 23:35:14 143361776
>>1433579
requests - обёртка над urllib3. В остальном они немного по разному парсят урлы.
Аноним 13/07/19 Суб 01:18:00 143366577
>>1433558
Конечно можно. Только итерируемую последовательность во время итерации менять нельзя.
for x in xs:
    <делаем что-то с элементом x>
Здесь можно что-то делать с переменной x, но от присвоения переменной x какого-либо значения последовательность xs не поменяется.
Видишь, здесь >>1433474 в первом примере итерируемая последовательность это range, а не список a, элементы этой последовательности используются как индексы для доступа к списку a и изменению его элементов
Аноним 13/07/19 Суб 04:31:03 143369578
>>1433473
Открыл для себя global
Аноним 13/07/19 Суб 08:41:25 143372879
отцы нубский вопрос:
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, то он его пропускает и идет дальше. при подобном раскладе почему то не выходить(
Аноним 13/07/19 Суб 14:48:11 143392380
Как питонисты смотрят на котлин?
Аноним 13/07/19 Суб 17:04:52 143403281
image.png (16Кб, 1352x77)
1352x77
В питоне есть какой нибудь синтаксический сахарок, чтобы передать в параметры функции N элементов массива, но не одним объектом, а поэлементно? Например, вот есть у меня пикрил, мне лень писать na_data[0]...na_data[7], но и в конструкторе я не хочу делать параметр массивом данных. можно ли как то зделоть зоебись сделать типа NetworkActivity(na_data[0]..na_data[7])?
Аноним 13/07/19 Суб 17:05:52 143403482
image.png (16Кб, 1244x79)
1244x79
>>1434032
бля, не туда аппендил
self.fix()
Аноним 13/07/19 Суб 17:13:10 143404083
>>1434032
можно. Если тебе надо передать ровно 8 элементов, а в na_data может быть больше, то код будет
foo(na_data[:8])

если список исходно из 8 элементов, то вообще
foo(
na_data)

Аноним 13/07/19 Суб 17:14:05 143404184
>>1434040
звезда проглатывается перед na_data
Аноним 13/07/19 Суб 17:14:06 143404285
Аноним 13/07/19 Суб 17:14:35 143404386
Аноним 13/07/19 Суб 17:15:20 143404587
image.png (23Кб, 1258x94)
1258x94
Аноним 13/07/19 Суб 17:15:45 143404688
Аноним 13/07/19 Суб 17:16:57 143404789
Screenshot.png (8Кб, 273x139)
273x139
Аноним 13/07/19 Суб 22:32:44 143437790
Как разместить элементы в окне по своему желанию в tkinter? pack() хуйню творит, конечно.
Аноним 13/07/19 Суб 23:02:29 143441791
>>1434377
Там еще есть grid, который, как можно догадаться, размещает элементы в ячейках таблицы, и place, который размещает элементы по очно заданным координатам.
Аноним 14/07/19 Вск 12:55:43 143472792
посоны, кто-нибудь занимался запуском питоновских скриптов из-под JVM? Что лучше для этого использовать? Py4J / Jython / JPype?
Аноним 14/07/19 Вск 13:32:30 143476793
>>1434417
Спасибо.
А есть какая-либо возможность "запретить" изменение габаритов окна?
Аноним 14/07/19 Вск 20:45:12 143523194
Кто-нибудь в 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'

Что я делаю не так? Как мне повесить событие на закрытие окна??
Аноним 14/07/19 Вск 21:10:37 143526195
Снимок экрана 2[...].png (175Кб, 2256x800)
2256x800
Аноним 14/07/19 Вск 21:22:38 143528196
>>1435261
Не понимаю. Я использую окошко из QT-редактора, вот код:
https://pastebin.com/N33z2Ttc
Что я делаю не так? Подскажи плиз
Аноним 14/07/19 Вск 21:23:29 143528497
можно ли удалить файл со скриптом после того, как python script.py запущен, но еще не отработал? если да, то как нибудь, имея только pid запущенного процесса, можно ли получить запущенный скрипт?
Аноним 14/07/19 Вск 21:37:45 143529598
>>1435284
Имя скрипта находится в переменной __file__
Аноним 14/07/19 Вск 21:38:45 143529699
>>1435281
Ты создаешь класс, наследуясь от object, а я от QMainWindow. object - базовый класс для всех.
Аноним 14/07/19 Вск 21:40:40 1435299100
>>1435284
я возможно недостаточно точно выразился. есть произвольная линуксовая система, на которой запущен скрипт командой python3 scriptname.py от имени рута, но запускал не я, хоть и есть доступ к руту. ни в / ни в ~ рута скрипта scriptname.py нет, да и через find/locate по всей системе он тоже не находится. мне нужно узнать, что именно делает скрипт, в иделае вообще получить его сорсы. как это можно сделать?
Аноним 14/07/19 Вск 21:40:52 1435300101
>>1435295
Но файл уже как бы удален же. Ему нужно как-то найти ссылку на файл, которую держит процесс скрипта.
Аноним 14/07/19 Вск 21:41:55 1435305102
>>1435300
как вообще интерпретатор питона реагирует на удаление файла, указанного при запуске?
Аноним 14/07/19 Вск 21:44:07 1435308103
15398462327630.jpg (48Кб, 475x640)
475x640
>>1435299
Серьезно? Лезь в оперативу и сиди выдергивай по кусочкам результат работы.
Аноним 14/07/19 Вск 21:46:05 1435313104
>>1435296
Это я вижу. Тоесть QT-редактором вабще пользоваться нельзя, т.к. после него всё перепиливать надо?
Аноним 14/07/19 Вск 21:46:14 1435314105
>>1435308
ну т.е. питон при запуске считывает весь файл в какой нибудь постоянный буфер, который остаётся в процессе до выхода?
Аноним 14/07/19 Вск 21:46:23 1435315106
>>1435305
Не знаю, скорее всего никак не реагирует. Файл уже считан, преобразован в байткод и все необходимое держится в памяти, как я себе это представляю.
Аноним 14/07/19 Вск 21:49:31 1435322107
>>1435313
Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.
>>1435314
Ну да. Никогда не видел результат работы sudo rm -rf /* в системе? Все, что осталось в оперативке - то и работает, пока не завершится. Так и работает в целом. Скрипт в оперативке.
Аноним 14/07/19 Вск 21:50:32 1435325108
Аноним 14/07/19 Вск 21:51:28 1435327109
>>1435322
>Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.
Есть на примете материал, который рассказывает как правильно сделать? Где там это всё выбирать.
Спасибо
Аноним 14/07/19 Вск 21:55:10 1435330110
Аноним 14/07/19 Вск 22:19:18 1435345111
Аноним 14/07/19 Вск 22:20:40 1435350112
>>1430914 (OP)
Наверное, постоянный вопрос в этих тредах, но сколько пройдёт времени Нормального обучения языку, прежде чем я смогу получать с этого какие-то деньги?
Аноним 14/07/19 Вск 22:21:44 1435355113
>>1435345
Ты можешь поместить скрипт в переменную а потом построчно его оттуда вытаскивать при помощи exec
Аноним 14/07/19 Вск 22:30:26 1435363114
>>1435330
>быстро глянул https://python-scripts.com/pyqt5
Ну вот тут он у них автоматом создаётся класс наследующий QMainWindow, а у меня при тех же действиях - от object.
Аноним 14/07/19 Вск 22:32:32 1435364115
>>1435355
каким образом, если я как раз и запустил этот pyrasite-shell для того, чтобы проанализировать скрипт? какие вообще у питоновского промта (который как >>> три > если вдруг разметка сожрёт выглядит) возможности к интроспекции? в том же гайде пишут, что можно если бы я знал модуль запущенного скрипта, то мог бы узнать какие там есть функции и классы через dir(my_module). а как узнать, какие в рантайме есть модули? понятно, что там будет еще куча всяких системных, но ведь наверняка должен быть и мой, нет?
Аноним 14/07/19 Вск 22:32:41 1435365116
>>1435363
Поэтому и говорят, что не надо слепо верить ide, нужно уметь делать все руками, а только потом - ide.
Аноним 14/07/19 Вск 22:36:47 1435369117
Аноним 14/07/19 Вск 22:39:53 1435371118
>>1435365
Да вот я ньюфаг, и не хотел особо разбираться в ide, хотел залететь на скорую руку, но что-то зациклился на этом.
Аноним 14/07/19 Вск 23:04:33 1435378119
>>1434767
Конечно. Метод resizable, пусть есть корневой виджет по имени root, тогда root.resizable(False, False) запретит изменение окна приложения по горизонтали и вертикали.
Ты такие штуки спрашиваешь, быстрее самому нагуглить, чем ждать, пока ответят на двоще, совсем простые вещи
Аноним 14/07/19 Вск 23:17:42 1435385120
Чё у вас там, пипенв среду уже создал?
Аноним 15/07/19 Пнд 09:35:59 1435478121
Анон, пишу говнокод короче, нужно подключится к ftp и скачать оттуда актуальные данные, но подключение не идет, я знаю в чем проблема, на работе у нас стоит прокси сервер, так вот как заставить через него работать мой говнокод? Когда подключаю свой мобильный как роутер, то без проблем конектится.
Аноним 15/07/19 Пнд 09:45:32 1435489122
>>1435478
Через обычного клиента получается зайти на ftp?
Аноним 15/07/19 Пнд 10:24:41 1435521123
>>1435478
Прокси должен прокидывать фтп порт наружу, или туннель давать.
Аноним 15/07/19 Пнд 10:31:05 1435524124
>>1435489
Дает без каких либо проблем.
>>1435521
Ну ведь он дает, если использовать какой нибудь браузер, но с говнокодом моим не дает.
Аноним 15/07/19 Пнд 10:41:24 1435529125
>>1435524
Посмотри про пассивный режим ftp и попробуй это использовать.
Аноним 15/07/19 Пнд 10:42:44 1435531126
>>1435529
хотя в доках написано, что он по-умолчанию работает
Аноним 15/07/19 Пнд 10:45:38 1435536127
>>1435478
На каком этапе проблема? Получается ли установить коннект с портом?
Аноним 15/07/19 Пнд 10:47:51 1435540128
>>1435529
Почитаю посмотрю
>>1435536
Как мне глянуть? через какой нибудь wireshark?
Аноним 15/07/19 Пнд 10:50:27 1435546129
Аноним 15/07/19 Пнд 10:53:11 1435548130
>>1435540
Ты как пытаешься подключаться, через ftplib?
Аноним 15/07/19 Пнд 11:10:02 1435558131
Аноним 15/07/19 Пнд 11:20:49 1435572132
>>1435558
Короче просто видимо порт 21 не открыт, я ебал, всем спасибо.
Аноним 15/07/19 Пнд 11:27:00 1435580133
Питонистусы, как сделать так чтобы при ошибке скрипт ждал моего подтверждения y/n и по результатам продолжал работу цикла или шёл дальше по скрипту?
Аноним 15/07/19 Пнд 11:56:26 1435598134
>>1435580
Внутрь try-блока ты уже не сможешь вернуться.

Что за логика у программы? Если конкретная функция выдаёт ошибку, то надо просто её в цикл обернуть с обработкой исключения или ошибочного значения, схематично
while True:
result = None
try:
result = try_do_work()
except:
yes_no = input()
if no:
break

если таких вызовов много, можно обернуть в какой-нибудь декоратор.
Аноним 15/07/19 Пнд 20:42:34 1436236135
10.png (24Кб, 616x266)
616x266
Кто может пояснить, зачем вот так пишут? Это не джуны, а матёрые сеньёры.
Аноним 15/07/19 Пнд 22:31:26 1436374136
>>1436236
А что не так, не достаточно информативная строка, или надо все в одну строчку писать, типа f-string надо использовать вместо format?
А, вижу, в info может быть либо ничего, либо только одно слово, тогда не нужен ни массив не join. Ну, проебались чуть, можно же исправить
Аноним 15/07/19 Пнд 22:38:37 1436388137
>>1436236
Вангую, что автор привык собирать строки таким образом, вот по привычке и сделал, хотя тут можно было бы обойтись без списка.
Аноним 16/07/19 Втр 00:48:18 1436489138
Аноны, доебал препод с тем, чтобы я на питоне накидал ему прогу с парсингом экселя и формочкой для собсна выбора файла, выбора диапазона ячеек и графиком.
Я с этим языком знаком лишь по синтаксису. Ткинтер вообще не ебу, а при попытках раскидать эксель в матрицу знатно заебался с пандой и хлрд, так и ничего не сделав.
Похуй с ним с ткинтером, сам нагуглю надеюсь как сделать форму со всеми этими свистоперделками. Поделитесь кодом, чтобы прочитать эксель файл как
[
[row1 column1, row1 column2...],
[row2 column1, row2 column2...],
...
]
С меня тонны благодарностей от препода и моя сердечная любовь до гроба no homo
Аноним 16/07/19 Втр 02:44:32 1436513139
>>1436489
Ставь или модуль pandas
(pip install pandas)
или можно сохранить данные в csv и парсить их.

Панды эти какие-то замудрённые, разбираться с ними надо. Но зато много умеют.

import pandas

df = pandas.read_excel('file1.xls')

for row in df.itertuples():
___ if isinstance(row[2], str):
___ ___ print(row[2], row[3])

Аноним 16/07/19 Втр 02:46:38 1436514140
>>1436489
>>1436513
>знатно заебался с пандой и хлрд
А, ты и сам это уже нашёл. Тогда не знаю.
Аноним 16/07/19 Втр 10:10:50 1436601141
>>1436489
>>1436513
Аноны, а может с json`ом сделать ?
Мимо другой анон
Аноним 16/07/19 Втр 10:29:46 1436611142
Аноним 16/07/19 Втр 14:02:43 1436697143
Добрый день

Аноны, к сожалению, я очередной хуй, который хочет вкатиться в python. Проблема в том, что у меня очень мало времени из=за работы, но есть деньги на то, чтобы купить курс (не надо только ссать на меня). Что скажеет про яндекс практикум? Их программа для backend
Аноним 16/07/19 Втр 15:53:06 1436815144
Аноны, я практикующийся ньюфаг, накидал знакомому софтинку для учёта вип-аккаунтов от серванта БФ4. Если кому не сложно, зацените код:
https://www.codepile.net/pile/2xO3Z9x6
В даннном случае, вся база хранится в списке. Список хранится в pickle-объекте. При загрузке программы pickle-файл считывается и содержимое помещается в базу, следом обновляется Qt таблица. При любом редактированнии базы (добавленние, удаление, редактирование), происходит сохраненние базы, загрузка, таблица отрисовывается с нуля.
В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть?
Аноним 16/07/19 Втр 16:04:42 1436828145
>>1430914 (OP)
Кто-нибудь знаком с pygame? Пытаюсь решить задачу - есть группа спрайтов-деревьев и спрайт огня. Деревья спавнятся в случайном месте по нажатию кнопки. Огонь доходит до дерева, активируется функция, которая определяет скорость, с которой оно сгорает. Но так как деревья спавнятся, нет конкретной переменной, которую можно вписать в функцию. Как можно применить функцию к экземпляру дерева?
Аноним 16/07/19 Втр 16:15:06 1436835146
>>1436815
>В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть?
Ты без обид, с точки зрения проектирования всё плохо.

Ну работает, и хорошо, хотя я не проверял. Но абсолютно не поддерживаемый код, всё захардкожено в усмерть. Напоминает ад в PHP, что творился в начале нулевых и за что это направление не уважали.

Не только разметка намертво вшита в QT код, то есть ты не переверстаешь ничего просто так, но и логика программы, выборка данных. В идеале, тебе надо разносить разметку, её отрисовку, и выборку данных.

То есть у тебя есть какой-то конфиг, в котором ты настраиваешь, какого размера какие окна и как они располагаются, и если координаты одного завязаны на другое, то лучше через переменные это делать. Этот конфиг ты передаёшь в функцию, которая строит интерфейс.

А за данные отвечает какой-то свой набор функций или класс, ты сначала получаешь данные, а потом уже объект с ними передаёшь в функцию рисования. Если ты действия какие-то с базой делаешь, то они тоже вызовом методов этого класса делаются.

Это идейно.
Аноним 16/07/19 Втр 16:19:27 1436839147
>>1436835
Хорошо, попробую осмыслить и учесть, хотя мне сейчас многое непонятно.

QT-код целиком из QT-редактора, я его не сам писал, потом он такой.
Аноним 16/07/19 Втр 16:30:13 1436846148
>>1436839
Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер. Потом ещё раз. Сам придёшь к этому.

И с выбором данных, попробуй подумать, как ты будешь в другом формате их хранить, а лучше чтобы была возможность выбора. И тоже, сам придёшь к тому, что надо выделать классы и общаться с ними через методы.

Все эти теории проектирования из жизни пришли.
Аноним 16/07/19 Втр 16:39:34 1436851149
>>1436846
>Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер.
ну, на самом деле не вижу проблемы. В функциях отрытия окна можно отредактировать любой элемент разметки окна, для дочерних оконо по крайней мере. С основным окном не уверен. В общем мне не совсем понятно о чём речь

На самом деле я только собираюсь детальнее PyQt изучить, потому особо редактировать тот код, что да редактор, не могу.

>И с выбором данных, попробуй подумать, как ты будешь в другом формате их хранить
Тоже не совсем понимаю, ты про сохранение данных в pickle? Чуть позже собирался изучить SQL и применить базу данных для сохранения
Аноним 16/07/19 Втр 16:50:04 1436863150
>>1436828
Пайгейм не трогал. Ты не можешь получить экземпляр дерева рядом с огнем? Ты ссылки на деревья куда-то записываешь? У тебя задача на коллизию огня и дерева?
Аноним 16/07/19 Втр 17:06:57 1436874151
>>1436863
Там походу только пересечением координат объектов можно что-то сделать подобное.
Как-то пытался курсач на пайгейме сделать. Больше обсёра у меня не было. Пока не начал рабоать, офк.
Аноним 16/07/19 Втр 17:22:48 1436890152
image.png (158Кб, 1280x720)
1280x720
>>1436874
> Там походу только пересечением координат объектов можно что-то сделать подобное.
Коллизии так и делаются, в общем-то.
Аноним 16/07/19 Втр 18:00:23 1436927153
>>1436890
Ну вот и хорошо. Я не знал.
Аноним 16/07/19 Втр 21:47:10 1437131154
>>1436890
Лол, а там нет функции которая определяет коллизии объектов ? По моему вот так:

def is_collided_with(self, sprite):
return self.rect.colliderect(sprite.rect)
Аноним 16/07/19 Втр 21:55:50 1437137155
>>1437131
было бы странно, если бы их не было. но я подумал, раз тот анон о них не знает, то наверное нет. он же наверняка погуглил столкновения прежде чем самому писать алгоритм. не буду же я гуглить фичи пайгейма, который я ни разу не использовал и не собираюсь.
Аноним 16/07/19 Втр 23:20:00 1437218156
Почему по сабжу нет нормальной актуальной книги? Либо какие-то справочники, либо фигня для детей, либо старая книга Лутца с ненужной легаси 2.6, кроме 3.
Аноним 16/07/19 Втр 23:33:50 1437227157
>>1437218
Ты уверен что всё посмотрел?
Аноним 16/07/19 Втр 23:55:01 1437233158
>>1430914 (OP)
Жаба-джун заехал в тред
Поштудировал ваш Питонух и малость приохуел:
1) С хрена ли доступ к любому атрибуту и методу можно осуществлять как извне класса, так и просто из самого модуля точечной нотацией?.. Почему кладется хуй на систему геттеров-сеттеров?
2) Где вообще инкапсуляция как таковая? С хуя ли не могу адекватно задать приватные атрибуты в классе? Какие-то блять _ вместо private/public/protected . И есть ли тут вообще бля возможность сделать класс доступным ТОЛЬКО на уровне модуля, а? Че-то пока хуйня получается
Аноним 16/07/19 Втр 23:56:47 1437234159
Аноним 17/07/19 Срд 00:02:56 1437239160
>>1437227
Я не могу быть в этом 100% уверен. Но просмотрел несколько источников. Если у тебя есть годная книга, буду благодарен.
Аноним 17/07/19 Срд 00:18:10 1437243161
>>1437233
>геттеров-сеттеров
Нахуй ты со своей парашей лезешь и пытаешься устраивать правила?
>private/public/protected
Есть соглашение о использовании. Если додик или джун, например, то тебе ниего не мешает говнокодить и в джаве, используя везде public. Просто дандеры используй и методы соответствующие.
Аноним 17/07/19 Срд 00:20:01 1437246162
Аноним 17/07/19 Срд 00:36:19 1437270163
>>1437246
Ни то, ни другое. Мне нужна книга, но не сухой справочник.
Аноним 17/07/19 Срд 00:38:55 1437273164
>>1437243
>Нахуй ты со своей парашей лезешь и пытаешься устраивать правила?
Это унылая регулярная паста, не бугурти.

Система геттеров и сеттеров есть.
При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.
Аноним 17/07/19 Срд 16:36:30 1437654165
>При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.
Как это сделать, кстати?
В общих словах.

Если через __getattribute__(), то он и внутри класса посмотреть свойство/вызвать метод мешает.
Аноним 17/07/19 Срд 16:56:40 1437665166
>>1435580

def 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
Аноним 17/07/19 Срд 17:03:55 1437667167
image.png (29Кб, 597x106)
597x106
image.png (38Кб, 602x207)
602x207
>>1437239
Ссылка с пика №2 - т.ме / python_textbooks
Да как вы блять заебали со своим спам-листом.
Аноним 17/07/19 Срд 19:07:50 1437747168
Screenshot.png (49Кб, 1259x574)
1259x574
>>1437654
Вот пример с приватными методами, в виде скрина, идейно

Я когда-то давно такое делал, но просто для фана, реально не использовал. Другие методы тоже есть.

Это не 100% метод, вот здесь можно обойти, если назвать объект не a, а self, никто не запрещает ведь. Но от этого можно защититься, можно контролировать, из какого файла идёт вызов и из какой строки. Тут демонстрация идеи.

Конечно, можно просто переопределить функцию is_local_call. Но ведь это защита не от хакеров, а от нежелательных прямых вызовов.

Есть другие способы, но тоже извращённые.
Аноним 17/07/19 Срд 19:17:19 1437753169
image.png (22Кб, 361x265)
361x265
>>1437747
Как-нибудь можно достать такую приватную функцию?
Аноним 17/07/19 Срд 19:17:38 1437754170
выфв.png (12Кб, 371x175)
371x175
Анон, почему это не работает?
Я ввожу с клавиатуры что угодно (это может быть str опвалопвао, int 43242, либо что-то смешанное типа 9t49ting_))!n3).
Мне нужно три развилки - если введено число, то а, если введена строка - то б, все остальное, в том числе смешанное - в.
В этом куске всегда срабатывает только string.
Аноним 17/07/19 Срд 19:21:21 1437758171
>>1437754
Потому что input всегда возвращает строку. Ты сам должен конвертировать в нужный тебе тип.
> The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.
Аноним 17/07/19 Срд 19:25:19 1437763172
>>1437754
Во втором питоне input работает так, как тебе нужно.
Аноним 17/07/19 Срд 19:33:20 1437770173
>>1437758
А каким образом я могу сам конвертировать?
Допустим, у меня есть некий результат input - я ввел "312312". Как мне дальше на основе такого инпута ковертировать эту же самую информацию в другой тип?
Аноним 17/07/19 Срд 19:48:57 1437785174
>>1437770
Если у тебя там только строки и int'ы, то самое простое это
value = input()
try:
. . value = int(value)
. . # число
except ValueError:
. . # не int
Аноним 17/07/19 Срд 19:55:10 1437790175
1.png (38Кб, 136x233)
136x233
2.png (80Кб, 376x188)
376x188
Есть инвентарь в игре, задача идентифицировать объект в ячейке и посчитать количество (цифра в левом правом уголке).

Сейчас я делаю:
- пробегаю по всем ячейкам, делая скрины каждой отдельной, определяю пустые, чтобы с ними дальше совсем не работать. < 1 секунды времени

- Сначала я пытался распознавать объект пиксельхантингом, а количество распознавая цифру с левом верхнем уголке. Но отказался о этого т.к. получалось медленно и цифры распознавались нестабильно, ~98% что не устраивает.

- сейчас я навожу курсор на не пустую ячейку и распознаю уже текст тултипа. Тут текст 100% распознается хорошо и сразу 2 задачи и имя объекта и число.


Но это все равно слишком медленно. Как можно ускорить процесс? В плане алгоритма или может быть какие-то практические советы?


Например, почему
pyautogui.moveTo(x, y)
такой тормозной? Всего 10 позиций в секунду, а если еще нужно периодически ctrl зажимать, отжимать, то получается совсем уж смешная скорость. Есть способы двигать курсор и жать кнопки побыстрее?
Аноним 17/07/19 Срд 20:11:16 1437804176
>>1437790
О, PoE, клёво, давненько в него не заныривал. Много в него народу шпилит?
> пишет на скриптовом интерпретируемом пистоне с тормозной виртуальной машиной
> удивляется, что тормозит
Не еби мозги и бери C++ с OpenCV
Аноним 17/07/19 Срд 20:13:27 1437806177
Антошь будь няшей, поясни за aiohttp.
Мне нужно отвечать на GET запрос, причем так что ответ никак не зависит от запроса, а получается в результате работы заранее запущенных асинхронных задач. (это докер контейнер который начинает тестирование удаленных сервисов сразу после запуска, отдающий результат тестирования по http и тут же умирающий)
Набросал упрощенный примерчик https://pastebin.com/CRJPrqN5, он работает. Но вот что он говорит:
>DeprecationWarning: Changing state of started or joined application is deprecated
> app['json'] = json_
Что же делать?
Глобальные переменные? 2к19?
Аноним 17/07/19 Срд 20:15:01 1437807178
Аноним 17/07/19 Срд 20:20:23 1437814179
>>1437804
Я не погромист, это просто баловство,мозги размять когда время есть, поэтому на плюсы я так с наскока не пересяду при всем желании. Он же, на сколько я знаю, не самый дружелюбный для новичков.

OpenCV изучаю, с питоном же он тоже хорошо интегрируется.

Вроде много, от лиги к лиге сильно скачет цифра. Я сам не играю, просто трейдбота пишу сядя в хо
Аноним 17/07/19 Срд 20:39:12 1437826180
>>1437807
>>1437806
>Что же делать?
>Глобальные переменные? 2к19?
Глобальные не нужно. Ты просто делаешь класс, который за коммутацию отвечает, хранит, в том числе, json_

Создаёшь объект класса в функции main(), этот объект сохраняешь в app, и в других объектах, которые отвечают за связанные асинхронные задачи. Потом просто меняешь свойство json_, прямо или косвенно. В нём можно сделать метод вроде get_data_for_web(), можно не делать, работать напрямую.

Доки рекомендуют скорее подход, чтобы ты из app всем управлял, через какие-нибудь очереди и т.п., то есть что app такой главный и всем рулит, но это спорный подход и не для всех случаев. Может быть web-интерфейс вообще опционален?

Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов