Этого треда уже нет.
Это копия, сохраненная 20 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
python /python/ python 1430914 В конец треда | Веб
ЧАВО: 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)
2 1431037
Как работает инкапсуляция в питоне?
image.png250 Кб, 402x482
3 1431047
>>31037
Через соглашение между джентельменами
4 1431177
Доброго вечера, достопочтенные.
Пытаюсь в Трединг....
В общем задача задать аргументы для 4 потоков, они изменяемые и зависят от входящих данных, и чтобы каждый поток выполнялся строго друг за другом, 1(2 или 3 или 4) закончился начался снова 1 (2 или 3 или 4) соответственно, но с другими данными. Как это делается?
мы задаем в функции аргумент в который будем передавать threading.Event()
и в самой функции ставим вот ето вот
арг = агрумент уникальный для каждого из тредов
арг.wait()
арг.clear()
тело функции
арг.set()
?

вообще че то я запутался с динамическими аргументами... надо попробовать просто написать это без динамики со статическими данными.
5 1431215
>>31047
неистово проиграл
6 1431231
>>31037
value - public
_value - protected
__value - private
Так и работает
15582628101070.jpg113 Кб, 700x836
7 1431361
>>31047
Мое увожение
8 1431443
Пацаны,що с этим делать

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).

Никакие комманды не работают,хелп
9 1431505
>>31443
Быстро фикс,позор мне, последняя сточка помогла

Сорри за даунизм
10 1431512
Если мне нужно сохранить лист numpy-массивов в файл, смогу ли я просто использовать read и write методы?
11 1431514
>>31047
Почему же тогда чтоб получит значение __value класса A, то мне надо написать var._A__value?
13 1431521
>>31517
Тогда это уже не соглашение, не находишь?
покажи мне его.webm3,9 Мб, webm,
1280x720, 0:26
14 1431522
Как в питоне можно уместить в одну строкчу конструкцию из
if чота:не-pass else: if (чота2):не-pass else: не-пасс
?

знакомому с очень широким монитором очень нада!
15 1431524
>>31522
'a' if 0 else 'b' if 0 else 'c'
16 1431526
>>31177
Поправьте что-то или просто обоссыте.
https://pastebin.com/zTFzbuXe
вроде все идет нормально. размыми "тредами" чи не? как узнать то.... хер его знает
17 1431537
>>31521
А что это? Местную инкапсуляцию ультрапросто обходить, то, что никто не ебошит приватные методы вне класса держится только на соглашении
18 1431608
>>31177
Скажи че тебе надо сначала
19 1431625
Как обрабатывать исключение когда передаешь объект в функцию и вызываешь внутри его метод, чтобы не было ошибки что у объекта нет этого метода. Что это за тип исключения?
20 1431647
>>31608
Есть массив пользователей, поскольку обращаться к базе по средствам одного аккаунт нельзя очень часто и много, я хочу разделить массив между техническими аккаунтами.
Я не погромировал и не учился этому, все что делаю делаю на ощупь по
Собственно каждый раз запуская тред мне надо передать в него нужные параметры имя пароль и массив который он будет обрабатывать.
Понял что можно запустить тред и отдать ему только маасив // количество тех акаунтов. А разделение на количество запросов можно организовать в самой функции.
Собственно вопрос в том как организовать многопоточность с динамическим данными юсер:пас . у меня не правильно, надо задать жёсткий контроль в количестве и первым ждать исполнение последнего. Чтобы не на плодить этого говна кучу кучную.
21 1431696
>>31647

>обращаться к базе по средствам одного аккаунт нельзя


>по средствам


На питоне все такие безграмотные мудаки, или ты один такой феномен?
22 1431700
>>31696
Да.
23 1431701
>>31647
Почему тебе простой zip данных и cycle аккаунтов в цикле не подходит?
24 1431706
Антош, поясни мне за проектирование программ.

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

Правильно/не правильно я работаю? Как вы проектируете и воплощаете в жизнь свой код? Можете ли кинуть примеры хорошего кода? Ведь, если смотреть первый попавшийся на гитхабе, то нет гарантии что код писал не говнокодер.
24 1431706
Антош, поясни мне за проектирование программ.

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

Правильно/не правильно я работаю? Как вы проектируете и воплощаете в жизнь свой код? Можете ли кинуть примеры хорошего кода? Ведь, если смотреть первый попавшийся на гитхабе, то нет гарантии что код писал не говнокодер.
25 1431709
Я сейчас "слегка", что отражается на качестве текста. Сорри.

>>31706 - кун.
26 1431710
>>31709

> "слегка" уставший



Самофикс.
27 1431711
>>30914 (OP)
Зачем коммуну выкинули из шапки, ироды?

https://sites.google.com/view/pypry/
28 1431714
>>31711
Потому что это непонятная хуйня, где есть 2.5 книги и ролика по питону, но зато куча хуйни по жс и css редактор
29 1431724
>>31714
Что лучше: profit == 0, или profit > 0?
30 1431726
>>31724
Что лучше: захламлённое помещение или чистое?
31 1431730
>>31726
Если в захламленном помещении легко найти то что нужно, то лучше оно. Ведь в чистом вообще ничего нет.
32 1431733
>>31730

>Ведь в чистом вообще ничего нет.


Такой предпосылки не давалось.
image.png20 Кб, 441x183
33 1431735
я написал функцию приведения опыта в уровень, но она очень не практична, чем больше опыта - тем больше времени выполняется подсчет.
как фиксить?
https://pastebin.com/dMB448ta
34 1431738
>>31696
Все педанты орфографии и грамоты такие желчные людишки, или только ты?
>>31701

>zip данных


>cycle аккаунтов


Не понимаю как мне это поможет.
У меня есть список ID, по каждому ID надо сделать запрос. Количество запросов ограничено во времени, чтобы сократить время обработки всех ID нужно запустить еще 3.
Или ты по оформлению кода и его заграждению примитивными циклами?
35 1431741
>>31733

>ValueError: Такой предпосылки не давалось.

36 1431775
>>31735
math.log
37 1431782
>>31735
Мдя, алгоритмист из тебя
Что-то типа
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), но я забыл как там эти ряды считаются
38 1431792
>>31782

>texp_per_level (star)= 1.2


чет я не вдупляю, что это?
39 1431795
>>31792
домножение на 1.2
40 1431809
41 1431813
>>31795
как мне понять, сколько осталось опыта, который не потратился на уровень?
42 1431826
>>31625
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
43 1431885
>>31735
проигрул. вот как я бы сделол. оно на единичку меньше експы возвращает потому что я не знаю обосрался ли ты.
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
45 1431900
Кто-нибудь из вас конспектирует знания/мысли. Если да, то как выбираете самое нужное, что предпочитаете, бумагу или электронную версию?
46 1431914
>>31900
вконтакте себе в лс шлю все заметки, либо в частую группу где состоишь только ты
47 1431919
>>31914
Там ведь вроде поиск не очень удобный
48 1432006
>>30914 (OP)

> Кажется, устарел, требуется обновление или замена на что-то другое


Да вроде не особо.
Другое дело, что гайд не окончен, но вряд-ли кто-то возьмётся доделать.
49 1432008
>>31526
Сорри конечно, не могу читать код без __main__, если это не библиотека, переписывай.
50 1432009
>>31900
Коллега на работе завёл себе несколько тетрадок и от руки записывает туда какие-то вещи(вплоть до новых слов на инглише) + распечатывает себе whitepaper'ы. Но он датасаентист с приветом небольшим.
1.png5 Кб, 564x528
51 1432247
мб не совсем по теме, но как при помощи opencv убрать вмятину? На рис. 1 оригинальное изображение, на рис. 2 - то, что хотелось бы. cv2.convexHull не совсем подходит, так как деформирует другие края (рис. 3).
52 1432277
>>32247
Найти разницу между convexHull'ом и оригинальным изображением. Ты получишь бублик с разной толщиной краев. Там, где бублик тонкий, удали все совсем. Где толстый, оставь.
brainlet.png21 Кб, 326x253
53 1432285
>>32277
а как толщину бублика измерить?
54 1432288
>>32285
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, если ты его делал), и копируешь на свою картинку. Если маленькая, нихуя не делаешь
55 1432289
>>32288
спасибо
56 1432571
Подскажите плиз, как в пандасе сохранить структуру датафрейма после 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”, по которым разлелялись группы.
57 1432579
>>32571
Все, разобрался
58 1432893
Где можно посмотреть список команд для api dvach?
sage 59 1433193
>>1432975

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

в разделе api джвача?
60 1433217
>>33193

>разделе api


https://github.com/anonim-legivon/dvach.api
Я про этот, там вроде другой
61 1433218
>>33217
Там примеры есть работы, юзай их, не зря анон писал.
Правда насчёт актуальности хз ибо давно делали и апи могло обновиться.
62 1433245
Анооон, как из функции а нескольких потоках получить ответ?
63 1433338
>>31706
Возможно, ты просто слишком сильно угорел по ООП и абстрагированию. Будь проще и код потянется.
64 1433358
>>31706

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

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

Видение того, "как надо делать" не возникает ниоткуда. Опыт, сын ошибок трудных, как говорится, решает.
image.png129 Кб, 881x404
65 1433378
>>31706
Ебаный двощ обезумел. Слово из спам листа в посте.
66 1433385
>>31706

>Я, кажется, что-то делаю не так.


>Начиркал, как Грэди Буч завещал,


Я еще лет в 13 открыл в библио-глобусе его книгу и понял, что этот словоблуд вообще не стоит внимания.

>И в конечном счете, вместо красивого ООП стиля все вылилось в хз что за стиль, яля говнокод.


В ООП всегда так.

>Правильно/не правильно я работаю?


Нет. Набери в гугле "критика ООП" и читай, читай, читай.
67 1433433
>>33385

>критика ООП


>ну наследование заебись


>да и всё остальное


>а вот инкапсуляция говно


>ну как бы потому что мне нужна свобода


Не набирай, она в конечном счёте сводится к этому.
image.png23 Кб, 605x238
68 1433453
Разве вот так вложено нельзя идти по всему листу?
69 1433468
>>33453
Ты нигде не присваиваешь ничего списку a.
70 1433473
>>33245
Ну как переменную получить ну анон? Или классами все делоть
72 1433540
>>33453
Если хочешь работать именно со списками, лучше так:

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, то как второй пример здесь >>33474
73 1433558
>>33474
>>33540
Спасибо, почему-то думал что по итератору можно получить доступ к самому элементу. Вообще randint тут чисто филер для проверки, вообще у меня должен быть лист из массивов NumPy разной длины, где каждый элемент массива — случайное значение из словаря или совершенно новое созданное по образцу из одной из категорий, но это уже проблема другого порядка.
74 1433579
Чем urllib.request отличается от библиотеки requests?

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

вкатывальщик
75 1433606
>>33558

>по итератору можно получить доступ к самому элементу


Можно, но это работает иначе.
76 1433617
>>33579
requests - обёртка над urllib3. В остальном они немного по разному парсят урлы.
77 1433665
>>33558
Конечно можно. Только итерируемую последовательность во время итерации менять нельзя.
for x in xs:
    <делаем что-то с элементом x>
Здесь можно что-то делать с переменной x, но от присвоения переменной x какого-либо значения последовательность xs не поменяется.
Видишь, здесь >>33474 в первом примере итерируемая последовательность это range, а не список a, элементы этой последовательности используются как индексы для доступа к списку a и изменению его элементов
78 1433695
>>33473
Открыл для себя global
79 1433728
отцы нубский вопрос:
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, то он его пропускает и идет дальше. при подобном раскладе почему то не выходить(
80 1433923
Как питонисты смотрят на котлин?
image.png16 Кб, 1352x77
81 1434032
В питоне есть какой нибудь синтаксический сахарок, чтобы передать в параметры функции N элементов массива, но не одним объектом, а поэлементно? Например, вот есть у меня пикрил, мне лень писать na_data[0]...na_data[7], но и в конструкторе я не хочу делать параметр массивом данных. можно ли как то зделоть зоебись сделать типа NetworkActivity(na_data[0]..na_data[7])?
image.png16 Кб, 1244x79
82 1434034
>>34032
бля, не туда аппендил
self.fix()
83 1434040
>>34032
можно. Если тебе надо передать ровно 8 элементов, а в na_data может быть больше, то код будет
foo(na_data[:8])

если список исходно из 8 элементов, то вообще
foo(
na_data)
84 1434041
>>34040
звезда проглатывается перед na_data
85 1434042
>>34040
Заебись, спасибо.
image.png23 Кб, 1258x94
87 1434045
>>34041
От так, да?
88 1434046
>>34045
тьфу, без [0]
Screenshot.png8 Кб, 273x139
89 1434047
90 1434377
Как разместить элементы в окне по своему желанию в tkinter? pack() хуйню творит, конечно.
91 1434417
>>34377
Там еще есть grid, который, как можно догадаться, размещает элементы в ячейках таблицы, и place, который размещает элементы по очно заданным координатам.
92 1434727
посоны, кто-нибудь занимался запуском питоновских скриптов из-под JVM? Что лучше для этого использовать? Py4J / Jython / JPype?
93 1434767
>>34417
Спасибо.
А есть какая-либо возможность "запретить" изменение габаритов окна?
94 1435231
Кто-нибудь в 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'

Что я делаю не так? Как мне повесить событие на закрытие окна??
Снимок экрана 2019-07-14 в 21.09.07.png175 Кб, 2256x800
95 1435261
>>35231
Зацени.
96 1435281
>>35261
Не понимаю. Я использую окошко из QT-редактора, вот код:
https://pastebin.com/N33z2Ttc
Что я делаю не так? Подскажи плиз
97 1435284
можно ли удалить файл со скриптом после того, как python script.py запущен, но еще не отработал? если да, то как нибудь, имея только pid запущенного процесса, можно ли получить запущенный скрипт?
98 1435295
>>35284
Имя скрипта находится в переменной __file__
99 1435296
>>35281
Ты создаешь класс, наследуясь от object, а я от QMainWindow. object - базовый класс для всех.
100 1435299
>>35284
я возможно недостаточно точно выразился. есть произвольная линуксовая система, на которой запущен скрипт командой python3 scriptname.py от имени рута, но запускал не я, хоть и есть доступ к руту. ни в / ни в ~ рута скрипта scriptname.py нет, да и через find/locate по всей системе он тоже не находится. мне нужно узнать, что именно делает скрипт, в иделае вообще получить его сорсы. как это можно сделать?
101 1435300
>>35295
Но файл уже как бы удален же. Ему нужно как-то найти ссылку на файл, которую держит процесс скрипта.
102 1435305
>>35300
как вообще интерпретатор питона реагирует на удаление файла, указанного при запуске?
15398462327630.jpg48 Кб, 475x640
103 1435308
>>35299
Серьезно? Лезь в оперативу и сиди выдергивай по кусочкам результат работы.
104 1435313
>>35296
Это я вижу. Тоесть QT-редактором вабще пользоваться нельзя, т.к. после него всё перепиливать надо?
105 1435314
>>35308
ну т.е. питон при запуске считывает весь файл в какой нибудь постоянный буфер, который остаётся в процессе до выхода?
106 1435315
>>35305
Не знаю, скорее всего никак не реагирует. Файл уже считан, преобразован в байткод и все необходимое держится в памяти, как я себе это представляю.
107 1435322
>>35313
Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.
>>35314
Ну да. Никогда не видел результат работы sudo rm -rf /* в системе? Все, что осталось в оперативке - то и работает, пока не завершится. Так и работает в целом. Скрипт в оперативке.
109 1435327
>>35322

>Да почему нет то? Можно. Там просто при мастере проекта нужно выбирать нужные вещи. Базовый класс, систему, целевую версию и т.д. От него и зависит, что тебе он даст в начале.


Есть на примете материал, который рассказывает как правильно сделать? Где там это всё выбирать.
Спасибо
110 1435330
>>35327
Если честно, то не знаю. Я просто доки читаю и в vim пишу. qt creator только для c++ использовал. Вот тут вроде просто описывается, быстро глянул https://python-scripts.com/pyqt5
Вот тут уже подробнее, но касательно самой qt
https://www.riverbankcomputing.com/static/Docs/PyQt5/
111 1435345
>>35322
>>35315
нашёл вот такой вот гайд https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12. пайтон шелл раскочегарил, а вот что дальше делать - пока не знаю. какими инструментами из шелла можно посмотреть какие функции/классы/модули имеются?
112 1435350
>>30914 (OP)
Наверное, постоянный вопрос в этих тредах, но сколько пройдёт времени Нормального обучения языку, прежде чем я смогу получать с этого какие-то деньги?
113 1435355
>>35345
Ты можешь поместить скрипт в переменную а потом построчно его оттуда вытаскивать при помощи exec
114 1435363
>>35330

>быстро глянул https://python-scripts.com/pyqt5


Ну вот тут он у них автоматом создаётся класс наследующий QMainWindow, а у меня при тех же действиях - от object.
115 1435364
>>35355
каким образом, если я как раз и запустил этот pyrasite-shell для того, чтобы проанализировать скрипт? какие вообще у питоновского промта (который как >>> три > если вдруг разметка сожрёт выглядит) возможности к интроспекции? в том же гайде пишут, что можно если бы я знал модуль запущенного скрипта, то мог бы узнать какие там есть функции и классы через dir(my_module). а как узнать, какие в рантайме есть модули? понятно, что там будет еще куча всяких системных, но ведь наверняка должен быть и мой, нет?
116 1435365
>>35363
Поэтому и говорят, что не надо слепо верить ide, нужно уметь делать все руками, а только потом - ide.
117 1435369
>>35364
ладно, нашёл вроде
118 1435371
>>35365
Да вот я ньюфаг, и не хотел особо разбираться в ide, хотел залететь на скорую руку, но что-то зациклился на этом.
119 1435378
>>34767
Конечно. Метод resizable, пусть есть корневой виджет по имени root, тогда root.resizable(False, False) запретит изменение окна приложения по горизонтали и вертикали.
Ты такие штуки спрашиваешь, быстрее самому нагуглить, чем ждать, пока ответят на двоще, совсем простые вещи
120 1435385
Чё у вас там, пипенв среду уже создал?
121 1435478
Анон, пишу говнокод короче, нужно подключится к ftp и скачать оттуда актуальные данные, но подключение не идет, я знаю в чем проблема, на работе у нас стоит прокси сервер, так вот как заставить через него работать мой говнокод? Когда подключаю свой мобильный как роутер, то без проблем конектится.
122 1435489
>>35478
Через обычного клиента получается зайти на ftp?
123 1435521
>>35478
Прокси должен прокидывать фтп порт наружу, или туннель давать.
124 1435524
>>35489
Дает без каких либо проблем.
>>35521
Ну ведь он дает, если использовать какой нибудь браузер, но с говнокодом моим не дает.
125 1435529
>>35524
Посмотри про пассивный режим ftp и попробуй это использовать.
126 1435531
>>35529
хотя в доках написано, что он по-умолчанию работает
127 1435536
>>35478
На каком этапе проблема? Получается ли установить коннект с портом?
128 1435540
>>35529
Почитаю посмотрю
>>35536
Как мне глянуть? через какой нибудь wireshark?
129 1435546
>>35540
Попробуй просто на сокет подключиться для начала.

Потом можно сделать tcpdump и посмотреть, какой там диалог.

Попробуй через телнет подключиться, проверить соединение:
https://www.webdigi.co.uk/blog/2009/ftp-using-raw-commands-and-telnet/
130 1435548
>>35540
Ты как пытаешься подключаться, через ftplib?
131 1435558
>>35546
хорошо, попробую
>>35548
Да, через него
132 1435572
>>35558
Короче просто видимо порт 21 не открыт, я ебал, всем спасибо.
133 1435580
Питонистусы, как сделать так чтобы при ошибке скрипт ждал моего подтверждения y/n и по результатам продолжал работу цикла или шёл дальше по скрипту?
134 1435598
>>35580
Внутрь try-блока ты уже не сможешь вернуться.

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

если таких вызовов много, можно обернуть в какой-нибудь декоратор.
10.png24 Кб, 616x266
135 1436236
Кто может пояснить, зачем вот так пишут? Это не джуны, а матёрые сеньёры.
136 1436374
>>36236
А что не так, не достаточно информативная строка, или надо все в одну строчку писать, типа f-string надо использовать вместо format?
А, вижу, в info может быть либо ничего, либо только одно слово, тогда не нужен ни массив не join. Ну, проебались чуть, можно же исправить
137 1436388
>>36236
Вангую, что автор привык собирать строки таким образом, вот по привычке и сделал, хотя тут можно было бы обойтись без списка.
138 1436489
Аноны, доебал препод с тем, чтобы я на питоне накидал ему прогу с парсингом экселя и формочкой для собсна выбора файла, выбора диапазона ячеек и графиком.
Я с этим языком знаком лишь по синтаксису. Ткинтер вообще не ебу, а при попытках раскидать эксель в матрицу знатно заебался с пандой и хлрд, так и ничего не сделав.
Похуй с ним с ткинтером, сам нагуглю надеюсь как сделать форму со всеми этими свистоперделками. Поделитесь кодом, чтобы прочитать эксель файл как
[
[row1 column1, row1 column2...],
[row2 column1, row2 column2...],
...
]
С меня тонны благодарностей от препода и моя сердечная любовь до гроба no homo
139 1436513
>>36489
Ставь или модуль 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])
140 1436514
>>36489
>>36513

>знатно заебался с пандой и хлрд


А, ты и сам это уже нашёл. Тогда не знаю.
141 1436601
>>36489
>>36513
Аноны, а может с json`ом сделать ?
Мимо другой анон
142 1436611
>>36489
а что сложного с пандасом? вот например за 3 строчки в csv можешь сначала сконвертировать, потом с csv работать как обычно. мне лень питон запускать и либреофис
https://stackoverflow.com/questions/10802417/how-to-save-an-excel-worksheet-as-csv/45297469
143 1436697
Добрый день

Аноны, к сожалению, я очередной хуй, который хочет вкатиться в python. Проблема в том, что у меня очень мало времени из=за работы, но есть деньги на то, чтобы купить курс (не надо только ссать на меня). Что скажеет про яндекс практикум? Их программа для backend
144 1436815
Аноны, я практикующийся ньюфаг, накидал знакомому софтинку для учёта вип-аккаунтов от серванта БФ4. Если кому не сложно, зацените код:
https://www.codepile.net/pile/2xO3Z9x6
В даннном случае, вся база хранится в списке. Список хранится в pickle-объекте. При загрузке программы pickle-файл считывается и содержимое помещается в базу, следом обновляется Qt таблица. При любом редактированнии базы (добавленние, удаление, редактирование), происходит сохраненние базы, загрузка, таблица отрисовывается с нуля.
В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть?
145 1436828
>>30914 (OP)
Кто-нибудь знаком с pygame? Пытаюсь решить задачу - есть группа спрайтов-деревьев и спрайт огня. Деревья спавнятся в случайном месте по нажатию кнопки. Огонь доходит до дерева, активируется функция, которая определяет скорость, с которой оно сгорает. Но так как деревья спавнятся, нет конкретной переменной, которую можно вписать в функцию. Как можно применить функцию к экземпляру дерева?
146 1436835
>>36815

>В общем если кому не сложо глянуть - есть в этой программе что-то, что конкретнно не так, за что меня можо пнуть?


Ты без обид, с точки зрения проектирования всё плохо.

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

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

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

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

Это идейно.
147 1436839
>>36835
Хорошо, попробую осмыслить и учесть, хотя мне сейчас многое непонятно.

QT-код целиком из QT-редактора, я его не сам писал, потом он такой.
148 1436846
>>36839
Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер. Потом ещё раз. Сам придёшь к этому.

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

Все эти теории проектирования из жизни пришли.
149 1436851
>>36846

>Попробуй спустя какое-то время переделать вёрстку, подвигать элементы и изменить их размер.


ну, на самом деле не вижу проблемы. В функциях отрытия окна можно отредактировать любой элемент разметки окна, для дочерних оконо по крайней мере. С основным окном не уверен. В общем мне не совсем понятно о чём речь

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

>И с выбором данных, попробуй подумать, как ты будешь в другом формате их хранить


Тоже не совсем понимаю, ты про сохранение данных в pickle? Чуть позже собирался изучить SQL и применить базу данных для сохранения
150 1436863
>>36828
Пайгейм не трогал. Ты не можешь получить экземпляр дерева рядом с огнем? Ты ссылки на деревья куда-то записываешь? У тебя задача на коллизию огня и дерева?
151 1436874
>>36863
Там походу только пересечением координат объектов можно что-то сделать подобное.
Как-то пытался курсач на пайгейме сделать. Больше обсёра у меня не было. Пока не начал рабоать, офк.
image.png158 Кб, 1280x720
152 1436890
>>36874

> Там походу только пересечением координат объектов можно что-то сделать подобное.


Коллизии так и делаются, в общем-то.
153 1436927
>>36890
Ну вот и хорошо. Я не знал.
154 1437131
>>36890
Лол, а там нет функции которая определяет коллизии объектов ? По моему вот так:

def is_collided_with(self, sprite):
return self.rect.colliderect(sprite.rect)
155 1437137
>>37131
было бы странно, если бы их не было. но я подумал, раз тот анон о них не знает, то наверное нет. он же наверняка погуглил столкновения прежде чем самому писать алгоритм. не буду же я гуглить фичи пайгейма, который я ни разу не использовал и не собираюсь.
156 1437218
Почему по сабжу нет нормальной актуальной книги? Либо какие-то справочники, либо фигня для детей, либо старая книга Лутца с ненужной легаси 2.6, кроме 3.
157 1437227
>>37218
Ты уверен что всё посмотрел?
158 1437233
>>30914 (OP)
Жаба-джун заехал в тред
Поштудировал ваш Питонух и малость приохуел:
1) С хрена ли доступ к любому атрибуту и методу можно осуществлять как извне класса, так и просто из самого модуля точечной нотацией?.. Почему кладется хуй на систему геттеров-сеттеров?
2) Где вообще инкапсуляция как таковая? С хуя ли не могу адекватно задать приватные атрибуты в классе? Какие-то блять _ вместо private/public/protected . И есть ли тут вообще бля возможность сделать класс доступным ТОЛЬКО на уровне модуля, а? Че-то пока хуйня получается
159 1437234
>>37233

>Где вообще инкапсуляция как таковая?



>>31047
160 1437239
>>37227
Я не могу быть в этом 100% уверен. Но просмотрел несколько источников. Если у тебя есть годная книга, буду благодарен.
161 1437243
>>37233

>геттеров-сеттеров


Нахуй ты со своей парашей лезешь и пытаешься устраивать правила?

>private/public/protected


Есть соглашение о использовании. Если додик или джун, например, то тебе ниего не мешает говнокодить и в джаве, используя везде public. Просто дандеры используй и методы соответствующие.
162 1437246
>>37218
Тебе уроки нужны? Или документация? Если первое - иди на ютуб или https://wiki.python.org/moin/BeginnersGuide. Если второе - https://docs.python.org/3/
163 1437270
>>37246
Ни то, ни другое. Мне нужна книга, но не сухой справочник.
164 1437273
>>37243

>Нахуй ты со своей парашей лезешь и пытаешься устраивать правила?


Это унылая регулярная паста, не бугурти.

Система геттеров и сеттеров есть.
При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.
165 1437654

>При желании, можно запретить и приватные методы снаружи вызывать, но это лишний код и оверхед, не нужно этого делать.


Как это сделать, кстати?
В общих словах.

Если через __getattribute__(), то он и внутри класса посмотреть свойство/вызвать метод мешает.
166 1437665
>>35580

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
167 1437667
>>37239
Ссылка с пика №2 - т.ме / python_textbooks
Да как вы блять заебали со своим спам-листом.
Screenshot.png49 Кб, 1259x574
168 1437747
>>37654
Вот пример с приватными методами, в виде скрина, идейно

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

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

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

Есть другие способы, но тоже извращённые.
image.png22 Кб, 361x265
169 1437753
>>37747
Как-нибудь можно достать такую приватную функцию?
выфв.png12 Кб, 371x175
170 1437754
Анон, почему это не работает?
Я ввожу с клавиатуры что угодно (это может быть str опвалопвао, int 43242, либо что-то смешанное типа 9t49ting_))!n3).
Мне нужно три развилки - если введено число, то а, если введена строка - то б, все остальное, в том числе смешанное - в.
В этом куске всегда срабатывает только string.
171 1437758
>>37754
Потому что input всегда возвращает строку. Ты сам должен конвертировать в нужный тебе тип.

> The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

172 1437763
>>37754
Во втором питоне input работает так, как тебе нужно.
173 1437770
>>37758
А каким образом я могу сам конвертировать?
Допустим, у меня есть некий результат input - я ввел "312312". Как мне дальше на основе такого инпута ковертировать эту же самую информацию в другой тип?
174 1437785
>>37770
Если у тебя там только строки и int'ы, то самое простое это
value = input()
try:
. . value = int(value)
. . # число
except ValueError:
. . # не int
175 1437790
Есть инвентарь в игре, задача идентифицировать объект в ячейке и посчитать количество (цифра в левом правом уголке).

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

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

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

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

Например, почему
pyautogui.moveTo(x, y)
такой тормозной? Всего 10 позиций в секунду, а если еще нужно периодически ctrl зажимать, отжимать, то получается совсем уж смешная скорость. Есть способы двигать курсор и жать кнопки побыстрее?
176 1437804
>>37790
О, PoE, клёво, давненько в него не заныривал. Много в него народу шпилит?

> пишет на скриптовом интерпретируемом пистоне с тормозной виртуальной машиной


> удивляется, что тормозит


Не еби мозги и бери C++ с OpenCV
177 1437806
Антошь будь няшей, поясни за aiohttp.
Мне нужно отвечать на GET запрос, причем так что ответ никак не зависит от запроса, а получается в результате работы заранее запущенных асинхронных задач. (это докер контейнер который начинает тестирование удаленных сервисов сразу после запуска, отдающий результат тестирования по http и тут же умирающий)
Набросал упрощенный примерчик https://pastebin.com/CRJPrqN5, он работает. Но вот что он говорит:

>DeprecationWarning: Changing state of started or joined application is deprecated


> app['json'] = json_


Что же делать?
Глобальные переменные? 2к19?
178 1437807
>>37806
https://pastebin.com/CRJPrqN5
Обосрался с запятой.
179 1437814
>>37804
Я не погромист, это просто баловство,мозги размять когда время есть, поэтому на плюсы я так с наскока не пересяду при всем желании. Он же, на сколько я знаю, не самый дружелюбный для новичков.

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

Вроде много, от лиги к лиге сильно скачет цифра. Я сам не играю, просто трейдбота пишу сядя в хо
180 1437826
>>37807
>>37806

>Что же делать?


>Глобальные переменные? 2к19?


Глобальные не нужно. Ты просто делаешь класс, который за коммутацию отвечает, хранит, в том числе, json_

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

Доки рекомендуют скорее подход, чтобы ты из app всем управлял, через какие-нибудь очереди и т.п., то есть что app такой главный и всем рулит, но это спорный подход и не для всех случаев. Может быть web-интерфейс вообще опционален?
181 1437834
>>37806
Делаешь класс, который делает все. И будет достаточно его свойств, принципы ООП соблюдены - глобальные переменные не нужны.
182 1437863
>>37826
Спасибо анон!
Сделал упрощенный пример и он работает без warnings.
https://pastebin.com/WTin2nVm
>>37834

>Делаешь класс, который делает все.


ИМХО этот подход примерно эквивалентен глобальным переменным.

>принципы ООП соблюдены


И разумеется не соответствует ООП и более того является известным антипатерном - "объект бога".
Я признаться честно не большой специалист в программировании, но кажется asyncio более тяготеет к процедурщине. А уж тем более в моем случае, когда выполняется много мелких задачек, слабо связанных между собой, городить для этого единый класс, чтобы потом запускать методы по отдельности, только ради namespace, такое себе.
Лучше как >>37826 анон предложил.
Но в любом случае спасибо.
183 1437889
>>37814

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


Тут ключ к успешному решению твоих задач.

> трейдбота пишу
Мм, прибыльно, наверное?
184 1437924
>>37863
Сам только перекатываюсь на asyncio и aiohttp. Правда до этого и на питоне много писал, и на других платформах сетевые вещи писал.

Как спроектирован aiohttp пока не очень нравится, asyncio симпатичен и разумен. Доки рекомендуют всё хранить в app, но это грязно, видимо поэтому этот warnings и появляется.

Если делать класс, то это не глобальный объект. Ты ведь можешь сделать несколько таких классов.

Доки по aiohttp и рекомендации отчасти предполагают, что aiohttp главный объект, то есть что ты вебсервер реализуешь. Но это не всегда так. У меня может быть другой главный сервис, а aiohttp лишь один из сервесов, который там работает. Можно с ним, а можно без него. Или можно с двумя разными aiohttp, на разных портах и разного назначения.

Я сейчас вижу архитектуру так. Ты делаешь приложение my_service, инициализируешь его. В него уже передаёшь созданный, но не запущенный app (aiohttp сервис), либо даже просто соответствующий класс. Приложение my_service само пропишет ссылку на себя в app и стартует его.

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

Идея, чтобы asyncio-app отвечал за содержательный функционал мне не нравится, если задача уходит дальше, чем обычный вебсервер.
185 1437927
>>37924

>web-app уже даёт интерфейс для app


опечатка, my_service даёт интерфейс для app, веб интерфейса
image.png152 Кб, 958x905
186 1437943
Вечер в хату, котаны! Спасайте!
Задача: есть список сайтов, код которых надо пропарсить на наличие определенной сигнатуры html/js. То есть в идеале скрипт принимает на вход файл со списком и выдает другой файл где собраны сайты, на страницах которых есть нужный код. Проблема в том, что мои познания в питоне ограничиваются тем, что он простой и для большинства задач уже собран готовый велосипед. Мой максимум - разобраться за часик другой в чьем-то коде и попробовать докрутить под себя. Ну или за большее количество времени написать что-то криво-косо с нуля, если мне объяснят, какие основные библиотеки и фичи нужны для решения этой задачи. Помогите, антоны, с меня как всегда лучи добра.
187 1438012
>>37790
Определять тип объекта можно попробовать при помощи построения вектора кождого из товаров(вектор основывается на гистограмме цветов). Для этого надо для начала подобрать базу скринов и по ним вычислить вектора. Дальше делаешь скрин ячейки, вычисляешь вектор и делаешь быстрое перемножение: твой вектор ячейки на кучу векторов уже в БД (матричное перемножение итт), дальше сортируешь по степени схожести(от 0 до 0.9) и берешь самый лучший вариант.
Делал подобное, но на больших фотках, анализ одной, на процессоре, занимал примерно 0.002с, у тебя же фотки меньше, можешь сделать это все ещё и мультипроцессингом - вообще огонь будет.
Эх
188 1438059
Какой попенсоурс джанго проджект можно посмотреть чтобы аж покайфовать как ахуенно сделоли?
189 1438109
Котаны, подскажите, если вэб в питоне?
Куда перекатываться после пхп? И есть ли смысл перекатываться?
Я по мухосранску Краснодар hh смотрел - именно вэб вакансий чет совсем мало. Синтаксис питона знаю.
Ща ковыряюсь в Node.js. И думаю о питоне.
Короче мучаюсь выбором второй платформы для изучения.
Вообще в принципе преимущества питона в вэб-бекенде относительно пхп каковы? ( я не троллинга ради, хочу вектор для себя набить)
С node.js все понятно - там асинхронность из коробки, событийный цикл, все это интересно, но такое ощущение что noda нахрен никому не нужна в РФ.
А питон?
190 1438117
>>38109

>Котаны, подскажите, если вэб в питоне?


Учить пользоваться поиском, по технологиями и по вакансиям.

>>38109

>Я по мухосранску


Я думаю там по всем направлениям IT мало вакансий.

>>38109

>Вообще в принципе преимущества питона в вэб-бекенде относительно пхп каковы?


Просто более внятный и стройный код, сам язык поддерживает многие конструкции элегантно и удобно. После питона писать на пхп противно. Фреймворки тоже иначе сделаны, но это уже от фреймворка зависит.
191 1438121
>>38109

> ковыряюсь в Node.js.


>И думаю о питоне.



пидор
193 1438137
>>31706

>на каком моменте можно прекращать придумывать абстрактные классы и писать уже код


С самого начала. Зачем тебе вообще классы в питоне? Напиши логику, а потом уже абстрагируй, если необходимость появится.
194 1438147
Анон подскажи нубу плз. Пилю для себя скрипт. Хочу чтобы после обработки данных скрипт создавал файлик в гугл докс. Что вообще курить, в какую сторону двигаться?
196 1438155
>>38150
Ну досюда то я догуглил. Просто чёто как-то страшновато туда лезть. Там вообще сильно сложно для самовкатывальщика?
197 1438157
>>38117

>>Я думаю там по всем направлениям IT мало вакансий.


ПХП > 100 вакансий. Питон + Джанго = 6.
198 1438288
>>38155
Программирование - это сложно [дот]
Снимок экрана в 2019-07-19 00-53-35.png104 Кб, 1920x1080
199 1438390
какого хуя?
200 1438395
>>38157
Почему так? Почему элита не ценится?
201 1438399
>>30914 (OP)
нигеролюб идёт на хуй вместе со своим уёбищным тормозным питоном и всеми говнопроектами на нём.
202 1438418
>>38390
Если тебе непонятны такие пустяки, то ты выбрал неправильное занятие.
Это условие у тебя покрывается уже отработанным условием сверху.
203 1438421
>>38390
иф выполнится при любом t

то что над ним есть другой иф - иррелевантно, чтобы стало релевантно используй elif
204 1438425
>>38421
yatoopanool, у тебя же там И, а не ИЛИ
тогда хуй знает, не должно быть никаких варнингов. я не ебу что за иде и дефолтные условия, но дело в них
205 1438463
Что там по асинхронным ORM сейчас годного есть, да чтоб с миграциями?
206 1438495
>>38425
Пиздец, все питонисты такие тупые, что больше одной строчки кода прочесть не могут?
207 1438499
>>38425
Тебе варнинг показывается не на if целиком, а только на первую его часть. Просто выделено слабо и сформулировано неочевидно, я сам долго понять не мог, пока не пригляделся, что там выделение есть.

По смыслу там должно быть не
if t >= 60 and t < 3600
а просто
if t < 3600
208 1438502
>>38499
А в плане читаемости лучше было бы использовать конструкцию

if t < 60:
....
elif t < 3600:
....
209 1438507
>>38495
соси хуй, быдло. к семантике языка это не имеет никакого отношения и в дефолтном питоне никаких варнингов не будет

>>38495
понял, типа статический анализатор определил, что это бессмысленное сравнение ввиду предыдущего ифа
210 1438508
>>38499
>>38507

> понял, типа статический анализатор определил, что это бессмысленное сравнение ввиду предыдущего ифа

211 1438518
>>38463
Нихуя.
Пулл коннектов делаешь и всё хорошо.
212 1438559
В Python есть инструменты для взаимодействия с элементами приложений Windows? Хочу дать проге доступ к клавиатуре.
213 1438591
>>38499
Спасибо.
214 1438605
>>37754

> if type(a) is b



Почему не instanceof?
215 1438796
написал программу с бесконечным циклом которая постоянно принтует "Ты пидор Ты пидор Ты пидор Ты пидор" первый раз за всё время обучения погромированнию получил удовлтеоврение и положительные эмоции.
216 1438798
>>38796

>написал программу с бесконечным циклом которая постоянно принтует


>первый раз за всё время обучения


Надеюсь сегодня твой первый день обучения. Иначе тебе стоит поискать другую специальность.
217 1438802
>>38796
я даже больше скажу. когда я её первый раз написал, после этого я редактировал её 3 раза, пока не довёл до того что в итоге там осталась только одна перменная. программа получилась идеально простой и понятной.

>>38798
у меня итак другая специальность. просто мне досталась ангельская книжка по питхоне ну и вооружившись гугле переводчиком решил "чего добру то пропадать" вот сижу с июня потихоньку читаю её.
218 1438803
>>38802

>пока не довёл до того что в итоге там осталась только одна перменная


Тебе действительно стоит поискать другую вещь для вката. Для такой программы не нужно переменных вообще.
219 1438806
>>38803
я не собираюсь вкатываться блять, я тупо читаю книгу по питону которая нахялву досталась. у меня уже давно есть вкат в другую специальность.

кстати напиши код без перменных интересно как он будет выглядеть.
220 1438813
>>38803
покажи код программы без перменных которая будет выводить бесконечно "Ты пидор...", заинтриговал.
221 1438817
>>38803
жду код без переменных, кукаретик ебучий? а ты, что падла думал сейчас простых упражнений поверхностно нарешаешь и погромист дохуя? ахахах соси хуй маня, это тебе сюда вкатываться не надо, ты поверхностый хуесос который хочет зазубрить синтаксис и нихуя более. давай жду цикл WHILE без перменных
2019-07-19 172103-Template Matching — OpenCV Documentation.png84 Кб, 902x1010
222 1438823
Как вкатится в математику? Я может когда-то это все понимал, но сейчас что называется вижу фигу.
resmario.jpg35 Кб, 450x240
223 1438841
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img_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.8
loc = 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 есть какие-то координаты но они не совпадают с объектами, совсем, и много повторяющихся значений.
224 1438843
>>38803
>>38798
ЭЭЭЭЙ, задрот. АУУУУУ, где твоя программа без перменных? Что ты там говорил, бля? Что это не моё? Може это не ТВОЁ? МАНЯ ЗАЛЁТНАЯ, ПОССАЛ ТЕБЕ НА ЕБАЛО С РАЗБЕГУ. пиздеть горазд, а как обосрался в игнор. чсвшное задротище, наверное такие ублюдки как ты пишут статьи на лурочке. вид важный будто хуй бумажный, а на деле нихуя не знает и не умеет, всё поверхностно. только на двоще передеть может. ТЫ ОБОССАН
225 1438881
>>38813
while True: print("you're a faggot...")
226 1438885
>>38823
Преставь себе два вектора, т.е. две стрелки, выходящие из начала координат. Как измерить их близость? Можно измерить расстояние между кончиками. Можно измерить угол. Можно измерить скалярное произведение.
При этом нам не важно, сколько измерений в твоем векторе, может быть 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, несколько научных статей, и это проблем представлять не будет.
226 1438885
>>38823
Преставь себе два вектора, т.е. две стрелки, выходящие из начала координат. Как измерить их близость? Можно измерить расстояние между кончиками. Можно измерить угол. Можно измерить скалярное произведение.
При этом нам не важно, сколько измерений в твоем векторе, может быть 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, несколько научных статей, и это проблем представлять не будет.
227 1438891
>>38885
Спасибо за такой развернутый ответ!
228 1438894
>>38891
Не за что.
229 1438903
>>38157
И зачем нужен питон, если есть божественный пхп?
230 1438905
>>38881
да, точно с ебланил. ну извини, ладно. да я же читал в книге что цикл работает если заявление тру. блять мог бы сам додуматься до этого.
231 1438907
>>38905
Я не он. Не надо приносить извинения тому мудаку.
232 1438909
>>38907
ладно, тот пидор остался безпруфным кукаретиком.

спасибо тебе, ещё раз.
noloops.png25 Кб, 542x223
233 1438933
>>38881
while не нужен
пример на 3.7, на 3.6 не заработает
234 1438934
>>38933

>2к19


>python 3.6

235 1438941
>>38934
3.6 и даже 3.5 ещё активно используются. Например под 3.7 ещё нет PyPy.
236 1439017
>>38934
Я вообще 3.4.2 пользуюсь. И ничего, живу как-то.
237 1439026
>>39017
Если асинхронщину не клепать, то может быть и всё равно.
238 1439133
>>38894
он нихуя не понял всё равно, зря писал
239 1439134
>>39133
Ты что ли понял болезный?
240 1439139
>>39134
так я проецирую
15462014536990.jpg21 Кб, 432x288
241 1439150
Анон, помоги нюфажине. Тут падас или нампай.
Есть датафрейм вида
1 | 1 | 1,1
1 | 2 | 1,2
1 | 1 | 0,87
1 | 3 | 0,65
1 | 4 | 3
1 | 1 | 2,3
2 | 2 | 4
2 | 1 | 0,65
2 | 3 | 11
..........

Т.е первый столбец содержит идентификатор (как видно он может повторяться для строк), второй столбец колеблется в каких-то повторяющихся пределах, а третий содержит уникальные значения.
Надо:
- разбить табличку на минитаблички по параметру "1столбец". Я правильно понимаю. что первый столбец надо сделать ключом в таком случае?
- подсчитать частоту второго параметра для каждого идентификатора из первого столбца
- на основании этого для одинаковых параметров из второго столбца суммировать значения из 3го.
242 1439297
Сколько надо дрочить питон чтобы выйти хотя бы на 60к? Скажем, если я на обучение выделяю каждый день часа 4 после работы и один выходной с утра до вечера.
Наверняка таких вопросов дохуя было, можно в факе закрепить.
243 1439301
>>39297
Ну мне кажется как повезет. Можешь пойти вообще как стажер за 90к.
244 1439311
>>39297
Тут качество дрочения важнее количества
245 1439337
>>39297
Такие вопросы обычно задают в "мы вам перезвоним".

Надо в первую очередь уметь программировать. На чём именно - не важно.

Если ты уже программируешь, то питон осваивается быстро. Если ты владеешь какой-то технологией на одном языке, будь это треды/процессы/async, то и на питоне с ними разберёшься относительно быстро.

Зарплата вообще не тот вопрос. В первую очередь вопрос о том, чтобы тебя взяли на работу, чтобы ты был кому-то нужен как программист.

Чистый питон никому не нужен. Нужны сопутствующие технологии, они требуют много времени на освоение, смотри вакансии по ключевому слову python.
246 1439372
Есть цифры такого вида (1 скрин), поигравшись немного с ресайзом и инверсией привел их в более менее стабильный для распознания tesseract'ом вид (2 скрин), но хоть и редко,все равно бывает плохо распознает.

Размер и шрифт цифр всегда один, но количество может быть до 99. Как, кроме tesseract'а можно распознавать их стабильнее и желательно побыстрее?
247 1439380
>>39372
А насколько там стабильный источник цифр? Это скан или что-то ещё? Одинаковые цифры выглядят очень похожими друг на друга, с точностью до пикселя.

Нельзя ли просто взять тестовую картинку, взять контрольную, посчитать разницу между ними по какой-то метрике. Может быть проверить несколько вариантов, со сдвигом на один-два пикселя. По минимальной разнице и выбрать то, что нужно. Дёшево, сердито, быстро, но ограничено, конечно.
248 1439390
>>39380
Небольшая нестабильность заключается в том, что это цифры на всплывающем полупрозрачном тултипе в игре, но в варианте 2 по идее они должны попиксельно совпадать.

Думал примерно о том, что ты говоришь, но только как о концепции, как это реализовывать не представляю. Мне нужно будет подготовить 10 контрольных (0123456789) и каждый раз их по кругу прогонять на тесовой картинке в поисках совпадений?
249 1439419
>>39301
>>39311
>>39337
Ок, упрощу вопрос без гаданий об индивидуальности вопрошающего. Сколько у вас ушло времени, чтобы выйти по зп на 60к+?
250 1439421
>>39419
Съеби нахуй дебил. Смотря в каком городе, че за контора, СУПЕР СИЛЬНО зависит от софт скилов на собесах, а не от умения кодить.
251 1439424
>>39421
В первую очередь надо уметь программировать. Но этому и за годы можно не научиться, а сваливать всё на софт скиллы, которые да, тоже важны.
252 1439428
>>39424
Не нужно философствовать, был конкретный вопрос от зеленого нуфага, у которого по определению не может быть харда, и на собесах будет решать именно софт.
253 1439432
>>39390
Не знаю, как такое делать на питоне, наверное уже надо подключать пакеты numpy, чтобы быстро было.

Как у тебя эти картинки в питоне представлены? Картинка фиксированного размера в пикселях? В питон как, в виде списка кладёшь?

Вот если ты хранишь во вложенных списках
digit[y][x]
просто считаешь сумму в виде:
summ = 0
for y in range(SIZE_Y):
forn x in range(SIZE_X):
summ += (checking_number[y][x] - sample['5'][y][x])^2

summ = summ / (SIZE_X * SIZE_Y)

Только не ^2, а возведение в квадрат, две звезды которые

это среднеквадратичное отклонение. Так для всех цифр. Даже просто в питоне должно работать быстро, а если numpy, то ещё на порядок можно ускорить. Разные оптимизации можно придумать дополнительные.

В таком варианте даже если есть легкий фон, не страшно. Можно. Надо тестировать.

Смотришь, у какого образца будет минимальное отклонение.
254 1439437
>>39428
Если ты неуверенно держишься и приходишь как на экзамен, это в минус.

Но говорить с тобой будут в первую очередь о программировании, прикидывать, насколько ты мыслишь как программист.

Тысячи примеров, народ ничего не знает, показывает это, а потом валит всё на софт скиллы и на то, что муйню ненужную спрашивают.
255 1439440
>>39428

>был конкретный вопрос от зеленого нуфага


Не нужны.
Зелёный нюфаг спросил про "60 т.р.", а не про то, "что надо уметь, чтобы взяли на работу". Это приговор. Нюфаг просто не понимает, что это лютый пиздец.
256 1439448
>>39440
Да,он обречен, именно поэтому я начал свой пост с

>Съеби нахуй дебил.



Ну и что бы совсем не офтопить, дополнил для других залетных.
257 1439622
>>39150
Бамп вопросу.
15330576481250.jpg50 Кб, 451x604
258 1439629
Куда делась ссылка на конфигуратор кода?

Есть кусок кода в джаго работающий со связкой поста и мыл
вышибает
IndentationError: unindent does not match any outer indentation level

и указывает на строку subject
В чем проблема, не понимаю.

Кусок кода
https://ideone.com/yASeqi

помогите
259 1439638
разобрался, странно, вроде не мешал
260 1439994
Есть встроенная функция open()
Про нее могу почитать в документации в Built-in Functions

А в каком разделе можно почитать про файловые аргументы типо .write() или .close() ?
261 1440006
>>39629
В 9-ой строке 3 таба, в 10-ой — 12 пробелов.
15335849576a3 (1).gif84 Кб, 400x480
262 1440049
Что лучше использовать для хранения списка структур: ванильный питоновский list([dict(), dict()...]) или pd.Dataframe
В какой структуре нода ищется быстрее?
263 1440119
Стоит ли читать Лутца? А то книга очень длинная. Не то, чтобы я не могу прочитать тысячу страниц, просто много никому ненужной информации. Есть годная альтернатива без воды "от и до"?
264 1440122
>>40119
Может вообще в другой язык вкатиться? Python пользуется каким-то спросом?
265 1440150
>>40122
Вкатывайся в Паскаль. Честно, плохого тебе тут не посоветуют.
266 1440192
Читаю Лутца, самую первую книгу для нобов, "Python learning" или что-то такое.

СТОЛКНУЛСЯ С ПРОБЛЕМОЙ

Примерно сотня страниц посвящена воде, достаточно занимательной, и онан даже нового узнал, но тем не менее воде, ибо про код ни строки.

Сразу за этим РЕЗКО идут кулстори про списки/словари/пробки анальные. Не то, чтобы это прям не понятно, но аФФтар использует в объяснении вещи, которые ещё не проходили в рамках книги.

Так вот, насколько важно посимвольно понимать и прогонять примеры из книги? Если кто читал, прошу пояснить, в какой момент мне станет внезапно всё понятно.
267 1440214
>>36489
Короче разобрался с вопросом. Как я и думал -- решение есть, надо лишь его правильно нагуглить.
метод as_matrix переводит почти в нужную мне матрицу (массив массивов-строк). Транспонировав (метод transpose, вроде из либы numpy) матрицу я получил то, что и реквестил.
268 1440217
>>40192
Я для себя решил сначала решить задачки на питонтуторе чтобы иметь хоть какое-то представление о предмете, потом вернусь к Лутцу.
269 1440219
>>39994
Подскажите нубу
download140 Кб, 604x403
270 1440230
>>30914 (OP)
ВВОДНАЯ
Несостоявшаяся пхп макака которая только и смогла осилить процедурный код, поверхностно коснуться баз данных и ооп стало скушно, не интересно, можно применять только в вебе хочет вкатиться в питон.
ЗАДАЧА
Помочь макаке с поиском книжки на русском, чтоб как у О'райли Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript - свежее издание, годная подача материала, чтоб совсем для бомжей типа меня, и чтоб майнкрафт змейку писать научил!
271 1440236
>>40230
Поясните за Эрика Маттиса
272 1440258
>>30914 (OP)
Приветствую, питононы! Вопрос скорее - математический.

Есть простенький скрипт: https://rextester.com/TVNM46327
Как видно, при его исполнении, некое сгенерированное число - делится с остатком
на различные делители, являющиеся степенями двойки.
При этом, вся информация о числе - содержится в остатках.
В каждом из случаев - множитель спадает в ноль.

Пусть x - неизвестное число. Пусть стоит задача подобрать x перебором.
Пусть известно условие, которое исполняется, если число x - корректно.
Пусть также будет известна - максимальная битовая длина числа x,
и пусть она будет равна значению power = 12.
И пусть в качестве бонуса, искомое x находится в мультипликативной группе кольца вычетов
по простостому модулю (это не обязательно, но если поможет - вот).

Внимание, вопрос. Возможно ли, глядя на результат вывода предыдущего скрипта,
как-то ускорить подбор x, используя различные делители?
Существуют ли какие-либо закономерности, позволяющие, например, составить систему уравнений и решить её,
определив последовательность остатков/бит, и как следствие - составить из них искомое число x?
273 1440261
>>40258
Ничего не понятно. У тебя есть двоичное разложение числа, то есть фактически само число.

> Пусть известно условие, которое исполняется, если число x - корректно.


В общем случае никак. Вот пусть тебе криптохеш известен. Или экспонента числа по модулю (DH, RSA). Это как крайние случаи.

Собственно ты и лезешь в DH/RSA и спрашиваешь, нет ли быстрого способа вычислить. Способы есть, существенно более быстрые, чем перебор, но всё равно экспоненциальные. Но это тебе надо в специальную литературу лезть.

Или я не понимаю. То есть я точно не понимаю, что ты спрашиваешь.
blob41 Кб, 800x800
274 1440270
>>40261

>Ничего не понятно.


Я скрипт, просто как пример скинул, чтобы было видно закономерности деления с остатком на степени двойки.
Некоторые вижу, а некоторые нет.
Может есть какие-то скрытые закономерности.
И хотелось бы их все учесть, собрать воедино и связать в алгоритм или систему уравнений, которую можно было бы взять и решить.

>У тебя есть двоичное разложение числа, то есть фактически само число.


Как видишь, в скрипте, число 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 (или до дохулиарда-семь).

Но чё-т сдаётся мне, что можно взять и поделить, а потом ещё раз, и ещё раз и ещё раз.
blob41 Кб, 800x800
274 1440270
>>40261

>Ничего не понятно.


Я скрипт, просто как пример скинул, чтобы было видно закономерности деления с остатком на степени двойки.
Некоторые вижу, а некоторые нет.
Может есть какие-то скрытые закономерности.
И хотелось бы их все учесть, собрать воедино и связать в алгоритм или систему уравнений, которую можно было бы взять и решить.

>У тебя есть двоичное разложение числа, то есть фактически само число.


Как видишь, в скрипте, число 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 (или до дохулиарда-семь).

Но чё-т сдаётся мне, что можно взять и поделить, а потом ещё раз, и ещё раз и ещё раз.
275 1440274
>>40270

>Ну, и собственно задача, есть элемент, пусть он будет седьмым. И надо найти его индекс - число 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 бит ты уже не сможешь найти. Но это уже серьёзная наука по теории чисел и криптографии. Ты, конечно, можешь пытаться сам что-нибудь придумать, но поверь, ты не первый и даже не тысячный. Очень много думали и очень серьёзные люди.
276 1440286
>>40258
Тоесть тебе нихуя не известно про число, кроме длины его представления в двоичной системе и способа проверки этого числа на "правильность". И ты хочешь (быстро) найти это число?
277 1440304
>>40286

>кроме длины его представления в двоичной системе


010101
в данном случае это 6?
AD62A337-3DDC-4A77-B27C-1E2D5356C737.jpeg156 Кб, 750x798
278 1440513
Почему 3?
279 1440518
>>40513
а что ты ожидал?
280 1440519
Почему 3 можно объяснить ?
281 1440541
>>40519
things[2] = [1, 2, number]
[1, 2, number][2] = number
number = 3
282 1440545
>>40519
>>40513
Потому что ты пидор Потому что в питоне нумирация массивов начинается с нуля, потому что в большом массиве элемент под индексом 2, то есть третий элемент, это другой массив, третьим элементом которого является тройка. Запись things[2][2] означает "взять третий элемент третьего элемента списка things". Серьезно, чего ты ожидал другого? Это же самые азы
283 1440547
Спасиб понял
284 1440556
>>40274

>Я всё равно не понимаю. Что такое индекс?


Индекс - это порядковый номер элемента в той группе. Если элемент - седьмой, то индекс - 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/Дискретное_логарифмирование#Пример
видно, что показатели степени, по порядку - тоже формируют кольцо, и результаты - замыкаются в кольцо.

>>40286

>Тоесть тебе нихуя не известно про число, кроме длины его представления


>в двоичной системе и способа проверки этого числа на "правильность".


>И ты хочешь (быстро) найти это число?


Если более конкретно, то меня тут, скорее - эллиптическая кривая в конечном поле,
и точка, как элемент абелевой группы. Ведь там множители точек тоже образуют кольцо (поле), и группу.

А так-то я в общем вопрос ускрения перебора тут рассматриваю...
Может кто и найдёт какие-либо скрытые закономерности и взаимосвяжет их в алго или систему уравнений.

>>40304

>010101


>в данном случае это 6?


Да.

>>40274

>Там есть более продвинутые алгоритмы, чем просто перебор,


>то есть для p порядка 2^64 ты можешь быстро найти, но они умеренно быстрые.


>Для 1000 бит ты уже не сможешь найти. Но это уже серьёзная наука по теории чисел и криптографии.


Я видел тот же pollard rho алгоритм, который работает до корня от числа.

>Но это уже серьёзная наука по теории чисел и криптографии.


>Ты, конечно, можешь пытаться сам что-нибудь придумать, но поверь,


>ты не первый и даже не тысячный.


>Очень много думали и очень серьёзные люди.


Вот я и думаю... И глядя на ту таблицу, то есть на результат работы скрипта https://rextester.com/TVNM46327
решил поставить задачу вот так:
Оптмальнейшим образом - попытаться прийти от нулей к числу, используя различные делители
- сделать это за ограниченное количество шагов, и возможно даже - синхронно.
Согласись, перебрать остатки - намного проще, нежели перебрать всё число.
Особенно если их перебирать не надо, и если они как-то закономерно между собой - коррелируют.
Ведь я вижу, что данные каким-то образом всё-же взаимосвязаны в той таблице:
1. Все множители различных делителей - содержатся в множителях, при делении числа, с остатком - на 2.
2. Первый множитель - сдвигается на показатель степени двойки у делителя.
3. ВСЕ множители - плавно убывают до нуля, за ограниченное битовой длиной числа - количество операций.
4. Остатки всегда меньше делителя, они содержат сдвинутые биты изначального числа, и несут всю информацию о числе.
5. Иногда, остатки повторяются, а иногда - нет. Если повторяются, то остаток меньше делителя, иначе - больше, и остаток - разница между предыдущим остатком и делителем.
6. Вижу связь между множителями различных делителей - множитель текущего делителя,
это либо (предыдущий множитель / 2), либо (предыдущий множитель - 1)/2

Может ещё есть какие-то закономерности, но я их не вижу?
284 1440556
>>40274

>Я всё равно не понимаю. Что такое индекс?


Индекс - это порядковый номер элемента в той группе. Если элемент - седьмой, то индекс - 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/Дискретное_логарифмирование#Пример
видно, что показатели степени, по порядку - тоже формируют кольцо, и результаты - замыкаются в кольцо.

>>40286

>Тоесть тебе нихуя не известно про число, кроме длины его представления


>в двоичной системе и способа проверки этого числа на "правильность".


>И ты хочешь (быстро) найти это число?


Если более конкретно, то меня тут, скорее - эллиптическая кривая в конечном поле,
и точка, как элемент абелевой группы. Ведь там множители точек тоже образуют кольцо (поле), и группу.

А так-то я в общем вопрос ускрения перебора тут рассматриваю...
Может кто и найдёт какие-либо скрытые закономерности и взаимосвяжет их в алго или систему уравнений.

>>40304

>010101


>в данном случае это 6?


Да.

>>40274

>Там есть более продвинутые алгоритмы, чем просто перебор,


>то есть для p порядка 2^64 ты можешь быстро найти, но они умеренно быстрые.


>Для 1000 бит ты уже не сможешь найти. Но это уже серьёзная наука по теории чисел и криптографии.


Я видел тот же pollard rho алгоритм, который работает до корня от числа.

>Но это уже серьёзная наука по теории чисел и криптографии.


>Ты, конечно, можешь пытаться сам что-нибудь придумать, но поверь,


>ты не первый и даже не тысячный.


>Очень много думали и очень серьёзные люди.


Вот я и думаю... И глядя на ту таблицу, то есть на результат работы скрипта https://rextester.com/TVNM46327
решил поставить задачу вот так:
Оптмальнейшим образом - попытаться прийти от нулей к числу, используя различные делители
- сделать это за ограниченное количество шагов, и возможно даже - синхронно.
Согласись, перебрать остатки - намного проще, нежели перебрать всё число.
Особенно если их перебирать не надо, и если они как-то закономерно между собой - коррелируют.
Ведь я вижу, что данные каким-то образом всё-же взаимосвязаны в той таблице:
1. Все множители различных делителей - содержатся в множителях, при делении числа, с остатком - на 2.
2. Первый множитель - сдвигается на показатель степени двойки у делителя.
3. ВСЕ множители - плавно убывают до нуля, за ограниченное битовой длиной числа - количество операций.
4. Остатки всегда меньше делителя, они содержат сдвинутые биты изначального числа, и несут всю информацию о числе.
5. Иногда, остатки повторяются, а иногда - нет. Если повторяются, то остаток меньше делителя, иначе - больше, и остаток - разница между предыдущим остатком и делителем.
6. Вижу связь между множителями различных делителей - множитель текущего делителя,
это либо (предыдущий множитель / 2), либо (предыдущий множитель - 1)/2

Может ещё есть какие-то закономерности, но я их не вижу?
285 1440595
dataquest.io стоит того?
286 1440602
>>40556

>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. Поверь, ты не первый, тут всё очень хорошо изучено.
287 1440638
Анон, подскажи, пожалуйста.
Есть таблица вида:
№ |Cat
1 | A
1 | B
1 | C
1 | D
2 | A
2 | D
2 | B
3 | C

Как привести её к виду одномерного массива:
№ A B C D
1 1 1 1 1
2 1 1 0 1
...
Т.е элементы второго столбца оригинальной таблицы должны стать названиями столбцов новой матрицы, а наполнения ячеек этих столбцов - булевое 1 или 0 - т.е были они в оригинальной таблице или нет?
288 1440654
>>40638
Так а в чем проблема? Просто в лоб пройдись циклом и добавь
289 1440657
>>40654
В этом и затык. Можешь примерно накидать функцию? Или может в pandas есть?
290 1440663
>>40657
nombers = 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
примерно так
291 1440672
>>40663
Спасибо, попробую.
292 1440679
Есть встроенная функция open()
Про нее могу почитать в документации в Built-in Functions
https://docs.python.org/3/library/functions.html#open

А в каком разделе можно почитать про файловые аргументы типо .write() или .close() ?
293 1440680
Добрый день всем.

Аноны, на работе проводят курсы для желаюших вкатиться в big data, аналитику и прочее с использованием питона (нет, фирма не уровня говно параша). Сам работаю в около айти сфере. Насколько это перспективно по вашему? С математикой и погромированием ранее проблем не испытывал.

Давненько думаю про backend и беспокоит, что всякие js, java и php дышат в спину, а то и вовсе востребованее. Спасибо
294 1440685
>>40602

>Здесь у тебя 7 элементов.


Да, включая нейтральный, нулевой элемент. Вот тут чёрную точку из картинки поста >>40270

>Процитированная "полугруппа" из 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,
используя разные пути прихода к нему от нуля, и разные делители.
Поэтому, я написал тот скриптец, вкинул его сюда, и ржу.
И мне чё-то кажется, что можно сделать систему уравнений, или написать на базе этого -
какой-то пиздатый матричный самосинхронизирующийся мега-супер-пупер-гипер-ультра-алгоритм.
294 1440685
>>40602

>Здесь у тебя 7 элементов.


Да, включая нейтральный, нулевой элемент. Вот тут чёрную точку из картинки поста >>40270

>Процитированная "полугруппа" из 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,
используя разные пути прихода к нему от нуля, и разные делители.
Поэтому, я написал тот скриптец, вкинул его сюда, и ржу.
И мне чё-то кажется, что можно сделать систему уравнений, или написать на базе этого -
какой-то пиздатый матричный самосинхронизирующийся мега-супер-пупер-гипер-ультра-алгоритм.
295 1440686
>>40680
Ну раз на работе проводят, то почему бы не попробовать? Оно вполне может быть интересным.
153099803388.jpg108 Кб, 720x960
296 1440689
Блять, а ">=" к строкам применяется?
Мне в последовательности надо кусок вырезать, начиная с определённой строки, вот только кусок повторяется, состоит из разного содержимого и расположен в разных местах.
298 1440691
>>40595
Никто не юзал?
299 1440695
Скоро аноны скажут "пиздуйте в math" и будут правы

>>40685

>Вот тут я не совсем понимаю, откуда ты получил число 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.

Тут всё просто.

>>40685

>Я вижу кольцо это, в группе точек на эллиптической кривой, то есть индексы точек - замыкаются в кольцо...


>Поэтому задача эта, немного переквалифицировалась на дискретное логарифмирование


Я так и подумал. Ты пытаешься как-то просто решить серьёзные криптографические задачи, на которых сейчас всё строится. Поверь, тут очень серьёзная наука. Поверь, над этими вопросами думали многие десятки тысяч очень серьёзных математиков. Ну флаг в руки.
300 1440697
>>40695
Если ты возьмёшь 22 = 4, то его порядок будет = 6. Если вы возьмёшь 222 = 8,
Тут знаки умножения пропали, которые стояли между двойками.

Продолжать не буду, вряд ли кому интересно. Думаю, тебе стоит пойти в math. К питону это никакого отношения не имеет, к программирования почти никакого.
301 1440698
>>40689
Нет, но стандартная библиотека содержит много полезных функций, ещё и регулярки есть.
302 1440699
>>40698
Я тормоз, применяется. Но с этим надо аккуратнее. Если тебе надо резать, то смотри доки.
303 1440702
>>40699
Например?
304 1440712
>>40690
Спасибо!
305 1440737
>>40663
>>40672
Что-то не работает.
Печалька.
306 1440743
>>40737
Скинь код полностью
307 1440746
>>40737
пиздец. какие же вы блять ну просто... трассировку программы делай если что-то не работает, а не спрашивай об этом. бери и разбирай почастям всё тобою написанное.
308 1440749
>>40746
Мань, извини, но мне надо разобраться и сделать, и чем быстрее, тем лучше.
Наставников и коллег у меня нет, а сраный стаковерфлоу и учебники не на всё дают ответы.
309 1440753
>>40749
если ты учишься то это

>быстрее сделать


не канает. делай трассировку программы, отслеживай каждое действие в ручную и на одном из этапов ты поймёшь на какой ступени твои ожидания расходятся с результатом программы. это полезный навык.
310 1440754
>>30914 (OP)
Ссылки не открываются.
311 1440755
>>40753
Биться над задачей можно очень долго. И есть возможность можно и срезать пусть обучения. Это не наука, где без усилий неизведанное не станет открытым, и надо непременно страдать и рвать жопу.
312 1440760
>>40755
Сделать трассировку будет гораздо быстрее, чем дождаться ответа здесь. Или ты совсем обленился?
313 1440764
>>40755
Код скинь свой
314 1440766
>>40755

>и надо непременно страдать и рвать жопу.


Почти в любой деятельности нужно пройти через цикл порванная жопа - оргазм от успеха. Эти американские горки эмоций и делают программирование таким притягательным. А ты вместо этого прокачиваешь навык попрошайничества на бордах
315 1440767
>>40764
А смысл? Код-то твой.
От меня там лишь датафрейм с данными.
316 1440768
>>40760

>Или ты совсем обленился?


Отчасти.
Отчасти там столько проблем, что не знаешь что и ка решать.
Есть ту Ыксперты панды? Или нампая хотя бы?
317 1440769
>>40767
Во1) код не мой во2) ты мог неправильно датасет даже задать
318 1440772

>ты мог неправильно датасет даже задать


В jupyter показывается хотя бы
data = pd.read_csv("X://123123123.csv")
set = data['Колонка 1', Колонка 2', Колонка 3', Колонка 4']
Как-то так + ещё 0,5 обработки.
319 1440788
>>40772
Но ты же выше пишешь две колонки.
320 1440840
>>40788
Пишу, но лишние колонки можно убрать.
Govno.png37 Кб, 718x457
321 1440874
Почему оно переносит строку без символа переноса строки \n?
Как пофиксить? Так и должно быть? Неприемлимо бляд.
я новенький, лучше обоссыте
322 1440878
>>40874
И почему нельзя писать title(рандомная_переменная), а в функции str(рандомная_переменная) можно?
323 1440899
>>40874
Потому что у функции 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
324 1440900
>>40899

>Так print("dog", "cat", "frog") напечатает строку "dog cat frog"


Вывело ('dog', 'cat', 'frog')
325 1440902
>>40874
print() почти? всегда переносит строку. Ты бы хоть уточнил, что вообще хочешь получить в результате.
Если "Govno Govno Govno", то используй, к примеру, print((example2 + ' ') * 2 + example2).

мимонуб
326 1440903
>>40902
Я просто не хотел чтоб оно само переносилось, АТО в дальньейшем возникли бы некоторые проблемы
327 1440904
>>40899
>>40900
Так пажжи, я билдил вторым питоном, кек
328 1440905
>>40899
А можно как-то отключить автоматический перенос?
329 1440909
>>40905
Я же тебе написал, с помощью аргумента end
330 1440910
>>40909
В конфиге жеж
331 1440913
>>40910
А чем тебе end не подходит?
332 1440915
>>40910
А чем тебе end не подходит?
333 1440916
>>40913
Не ну а че он? У меня в книжке все примеры с применением \n, что как бы намекает
334 1440918
>>40916
На практмке почти всегда надо, чтобы принт печатал с новой строки. Это удобное поведение по умолчанию. Наверно, у тебя книга про второй питон. Раздобудь версию про третий питон, это настоящее и будущее питона.
335 1440919
>>40918
Эрик Мэттиз, год издания 2017.

>На практмке почти всегда надо, чтобы принт печатал с новой строки


Понял, принял
Наверное, Эрик просто старый пердун
336 1440934
>>40695

>Скоро аноны скажут "пиздуйте в math" и будут правы


он уже попиздовал, но там нихуя не сказали, нахуй он там нужен со своим програмином да ещё и на питоне
337 1440944
Сап, анончики. Как временно можно перестать испытывать отвращение к текущему месту работы? Все было заебись, пока я не начал все глубже погружаться в код и осозновать, какое же ебаное говно было написано моими коллегами, из-за чего простые задачи растягиваются на несколько дней, потому что приходится все переписывать и заставлять это работать... Тим лид вообще уебан, если честно, нихуя не делает, но вечно говорит, что занят, лицемерный пидарас короче.
338 1440950
>>40944
Ну ты хотя бы в пятерочке экспедитором не работаешь
339 1440955
>>40944
Ну тут два стула:
1. Отпуск
2. Смена работы и поиск проекта посвежее.
Если отработал более 6 месяцев - можешь спокойно менять работу, в резюме это выглядит ок.
340 1440974
>>40955
Да вот хочу сменить проект, но пока чет нет откликов на вакансии, летом чет мало как-то
Screenshot2019-07-23-17-07-50-712org.qpython.qpy3.png37 Кб, 1080x316
341 1441050
Поясните кто нить почему выдаёт два одинаковых списка?
342 1441054
>>41050
Потому что реверс перезаписывает все твои переменные - оно у тебя в самом конце.
Попробуй засунуть реверс в переменную
мимо нуб
343 1441055
>>41054

>Попробуй засунуть реверс в переменную


В отдельную переменную*
344 1441056
>>41055
Как это сделать,я ещё больший нуб. Впрочем это и так понятно по вопросу
345 1441059
>>41056
А в чем тогда смысл если я за тебя задачку решу?
Спойлер!
l3 = l2.reverse()
346 1441067
>>41059
Так я тоже делал, этом случае выдаёт пустой список. Наверное это особенность этого реверса, с ним не получается сделать два разных списка, если конечно изначально не создать два разных списка.
Задачу та я эту решил, хотел код короче сделать и нагуглил этот реверс
347 1441071
>>41067
print (l)
print (l.reverse())
А так оно ноне выводит.
Как задачку решил?
348 1441075
>>41050
Потому что у тебя l и l2 - два имени для реально одного объекта. Это не два разных списка, а один список.
Сделай, например
l[0] = 10000000
print(l2)

Это mutable типы. Аналогичная история со словарями, объектами и т.п.

Сделай копию списка. Как l.copy() или как
l2 = l[:]
349 1441076
>>41075
>>41050
и классичский реверс списка на питоне выглядит так:
l2 = l1[::-1]

Что это такое и как работает? Ботай про срезы ака слайсы
350 1441077
>>41075
i = ["1", "2", "3", "4", "5"]
i2 = i.reverse()
print (i, i2)

А почему во втором списке выдает ноне?
другой нуб
351 1441078
>>41077
Яж преобразовал его, не?
352 1441081
>>41067

>Так я тоже делал, этом случае выдаёт пустой список. Наверное это особенность этого реверса


Это немного особенность питона.
lst.reverse()
ничего не возвращает. Это метод, который применяется к самому списку.
lst = [*range(10)] # сделать список из 10 элементов от 0 до 9
print(lst) # [0, 1, .. , 9]
lst.reverse()
print(lst) # [9, 8, ..., 0]
353 1441082
>>41071
Если ты про 4 задачу эйлера:
for i in l:
spisok1.append(i)
spisok2.insert(0, i)
Таким образом создал два разных списка и сравнил их

>>41075
Спасибо, твой вариант тоже помог
354 1441083
355 1441084
>>41077
>>41078
i = ["1", "2", "3", "4", "5"]
print (i)
i.reverse()
print (i)
Вот так получилося, но как сделать чтоб из одного массива можно было достать джва разных результата?
356 1441085
>>41082
>>41083
отоноче
357 1441086
>>41084
Этот >>41076 анон написал как делать классик реверсы, я лично так и буду делать
358 1441088
>>41086

>[::-1]


Никрасива!
359 1441093
>>41088
Если есть другой простой способ сделать перевернутую копию списка, то я с радостью выслушаю
360 1441102
Есть задача: отправлять гет запросы с ардуинки и выводить их в веб. Под ардуинку наговнячил, осталось веб. Выбор пал на питон потому что его мало-мальски знаю. Нужен какой нибудь фреймворк который работает с реквестами и рендерит хтмл. Джанго и фласк я так понимаю слишком функциональные, и мне потребуется какое то время чтобы в них разобраться. Нет ничего попроще?
361 1441115
>>41102
Джанго тебе не нужен, а фласк подойдет
362 1441139
>>41102
Есть такой мини-фрэймворк bottle, его исходный кодтвообще помещается в один файл. Вроде, не сложный. Может, подойлет тебе
363 1441147
>>41102

Зависит от целей и требуемого функционала.

Если не нужна работа с базой, Джанго заведомо не нужен. Там на базу всё завязано, и вся суть фреймворка в этом.

Тебе нужно быстрее разобраться, либо легковесное что-нибудь? Многие легковесные фреймворки требуют понимания продвинутых технологий питона, вроде asyncio. Боюсь, тебе или надо обвязку всякий uwsgi осваивать, как это работает, либо asyncio и аналоги.

Может быть тебе проще будет сделать на node.js, что ты хочешь. Для несложных сетевых вещей самое то.
364 1441160
как сейчас фиксится поломка пипы, когда она не находит пакеты? В гугле советы, как всегда с этим языком, на уровне переустанови виндовс
Django 365 1441185
Сап, кто может подсказать уроки по Django, а то я нахожу только первую версию, а хотелось бы вторую
366 1441218
>>41185
Разница не столь велика. Для начала лучше изучи, 1.9 какой, а разницу со второй проще по докам нагнать.
Советую Antonio Mele(вроде так) с Яндекса брать и читать.
367 1441222
Аноны, какими средствами на pyqt5 лучше сделать pop-up (маленькое окно такое, типа оповещения, с текстом и изображением, которое должно вылазить у юзера в углу открытой программы)?
Обычное окно не подойдёт, я так понимаю.
368 1441225
>>41218
Окей, спасиб. Просто везде, где искал вакансии, хотят знание джанго(
369 1441228
>>41185
У джанго очень хорошие доки. Там и пример учебного приложения хороший, шаг за шагом, и отдельно первичный разбор функционала джанго, и детальная информация.

Всё есть. Если тебе хочется именно русскую документацию, то может там и старая версия. Но там совсем не такая большая разница. Из заметного работа с url, смотри лучше английский вариант.
370 1441230
>>41225
Вовсе не только, очень много вакансий без джанго. Но правда там торнадо какой-нибудь или asyncio, это более серьёзные вещи и более сложные.
371 1441235
>>41230
Именно поэтому хочется сначала освоить Джанго, чтобы позже перейти на asyncio
372 1441236
>>41228
Окей, тогда попробую и старые туториалы тоже охватить
373 1441243
>>41235
Вот это не поможет совсем, это просто перпендикулярные вещи.

Но джанго в любом случае очень полезная вещь.
374 1441244
>>41243
Не в качестве помощи, а именно в качестве полезной штуки, изучая которую, можно будет прокачаться
375 1441272
>>41185
На русском книга недавно вышла "Django 2 в примерах". Хуй знает можно ли скачать, я не нашел пару месяцев назад и купил. Там тебе и про асинхронность расскажут, и про редис, и про рестфул апи. Годнота короче. Советую не пожалеть 1200 рублей и купить.
376 1441303
А вот в этих ваших списках значению присваивается индекс?
377 1441342
378 1441349
Test
379 1441367
>>41272
Два чаю этому господину, книгу не покупал, так как в моих пердях ее точно нет, но вот скачать я ее скачал, подтверждаю книга огонь, сейчас пилю по ней магазин, в целом все разжежывают и рассказывают, думаю после любой сможет вкатится сильным таким джуном как минимум.
380 1441413
>>41342
Имел ввиду ключи, но похуй уже - не актуально
381 1441422
Ну привет змеетред. Подскажите что сейчас ожидается и что требуется на собеседовании от джуна питониста?

>>>>>>>>>>>Платиновый вопрос

382 1441456
>>41422
Смотря куда идёшь, я вкатывался через Django, смострячил магазин за пару вечеров и показал на собесе. Вообще требуют знания ООП, если там какой то скрапинг сайтов то естественно знать регулярные выражения, плюс аддоны типа beautiful soup и т.д.
383 1441476
>>41456
Пардон за тупой вопрос, но "сделать магазин"-речь и про django и про разработку frontenda?
384 1441481
Почему выдает разные результаты? Че за магия, блядь?
Задача создать и суммировать список чисел с помощью функции sum()
385 1441485
>>41481
Ты во втором примере принтуешь исходный список, а не сумму чисел в нём. Напишешь print(sum(numbers)) - всё будет нормально.
386 1441488
>>41485
Пиздец я дебил, это получается такие вот функции не конвертируют переменные если я без переменной их использую?
387 1441489
>>41488
Если ты не присваиваешь какой-либо переменной значение этой функции, то грубо говоря да.
388 1441490
>>41489
А вот если я возьму за привычку мне так проще для каждой подобной ситуации создавать переменную заместо того чтоб сразу выводить нужный результат, это будет говнокодом?
389 1441502
>>41490
Мои нубские соображения: если тебе нужно вывести результат без того, чтобы его в дальнейшем каким-либо образом использовать, то лучше лишние переменные не создавать.
390 1441508
>>41481
АХАХАХХАХАХАХАХАХАХАХАХАХАХАХАХАХХА
1464287450136631500.jpg33 Кб, 317x372
391 1441511
>>41508
Я тя выцеплю блядь, сука
392 1441513
>>41481
По правде говоря, твоя исходная задача может быть решена вообще в одну строчку:
print(sum([i for i in range(1, 10)]))
393 1441517
>>41513
Там продолжение задачки есть, так что не подходит.
394 1441524
>>41513
print(sum(range(1, 10)))
395 1441531
>>41513
>>41524
Кек. Сука, яж так нихуя не пойму. Ну выучу я этот ваш синтаксис хуинтаксис, функции хуюнкции, но понимания того как всё это работает не придет жеж. Или дроча питон можно таки добраться до самой сути камплюктера?
Не хочу быть таким, советуйте что почитать после того как я освою основы питончика!
396 1441535
>>41531
А что непонятного? Там же прямо так и написано, что делается. Вывести сумму чисел из диапазона от 1 до 10
397 1441538
>>41535
Пока правописание непонятно, например. Вот принт эт функция, например, в этой функции может быть аргументом функия в которой аргументом будет еще одна функция.
Так можно?
398 1441540
>>41531
Дрочи задачи на сайтах всяких, потом со временем поймешь, почитаешь объяснения, запомнишь примеры хорошего кода и будешь фибоначи с закрытыми глазами считать.
399 1441541
>>41538
Еще одна функция в которой будет цикл с кучей других функция которые я напишу сам!
400 1441546
Скорей бы игору какуюнит наговнячкать, чтоб все охуели как я могу
401 1441547
>>41524
У него всё же задача создать список и суммировать его элементы, так что не очень подходит.
402 1441549
>>41538

> Вот принт эт функция


да

> в этой функции может быть аргументом функия


Принт берет результат работы функции sum и делает свое дело.

> которой аргументом будет еще одна функция.


пока ты передаешь функции то, что она принимает проблем не будет, можешь городить хоть 100 функций подряд
403 1441551
>>41547
В 2.7 range создает список, так что ты проебался.
404 1441552
>>41551
Ну а он-то явно пользуется троечкой.
405 1441564
>>41513

>[i for i in range(1, 10)]


Вот эту конструкцию можно записать как
[*range(1, 10)]
и любую аналогичную с генератором
406 1441566
>>41456
Магазин был согласно пепу оформлен? На гите показывал все это? Можешь показать что показывал на собесе soc1314h.a0ANUSya6MOPUNCTUMru очень большой страх просить деньги за услуги в которых я плаваю... Но в которых мне хочется развиваться
407 1441567
>>41564

>с генератором


с итератором
408 1441570
>>41566
Мне кажется анон подпизживает.

Джанго не ЦМС, в комплекте только для бэка идёт. Рисовать фронт или придётся с нуля, или брать чужой макет. Макет ещё надо прикрутить к бэку, наладить взаимодействие. Короче тут не так просто.
409 1441571
>>41552
Да поебать мне какие он там кнопки наугад нажал и получил верный результат. Нахуя с такими вопросами вообще идти сюда ебаный в рот.
410 1441572
>>41566

>Магазин был согласно пепу оформлен?


А на оформление по ПЕП похуй, это вообще ни о чём. Система в первую очередь должна работать и спроектирована хорошо по use case, по моделям внутри и пр.

Это не так просто, если ты делаешь реальное приложение, а не примитивный набросок-демонстрацию.
411 1441578
>>41570
Мне кажется, анон говорил про бек только, или какую-то говеную морду, учитывая джунность позиции, о чем указано в моем посте, делать полностью работающий магазин, с прикрученными платёжками за вечер, он мог бы претендовать на что-то гораздо выше чем джуниор. Я думаю просто логика записывания в базу покупок, корзины и прочего.
412 1441580
>>41571
Ты чего такой неочень? Велосипеда нет?
413 1441591
>>41481
Кекнул с тебя. Просуммировал, а куда присвоил? А никуда.
414 1441592
Разница между Москвой и Мухосранью
415 1441597
>>41564
Спасибо, без иронии. Сам почему-то не допёр до этого.
416 1441599
>>41591
Но ведь в первом трае присвоил жеж!
417 1441635
>>41592
Только питон, базы и ооп? Тоесть даже фуллстек не нужен?
418 1441665
>>41635

>Только питон, базы и ооп? Тоесть даже фуллстек не нужен?


А зачем? Сеньёру отличается не размером списка, а опытом работы и глубиной понимания технологий.

Вот первое обязательное требование:
1) Опыт разработки системы, которая работает под высокой нагрузкой и с большими объёмами данных.

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

3) Работа с разными видами баз данных, оптимизация запросов, настройка самих баз. Это требует опыта и квалификации.

С п.2, многопоточностью, проще, но это не про джунов всё-таки.

В желательно тоже много чего серьёзного. Подразумевается обычно, что чего-то из этого есть.
419 1441667
>>41665
>>41635
Более того, старших вакансий на питоне без фронта очень много. Но все подразумевают серьёзные бэк-скиллы.
420 1441676
>>41665
Ну когда в пхп пытался вкатитьсяпонятно, программирование хтмл и верстка на ксс кокок еще, этим я лет в 15 увлекался, так там везде фуллстек только.
Правда, в пхп далеко я не продвинулся - ни одного фреймворка не выучил, ООП не освоил толком, зато задачки на процедурном коде у того самого ОПа вполне себе решал, кек, держу в курсе.

А чем вообще питон от пыхи в вебе отличается? За исключением того что в питоне одну задачку можно решить двумя строчками, в отличии от и анальным ограждением разметки кода пгобеламикокок угнетение гулаг швабодка
421 1441678
>>41676

>Правда, в пхп далеко я не продвинулся - ни одного фреймворка не выучил



>>41676

>А чем вообще питон от пыхи в вебе отличается?


В твоём случае всем. Если ты работал без фреймворков, то ты или создал свой фреймворк но это точно не так, или у тебя была типичная php-лапша, где скрипт получает запрос, сразу обращается к БД и генерит код в промежутках.

На питоне такой xCGI подход не работает. Там другой принцип построения сайтов. Тебе надо изучать и сам питон, и технологии построения сайтов через фреймворки. Это уже другой уровень.
422 1441680
>>41678

>типичная php-лапша, где скрипт получает запрос, сразу обращается к БД и генерит код в промежутках.


Это. Даже доставляо удовольствие, до тех пор пока не понял что я ограничен ссаным браузером.

>На питоне такой xCGI подход не работает. Там другой принцип построения сайтов. Тебе надо изучать и сам питон, и технологии построения сайтов через фреймворки. Это уже другой уровень.


Заебись, прямо мотивировал
423 1441681
>>41678
Ты очень сведущ, скажи пожалуйста, основной пласт работы для питониста это веб или что то другое?
424 1441683
>>41680
Работаю щас на лесопилке 2 через два в мухосрани, игры заебли в свое время, сериалов нормальных не завозят, жены нет, накатывать под ютьюб каждый вечер здоровье уже не позволяет.
Вот сижу, хунёй всякой страдаю тут, на должность в уютненьком коллективе зуммерков-разработчиков даже и не рассчитываю - дрочу просто для того чтоб все охуели как я могу.
Ага, сегодня первый день выходных, накатываю охоту крепкую и мрию о том что рано или позно освою основы погромирования и начну пилить пет проекты фор фан, такссать.
продолжаю держать в курсе
425 1441687
>>41681
Еще сисадминам пригождается, вроде. Не зря жеж в большинстве дистрибутивах линукса питон дефолтно изкаробки поставляется
426 1441688
>>41476
Да там даже не полноценный магазин, верстка минимальная, корзина, вывод товаров и т.д. Сделал чтобы просто было что показать на собесе.
427 1441690
>>41578
Именно так, накидал бэк магазина, из функционала каталог товаров, персональная страница товара и корзина все. Просто чтобы показать что я умею в в Джанго. Верстка минимальная была, JS не было вообще.
428 1441697
>>41570
А мне кажется ты долбаёб, я сделал просто бек простенького магазина, с примитивной вёрсткой, основная задача была показать, что я умею работать с Джанго, знаю структуру проекта, и т.д. этого были вполне достаточно чтобы вкатится.
429 1441698
>>41566
Не ссы никто не ждёт от джуна проект уровня Инстаграм или Авито. Достаточно показать что ты умеешь хоть что-то . Выше были посты про книгу Django 2 в примерах, там есть пример навороченного магазина в сто раз круче чем у меня, так что качай книгу и делай все по ней и в конце будешь готов к работе джуна если не больше.
430 1441700
>>41698
Тоесть задача говнякакть код максимально быстро, хоть на джумле - главное чтоб заказы фирме были?
Рыночек решает, однако
431 1441702
432 1441706
>>41702
Нарисуй примерно то, что хочешь видеть. Я так понял, здесь сидят ребятки которые не хотят обосраться по простому поводу, и похуй что доска анонимная.

Бамп
>>40878
433 1441714
>>40878
Потому что title() - это метод класса str, а str() - конструктор объекта соответствующего класса. str.title() не принимает никаких аргументов, кроме объекта своего класса (поэтому и в скобки записывать нечего), а применение метода в Python оформляется через точку, а не с помощью записи в скобки.

мимонуб
434 1441720
>>41714

>мимонуб


Отку да мне, настоящему нубу знать про объекты и классы?
435 1441723
>>41720
Что-то мне подсказывает, что различия и соотношения между терминами "функция", "метод", "класс", "объект класса", "конструктор класса" etc стоит прояснить для себя чуть ли не в первую очередь, если желаешь вкатиться в Питон.
436 1441728
>>41564
Мне list(range(1, 10)) кажется читаемее
437 1441730
>>41723
Был один тип что видеоуроки для пыхи преподавал, так он гордился тем что преподает основы языка сразу начиная с ООП, и похуй что в первом же уроке он говорил, мол пока не думайте что значит for в конкретном примере, просто делайте что я говорю - главное понять суть того что я вам сейчас скажу
Меня такой подход вообще не устраивает, например, особенно если я бомж в погромировании и вообще впервые пытаюсь вкатиться.
photo2019-03-1820-25-02.jpg79 Кб, 1280x897
438 1441732
Питонисты, помогите тугодуму. Вообще не могу в алгоритмы, все пыжусь и пыжусь над сортировками. Это какой то пиздос, как вообще этот Radix sort сделать ? Короче, есть годные книги по сортировкам на питоне ? знаю звучит хуйово
439 1441737
>>41481
Во втором случае сделай numbers = sum(numbers)
Тем самым переопределишь старую переменную массива на сумму его значений
440 1441739
>>41732

> Короче, есть годные книги по сортировкам на питоне



В этом твоя проблема

Ты изучаешь способы написания алгоритмов на N языке, а не сами алгоритмы

Возьми язык Shema, он прост как два пальца, за 1.5 часа освоишь. На нём реализовывай алгоритмы в отрыве от языка.
Глянь еще Грокаем Алгоритмы, там на пальцах и картинках поясняется. Годная книжка

в обще если тебе нужно понимание алгоритмов, а не просто реализации алгоритмов, то без матана никуда. Тебе в /math
441 1441757
>>41732
Алгоритмы сами по себе, питон сам по себе.

Тебе надо разобраться с алгоритмом, почему и как он работает. Это первая задача. А вторая задача в том, как грамотно реализовать алгоритм на нужном языке программирования. Два разных скилла, оба нужные для развития. Хотя в жизни ты будешь пользоваться библиотечными реализациями, конечно же.

Конкретно про radix, она же "числовая сортировка", попробуй на бумажке просто с конкретными примерами её осмыслить. Она простая в плане алгоритмов. Вот как грамотно реализовать? Это думать уже надо.
442 1441758
>>41757
Но ведь любой язык высокого уровня не подразумевает креатива в алгоритмах жеж, нет?
443 1441766
>>41531
Самое удобное и понятное - читать в процессе. Заходишь на chekio или codingame и начинаешь решать все подряд. Будешь сталкиваться с проблемой или слишком сложным исполнением задумки - ищи на Стаке и в документации.
Чтобы научиться программировать, надо программировать
444 1441767
>>41758
Подразумевает, и много. Не не в сортировках, которые просто вынесены в отдельные функции. Вот работу с деревьями ты уже так просто в отдельные функции не вынесешь. И много чего ещё не вынесешь.
445 1441773
>>41739
>>41757
Спасибо аноны, сами эти сортировки я уже давно на бумажке расписал по нескольку раз, но проблемы с реализацией. Бывало загуглю реализацию и ахуеваю от того, как люди додумали написать для сортировки код, причем так кратко и лаконично.

Причем мне очень трудно даётся написание алгоритма с рекурсией, прям хоть ты убей, ни как не получается.

Ну а с МатАном у меня вроде норм. Диффуры там, интегралы. Об этом речь идёт ?
446 1441793
>>41700
Многое зависит от компании, где то да похуй как ты это делаешь, главное чтобы сделал, меня например просят вёрстку на работе подправить или кнопочку там добавить или убрать и похуй что я бекенд, главное есть возможность получать опыт. Я сейчас уже работаю третью неделю за все время на питоне написал строчек 5-6, основная работа это писать запросы в БД и из БД в soap сервисы других компаний (платежные системы) да первые дни хотелось все бросить и съебать, даже было предложение о знакомого на другое место где больше по деньгам но туманные перспективы, в итоге пересилил себя и остался, вроде втягиваюсь потихоньку, скоро обещал дать допилить пару модулей уже на питоне. В целом жить можно, основная цель стать мидлом и съебать на большую ЗП и лучшие условия
447 1441816
>>41700
Далеко не всегда.
Если фирма крупная, то с кодом можешь работать не ты один и важна читаемость и тд.
448 1441884
Поясните, пожалуйста.
class Demo(Frame):
def __init__(self, parent=None, options):
Frame.__init__(self, parent,
options)
Что такое "options" и логика parent и вообще вот эти две строчки.
Зачем нужна 3-ья строчка? Сорян за тупость.
449 1441894
>>41884
Ты делаешь класс Demo, который наследуется от Frame

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

Для этого ты и вызываешь явно конструктор класса-родителя.

options, с двумя звёздами - это такой способ для получения словаря со всеми элементами "ключ-значение". Аналогично, когда ты передаёшь словарь с двумя звёздыми в функцию, происходит его раскрытие.
Если она звезда, то это уже список позиционных аргументов.
451 1441919
>>41894
>>41896
Про звезды всё понял.
Не совсем понял про переопределение конструктора.
Это пример из Лутца.
Есть фрэйм. Он делает подкласс Демо с кнопками. Нахуя он переопределяет конструтктор фрейма, чем он его не устраивает в этом конкретном примере?
И не понимаю, зачем вызывать конструктор родителя явно? И это касается любых методов?
452 1441977
>>41599
На первом пике - да. И ответ тебе - 45. На втором ты суммируешь и все, список остается списком, его ты на печать и выводишь.
453 1441978
>>41728
А мне функциональщина нравится в хаскеле, а не питоне. Но ведь это не важно.
454 1441979
>>41919
Если ты чётко знаешь, что конструктор родителя тебе не нужен, то не надо его вызывать. Но в реальности часто конструктор делает какую-то полезную работу, проводит инициализацию внутренних переменных, может подгружает что, и т.п. Ты ведь наследуешь ради того, чтобы получить какой-то функционал родительского класса. А без вызова конструктора этого функционала может не быть.
455 1442000
А тут ест аноны, которые работают над серьёзными вещами типа дата сайнс или машиным обучением, а не магазины делают?
456 1442009
>>42000
Может и есть, только чем тебе магазины не угодили, лучше пилить какой нибудь магазин, чем сидеть без работы или работать дворником
457 1442038
Ньюфаг докатился до этих ваших фреймворков для веба.

В вакансиях онли Джанго. А когда и для чего используется Фласк? Ну и что лучше учить для каких целей? Вообще немного не понимаю, что для чего и зачем.

Объясни пожалуйста, анон.
458 1442056
>>42009
Я про заработок не спрашивал, но если на то пошло, то я лучше на завод пойду, или мебель собирать, чем буду магазины дрочить. для меня парень который собирает магазины это профессия уровня переустановщика винды, но никак программиста
459 1442074
>>41793
Хорош, если не читер.
460 1442075
>>41977
Да я после превого же ответа понял как сильно я обсрался стыдно!, спасибо
461 1442076
>>42056

>или мебель собирать


Не советую.
462 1442105
На питоне можно делать денежку по найму из дома, вроде как фласк какой был? сейчас смотрю питон 3.0, 16 часов курс на инглише, что бы написать специальную прогу для стиралки, что бы её на гвс подключить и она отбирала гвс только когда нужна гвс.

мимо заебал завод, спина болит, фильтры воздуха проебали и теперь меня ещё там и травят
463 1442109
>>41979
Спасибо, Анон.
464 1442113
>>42105
Чувак, я сам работяга с лесопилки, и считаю что кодинг должен доставлять в первую очередь, а заработок с этого он рано или поздно придет. По сему, просто дрочи ЯП как хобби заместо игор/сериалов в свободное время и смотри как оно тебе заходит - АТО можешь вложить во вкат огромные ресурсы и обосраться на пол пути.
465 1442174
>>42113
Лишь 5 процентов людей имеют страсть с которой можно навариться, у больнишства же страсть это привычные игры, секс, путешествия и т.п.
466 1442226
>>42174
Ну бля, здесь все уприается в процесс обучения - главное максимально легко и интересно его преодолеть, после чего писать говнокод и наслаждаться результатом.
Именно наслаждаться, томущо когда напишешь кнопки регистрации и авторизации которые будут работать, пусть даже на адском говнокоде - ты получишь такое моральное удовлетворение, такое, что ни одна катка в доте тебе не даст.
467 1442389
Есть один кусочек кода: https://pastebin.com/UE7DC4sm
Что-то типа анимации загрузки для моего скрипта.
На каждой итерации звёздочка "*" проходит по ячейкам в виде квадратных скобок "[]", в конце цикла возвращается на исходную позицию и начинается двигаться по-новому кругу.
Проще запустить и посмотреть как оно работает, чем объяснять на словах.
Так вот, как сделать так, чтобы в конце цикла звёздочка не возвращалась на исходную позицию, а шла в обратном направлении?
469 1442408
>>42389
Вот ещё такой вариант. Он чуть более большой, тут просто другая идея архитектурная
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
470 1442410
>>42389
Конструкцию
index=[x for x in range(len(s)) if x%2] # 1,3,5...19
можно записать как
index = list(range(1, len(s), 2))
471 1442423
>>42393
>>42408
>>42410
Благодарю, анон.
472 1442434
В Питоне же можно управлять памятью если необходимо,да?
473 1442454
>>42423
>>42389
Если ты этот список дальше сам по себе не нужен, лучше его и не создавать, сразу писать for i in range(1, len(s), 2): <что-то делаем с i>
474 1442458
>>42434
Что тебе конкретно нужно?
475 1442500
Аноны, как можно более удобнее рыться по словарям?

К примеру есть такой словарь:
https://pastebin.com/VU4CwsfB

Как можно достать значение 1, не используя этот дебильный метод?:

json.get("fun").get("j").get("f").get("1")
476 1442505
>>42500
Можно так записать:
try:
json['fun']['j']['f'][1']
except:
...

Что более читаемо. Штатных инструментов вроде нет, но можно слепить что-нибудь колхозное в стиле xpath, чтобы была функция вроде
xget(json, 'fun/j/f/1', default = 555)
это иногда довольно удобно. Реализация строчек 10 максимум.
477 1442521
>>42505
Спасибо!
478 1442524
>>42458
Я только начал его изучать и решил задать вопрос,раз уж в книжке пишется что не надо заботиться об памяти используемой программой
479 1442527
>>42524
Надо будет но не сейчас, пока не забивай голову такими вещами, изучай основы и дальше по своему усмотрению Django/Flask/Data science и т.д . Оптимизацией приложения обычно занимаются дяди сеньоры помидоры, вот они и думают о памяти, скорости и т.д.
480 1442531
>>42527
Ок,спасибо,Ананас!
481 1442533
>>42527
ты не указывай, что мне делать, хуйло. я сам без тебя разберусь, лучше на первый вопрос ответь
482 1442534
>>42533 ->Очевидно,тролль-долбоеб

Я->>>1442531
483 1442536
>>42500
Можешь специальный класс создать, чтобы было удобно серелиозтвать/десерилизоать его в json, и было удобно работать в своем коде. Есть библиотеки для этого, например, marshmallow
https://marshmallow.readthedocs.io/en/3.0/
484 1442540
>>42534
Чувак, я не долбоеб, спасибо за разъяснения
485 1442546
>>42533
О памяти заботиться не надо, нет в питоне с этим проблем. Там есть сборка мусора, точнее контроль через подсчёт числа ссылок.

Про профилирование много в официальных доках
https://docs.python.org/3/library/debug.html
есть модуль tracemalloc, по идее для таких задач, но лично я его никогда не использовал. Актуально более-менее думать о производительности, соответствующие инструменты полезно представлять. В память почти без шансов упереться, а в производительность легко.

Я бы тоже советовал на другие вещи посмотреть, разобраться с базой языка, со всякими генераторами, метаклассами, с мультипоточностью и мультипроцессностью, с асинхронностью и всякого разного ещё. Это вот полезно и сложно.
486 1442552
>>42540
Ебать ты тут 4д шахматы пытаешься играть,троллецкий
487 1442565
>>42552
Да какие тут шахматы, просто было бы интересно послушать про оптимизацию приложения

>>42546
Спасибо за ответ, но я думал ты что-нибудь конкретное расскажешь. Например инстагрум (а он написан на джанге, ну или как минимум его часть) вообще отключили сборщик мусора и получили прирост в производительности. Пишут ли вообще C-экстеншины в продакшене? Как обстаят дела с Cython, PyPy, Numba? Есть ли среди этих инструментов что-то готовое к использованию или действительно легче написать c-extension или вообще вынести в отдельный сервис на каком-нибудь более производительном языке (Go, например).
Какой план у разработчиков питона, планируют ли они улучшать производительность языка, ведь уже всем понятно, что это главный недостаток языка. Вроде слышал, что в версии 3.8 внесли изменение в multiprocessing, и теперь по идее, процессы должны стать более легковесными.
И как обстаят дела с асинхронностью в Python, про asyncio знаю, но слишком мало стандартных либ, поддерживающих асинхронность. Да и что использовать в продакшене: aiohttp, sanic или что-то вообще другое? Слышал, что джанга 3 пилиться с заделом под асинхронность.

P.S. извини, что назвал хуйлом
488 1442566
>>42565
* обстоят

>>42546
Ну и по поводу твоего поста: разве метаклассы вообще применяются в продакшене, это же довольно сильно бьет по читаемости кода? На мой взгляд эти штуки могут быть полезны только при разработке собственной либы/фреймворка. Вообще, заметил такой интересный факт, что в 90% случаев, там где люди используют метаклассы, можно было бы обойтись обычным декоратором для класса
489 1442572
>>42546
Вообще задам более абстрактный вопрос: Какова в принципе область примения Python в вебе? Есть ли ему место в хайлоаде?

Есть тут такие разработчики, которые использует Python в высоконагруженных приложениях, и при этом не пожалели об этом после нескольких лет эксплуатации? Было бы очень интересно послушать ваши стори.

Ну помимо этого, хочу поднять такую тему как архитектура веб-приложений в Python. Даже в таком популярном фреймворке, как Django до сих пор не сложилось строгой архитектуры проекта. Понятно, конечно, что есть апликайшины и базовая структура, но это всё равно не то. Фрейморку уже 10 лет и по сути до сих пор нет конвенционального мнения где хранить бизнес-логику (бля, некоторые вообще во вьюхах до сих пор всё хуячат). Опытные разработчики, какой подход используете вы при организации структуры проекта? Можно не только про джангу, но и про другие веб-фреймворки/либы. Буду рад если накидаете годных источников по этой теме.
490 1442584
Кстати, какой пакетный менеджер всё-таки выбрать pipenv или poetry? Какие у каждого достинства и недостатки?
491 1442662
>>42572
Ты спрашиваешь слишком специализированные вопросы.

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

>>42572

>не пожалели об этом после нескольких лет эксплуатации


Правда жизни в том, что до хайлоада проект надо довести и не сдохнуть на полпути. Фейсбук писали на PHP, потом придумывали техники, чтобы его радикально ускорить, компилятор PHP сделали и ещё что-то. Если бы сразу писали на C++, может такой проблемы не было бы. Но скорее всего потому, что они просто не написали бы логику за разумное время и с разумными ресурсами, и вместо фейса взлетел бы другой проект. На таком же PHP или чём-нибудь подобном.

На питоне хорошо логику реализовывать. Сейчас платформа активно развивается, перспективы есть. С тредами печаль, но нынче главный упор на асинхронность, её недавно поддержали, но прилично.
492 1442666
>>42565

>Слышал, что джанга 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, там реально очень крутая система моделей, прямо энтерпрайз. В Джанго на моделях надо логику делать, а не на вьюхах. Надо как-то извращённо скрещивать. Может быть проще просто систему моделей из Джанго подключить к асинхронным фреймворкам, пусть они там в каких-нибудь процессах отдельных крутятся. Не пробовал пока, но может скоро придётся.
493 1442677
>>42105
cкинь курс
494 1442692
>>42584

>pipenv


Если любишь чай попить и пасьянс-другой разложить

>Poetry


Нинужно
495 1442718
>>42536
Спасибо, буду разбираться
496 1442796
Суп питонач. Вкатываюсь в Django Channels и Celery. Сколько времени понадобится на освоение этих вещей?

Влез в Channels, и блядь статьи даже на русском хуй понятны. Новая терминология. Я до этого ни с асинхронщиной, ни с сокетами не работал. Ну хуй с ним накатил на проект, сделал уведомления через сокеты, но то что я использовал это 2% от всех возможностей Channels'ов.

Полез дальше в Celery, пока только накатил на проект ещё не разбирался, но ебать их страничка настроек в доках занимает наверное листов 20 А4 формата.

В общем посоветуйте статей\книжек на русском и английском языках чтобы прям по пальцам и терминология и основные концепции. Буду премного благодарен.
497 1442840
Анон, кто на платной основе может питоном позаниматься со мной по скайпу?
498 1442841
Ананасы, как пропарсить всю страницу, если для полного отображения нужны подзагрузки???
499 1442848
Анон, подскажи, пожалуйста. Сам не программирую, но сейчас по фану изучаю курс Automate the boring stuff. Хочу сделать вот что:
1) на входе у меня есть csv табличка
2) с табличкой нужно провести кое-какие манипуляции, поменять местами столбцы
3) измененную таблицу нужно залить в гугл документы, которые располагаются в корпоративном пространстве и провести там еще манипуляции - удалить повторы, вот все такое
4) измененную таблицу нужно скачать обратно на комп в cvs

Вопрос - насколько сложно реализовать заливку данных в гугл доки? Оно же там требует авторизации, вот этого вот всего. С самим парсингом и изменениями файла у меня проблем нет - в курсе это все расписано, а вот как получить доступ к гуглодокам = тут, боюсь, не знаю.
500 1442856
>>42848
Я тоже для себя подобную муть делаю. Гугли апи гугла.
501 1442862
Я согрел от своей тупости. Аноны, объясните как это работает ?
Первый скрин - функция.
Второй, то что она возвращает.
Принимает она матрицу.
502 1442871
>>42862
Смотри, у тебя есть список списков вида
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 текстовые строки, это уже совсем просто.
504 1442918
>>42871

>[genTextLine(l) for l in arr]


Как раз то что и надо было. Что то постоянно сбивало и не мог понять, что '\t'.join(map(str, l)) просто функция в генераторе. Спасибо!
505 1443092
Реально ли нубу скомпилировать киви в апк, имея в арсенале только винду?
Уже всерьёз задумаваюсь уйти в жабу
506 1443125
>>42666
Логика в моделях - тоже не лучший вариант
Screenshot 2019-07-27 at 16.45.16.png36 Кб, 1362x98
508 1443406
При запуске jupyter notebook есть эта ошибка.
Все работает. Но меня смущает эта ошибка. Нагуглить что-то внятное не могу.
Кто знает, что это такое?
image.png57 Кб, 962x495
509 1443440
Посоны, а как понимать алгоритмы?
Сижу над задачей час, посмотрел решение, оно там в одну строчку.
Как? Можно ли как то повысить уровень знания построения алгоритмов?
510 1444637
g
511 1445753
>>43440
это какой курс?
512 1445919
>>45753
как я понял, вкатывание в олимпиадное программирование
513 1445970
>>45753
http://pythoshka.ru/p82.html

>>45919
Всё настолько плохо с олимпиадным программированием, что подобное можно назвать вкатыванием?
514 1446375
>>43440
По поводу данной задачи. Давай пройдем длину шнурка от левого конца к правому. Сначала у нас идет свободный конце длиной l, потом поворот направо длиной а, спуск вниз длиной b. Последние два действия должны повториться три раза (осталось еще два), после чего мы делаем один поворот влево длиной a и начинаем подъем, который аналогичен нашим повторяемым действиям, а значит и выполниться должен тоже 3 раза, после чего мы окажемся с правой стороны и останется лишь пройти свободный конец l.
Теперь запишем эти расстояния уравнением: l + (a + b) \ 3 + a + (a + b) \ 3. Приведя подобные получим: 2 \ l + 6 \ (a + b) + a.
имо такая запись проще, чем на том сайте. Насчет понимания алгоритмов не могу ничего посоветовать, кроме прочтения книг по алгоритмам, в факе доски есть рекомендации. К слову -- я ни одну не читал
515 1446376
>>46375
\ это умножение если что. Думал звездочка эскепнется.
Тред утонул или удален.
Это копия, сохраненная 20 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски