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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Python /python/ 1443245 В конец треда | Веб
Продолжаем обсуждать самый лучший язык программирования

ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat - с этого начинать, перед тем как задавать вопросы Анон, ты конечно сразу станешь спрашивать, но для приличия хоть открой ссылку какую-нибудь

Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Ещё книжек? https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек Богу книжек! https://yadi.sk/d/H-00n-UG3RSQem

Предыдущий: >>1430914 (OP)
2 1443273
Первыйнах
3 1443285
>>43245 (OP)
говноязык.

Особенно в сравнении со swift OR elixir.
4 1443295
Работал кто с django_channels? Помогите нюфагу, я уже замучался.
Короче, есть такой URLRouter

URLRouter([
path('device/<device_name>',IndicatorConsumer),
path('add',IndicatorConsumer),
path('', IndicatorConsumer)
])

И такая функция в консьюмерах:

async def websocket_connect(self,event):
print('connection succefull ', event)
await self.send({
'type': 'websocket.accept'
})
self.device_id = self.get_device_id(self.scope['url_route']['kwargs']['device_name'])

Суть в том, что scope['url_route']['kwargs']['device_name']) должна получать имя девайса, только на страницах device/device_name. Но эта хуйня ищет device_name на любой из страниц, которая есть в URLRouter, и если не находит, то закрывает сокет. А она не находит.
В документации вроде четко написано что делается так, но у меня не выходит
5 1443318
Репост из предыдущего

Суп питонач. Вкатываюсь в Django Channels и Celery. Сколько времени понадобится на освоение этих вещей?

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

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

В общем посоветуйте статей\книжек на русском и английском языках чтобы прям по пальцам и терминология и основные концепции. Буду премного благодарен.
6 1443392
Что лучше для построение нейросети для распознания текста, цифр в частности?

scikit learn
tensorflow
keras?
7 1443394
>>43245 (OP)
Помогите разобраться. Только начал изучать python 2.7, изучаю классы и хочу сделать связный список. На первом пике образец с сайта, на втором то что у меня. В чём проблема?
8 1443398
>>43392
Тензерфлоу и прочие керасы - это уже прошлый век. Сейчас в основном используют градиентный бустинг или опорные вектора для распознавания изображений.
9 1443400
>>43394
1. Учи пистон 3
2, Покажи/дай полную ссылку на пример.

>>43392
Скит-лерн это больше для обучения и вката, серьёзную нейронку не построишь на ней(на сколько я знаю).
Остальные два пункта подходят для твоих целей.

>>43318
По каналам ничего не подскажу. Так их и не начал учить, хах.
По Celery обычно хватает доков. Я начинал с простого запуска тасок и мониторинга их. И только после этого привязку к джанге делал. И тебе советую, абстрагироваться от джанги и тыкать просто в Celery.
image.png25 Кб, 324x365
11 1443403
>>43402
А где ты там list(node1) увидел?
Если делать как по примеру - всё ок.
Screenshot 2019-07-27 at 16.45.16.png36 Кб, 1362x98
12 1443407
При запуске jupyter notebook есть эта ошибка.
Все работает. Но меня смущает эта ошибка. Нагуглить что-то внятное не могу.
Кто знает, что это такое?
13 1443412
>>43394
Я начал учить питон году в 2009-10, сразу с третьего. Потом правда пришлось перекатываться на второй, такой на работе был, но там питон не основной был, и вообще очень долго сообщество перекатывалось.

Это было 10 лет назад. Но в 2019 писать на втором питоне? Ну как бы очень плохая идея. Учи третий и забудь второй как страшный сон. В третьем масса технологий, которые принципиально отсутствуют. Перекат на 3 питон уже окончательно произошёл.

1) не используй next для имён самостоятельных переменных. Это зарезервированное слово, встроенная функция питона.

2) не очень понятно, что ты пытаешься сделать. Когда ты пишешь list(node1), ты пытаешься создать список, но для этого объект должен быть итерируемым. Ты можешь реализовать свой итератор, но несколько сложнее, надо реализовывать методы __iter__, __next__. Отложи это пока.

В примере слева не делают итератор с точки зрения питона, там демонстрация именно связанного списка как алгоритмической структуры. Ты должен передать свой node1 в эту функцию print_list, и по идее, она напечатает то, что ты хочешь.
14 1443413
>>43412

>которые принципиально отсутствуют


которые принципиально отсутствуют во втором
15 1443414
>>43318
Про Channels не скажу, не осваивал, по описанию в документации и по тому, как комментируют, не нравятся. Нет ощущения полноценной интеграции с джанго.

>>43318

>Я до этого ни с асинхронщиной, ни с сокетами не работал.


Вот лучше с этими технологиями разобраться независимо, понять, как это работает. Они просты и очевидны, когда их нормально поймёшь, но сложны, пока начинаешь. Асинхронность заметно сложнее, особенно если раньше с подобными технологиями не работал. Но реально лучше с простейших консольных программ начать.
16 1443416
>>43295
Ничего не понимаю в channels, но поведение примерно ожидаемое. У тебя ведь один общий обработчик для трёх видов путей. Если в пути не было device_name, то и в обработчике его не будет, может где-нибудь возникнуть ошибка обработки и исключение из-за обращения к неопределённому элементу словаря и т.п.

Может я не прав, так как не изучал channels и не понимаю, как они работают.
image.png57 Кб, 962x495
17 1443442
Посоны, а как понимать алгоритмы?
Сижу над задачей час, посмотрел решение, оно там в одну строчку.
Как? Можно ли как то повысить уровень знания построения алгоритмов?
18 1443447
>>43403
>>43412
Установил 3 питон, написал всё верно ошибки не выдаёт, но выводит не числа. Опять же не пойму почему.
image.png38 Кб, 583x610
19 1443448
>>43447
отклеилось
20 1443452
>>43448
У тебя функция печатает сам объект, это некоторая структура. Ты должен печатать не print(node), a print(node.login)
thinking-face1f914.png12 Кб, 160x160
21 1443453
Работаю уже на второй работе по Питону, рассматриваю вариант перехода на третью. Решил в фоновом режиме подтянуть всякие скилы, в том числе теорию. Открываю статью про SOLID, вроде все любопытно, но тут же осознаю, что, например, сериализаторы в Django Rest Framework это нефига не S. И как с этим жить? Решил почитать про ПАТТЕРНЫ, и тоже как-то все не заходит...

Сложилось ощущение, что это все не про программирование вообще, а про программировании на джаве какой-то. Думаю теперь, надо ли мне для профессионального роста в это погружаться или лучше про кубернетисы почитать.
22 1443455
>>43452
Точно. Спасибо большое
23 1443456
>>43453

> про кубернетисы почитать


This
Vge1UW1FFZE.jpg45 Кб, 540x960
24 1443499
>>43448

>светлая версия pycharm'a

25 1443506
Есть смысл заморачиваться с платной версие пайчарма для зеленого работяги в самом начале пути? Или бесплатная версия более чем достаточна?
26 1443513
>>43506
Более чем достаточно. Я б даже посоветовал Atom или VSCode, они легче и лучше подходят для простых вещей
27 1443522
Ануня, в файле запускаю скрипт, он исполняет код находящийся в другом файле. Как мне поймать ошибки возникающие в функции вызываемой из второго файла?
28 1443536
>>43442
Здесь и алгоритма как такового серьёзного нет - просто выводится зависимость искомой длины шнурка от a, b, l и N согласно условию задачи.
29 1443545
>>43506
Зеленому и бесплатная оверхед
30 1443551
>>43506
Нахуя тебе пичарм, если ты вкатывальщик зеленый? Просто нахуя, vscode подойдет, да даже блокнот обычный да даже вим, но для тебя ето геморрой будет.
31 1443561
>>43245 (OP)
Аноны, такая проблема, может кто сталкивался: поставил линукс, пайчарм, сначала вроде норм работало, но после перезапуска открываю её, открывается автоматом проект, делает update skeletons /usr/bin/python3. 7 или как-то так, и где-то на пятой части этого апдейта система зависает намертво.
Причём это точно не память кончается, я отслеживаю её.
32 1443591
>>43561
Я понял, что как только что-то взаимодействует напрямую с системным интерпретатором то всё сразу же ложится нахуй. С интерпретатором venv всё работает хорошо(вроде). Как это пофиксить? На винде делал всё через системный
Безымянный.png8 Кб, 880x600
33 1443644
Есть картинки (черный квадрат) на которой могут быть разные объекты с произвольным смещением.

Задача кропать изображение по границе объекта.

Объект не явный, классифицировать сложно, но размер его +- один и тот же поэтому по сути нужна только левая верхняя точка. Какие есть способы его определить?
34 1443658
Как вкатиться в питон? Что посоветуете для новичка?
35 1443661
>>43658
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
36 1443665
>>43661

> Tornado или Gevent



Это блять какого года паста? 2009?
37 1443669
>>43665
2011 или старше
38 1443671
Таки смог скомпилить питон+киви в апк. Ггвп. Теперь точно в жабу не уйду. Удачи всем кто старвается
39 1443822
Доброго дня, аноны.
На связи инженер-программист с опытом в ~5 лет.
Был и есть макакой на JS, PHP, NodeJS. Хочу стать настоящим макакой на python.
Как считаете, сложно будет перейти? Может кто-то испытывал такой опыт? Концепции-то похожи будут? В какую сторону копать и что изучать лучше?
40 1443844
>>43245 (OP)
Ищу кого-нибудь для общения вокруг программирования и матана, обмена ссылками и книгами, а так же для парного программирования.
Мои языки C, Python. Считаю что программист из меня так себе.
Сферы интересов: Теория игр, теория принятия решений, Управление и оптимизация, многокритериальное принятие решений, Марковские модели, конечные автоматы, теория графов, теория вероятностей, статистические методы, имитационное моделирование, ии и коллективное поведение и проч.
koWYTrbelanANUSmailU%LPUNCTUMr1B6u
41 1443950
>>43245 (OP)
Аноны, подскажите раку. Вроде как смог создать связный список из объектов класса с одним аргументом, но как сделать 2 и более аргументов? На первых двух пиках для одного аргумента. На третьем попытка сделать для двух.
42 1443958
>>43658
Почитай ОП пост, а вообще я б советовал пройти базовый курс на Курсере или Питонтьюторе и дальше решать задачки
43 1443965
>>43950
У тебя ошибки в 16 и 19 строках.
Что там запятая значит? Ты явно хотел что-то другое, но для питона запятая это способ записи типа данных tuple.

Вообще, вывод лучше иначе форматировать, специальными средствами.
Или как
out = "[%s, %s " % (current.login, current.password)
или
out = "[{}{} ".format(current.login, current.password),
или
f"[{current.login}, {current.password}"
последний только для питона 3.6 и новее.
изображение.png8 Кб, 975x111
44 1443966
>>43950
Можешь передавать словарь из аргументов в конструктор списка, или через args. В операторе __str__, можно сделать вывод через генератор. хз не стал доделывать
45 1443975
>>43965
Не, формат не подойдет, а если он захочет добавить поле для вывода ? Придется менять формат.
image.png35 Кб, 602x548
46 1443978
>>43965
Точно. Дело в запятой было, спасибо
47 1443980
>>43966
Хорошо, попробую и так сделать. Спасибо
48 1443984
>>43950
Я бы вообще строки 14-19 переписал иначе. Тут дублирование сплошное, можно всё тоже самое проще записать

out = []
current = self.first
while current != None:
out.append("{}{}".format(current.login, current.password))
current = current.next
return "[{}]".format(" ".join(out))
ПОМОГИТЕ МНЕ 10 ЛЕТ! ВАСЯ 49 1444021
z = "zerg"
p = 'Protos'
t = 'Terrain'
x = True
while x:
selected_character = input()
if selected_character == p:
print('prosdoasodosaod')
x = False
elif selected_character == z:
print('asdasdasdasd')
x = False
elif selected_character == t:
print('sadsdasdasd')
x = False
else:
print('trya gagimn')
print(selected_character)
Я УЧУ ПИТОН УЖЕ 2 ЧАСА! ДА Я ДУРАЧОК!. ВООТ ВОПРОСИК!
Я ХОЧУ ЧТОБЫ ЕСЛИ ОТВЕТ НЕ БУДЕТ ТАКОЙ КАК В ЭТИХ ПЕРЕМЕНЫХ МЕНЯ ЦИКЛ ВОЗРАЩАЛ К ИНПУТУ! КАК В ИГРЕ УГАДАЙ ЧИСЛО !
ВАСЯ 50 1444026
>>44021
https://repl.it/repls/RuralPoshLava
ВОТ ФОРМАТИРОВАНЫЙ КОД ЧТОБЫ ВАМ ЛОХАМ БЫЛО УДОБНО ЧИТАТЬ!
СПАСИБО ЗАРАНИЕ !! ВЫ НЕ ЛОХИ Я ЛОХ!
51 1444036
При поиске картинки в картинке лучше использовать на столько маленькое изображение на сколько это возможно или чем больше деталей в темплейте тем лучше?

Как влияет на скорость рост размера?
52 1444076
А что там из нового для освоения питона? если для джанго это джанго 2 с примерами. То для вката кроме давйпитона нет ничего?
53 1444081
>>44076
Есть база, общая для всех. Есть конкретные направления, они часто про технологии в целом, чем про питон. Уже зависит от того, что конкретно тебе надо.
fotonoexif.jpg12 Кб, 828x77
54 1444082
Аноны, привет. Читаю python crash course eric matthes (2019) и немного проблемы с переводом/пониманием. Правильно ли понял и выполнил ли я задание? Подсобите, плиз.

multipleList = [value*3 for value in range(3,31,3)]
print(multipleList)
55 1444087
>>44081
Да мне бы прочитать примитивным языком про разные модулю и про правильность организации программы. Вообще конечно все в доках можно прочиттать
56 1444102
http://ideone.com/vbgT4j
base.html

url второй скрин

Помогите... уже менял абсолютный url в href, все равно вместо url на основе slug - выбивает эту ошибку

код из учебника
57 1444106
>>44082
Вроде нужны кратные трём в промежутке от 3 до 30. Убери множитель у value.
58 1444110
>>44076

Есть ещё книга Fuent Python (наши дубляторы-надмозги перевели как "Python. К вершинам мастерства"), она покрывает язык практически полностью, но для начинающего не подойдет. Единственное, насколько я помню, там используется старый синтаксис для корутин, поэтому глава про асинхронность немного устарела. По этой теме можешь посмотреть https://www.youtube.com/playlist?list=PLlWXhlUMyooawilqK4lPXRvxtbYiw34S8 и доклады David Beazly.
59 1444112
>>44110
Пасибо =). Вообще пошел бы лучше на курсы какие нить чтобы на вопросы с которыми сталкиваюсь мог бы ответить кто-то... но это все херня нет доверия курсам
60 1444117
>>44112
Для этого есть Stack Overflow
61 1444127
>>44117
я не могу столько ждать ответа и писать на английском =(
62 1444129
>>44127
Все эти вопросы были заданы до тебя 10 лет назад)
63 1444130
>>44112

Вообще да, обратная связь - самая важная вещь в обучении, поэтому самоучкам очень сложно добиться хорошого результата. Ну а большниство очных курсов - наебалово, как ты правильно заметил, ну либо они стоят слишком дорого для вкатывальщика. Чтобы компенсировать этот недостаток, можно гуглить любую фигню которая тебе кажется странной (желательно на английском), даже если у тебя всё работает, то посмотри, как это сделано у других, можно просто искать в гитхабе по ключевым словам и смотреть исходники.
64 1444168
>>44102
Помогите

Django
65 1444179
>>44168
Там всё написано в сообщение об ошибке.
У тебя шаблон url требует поле slug, которое не пустое. А ты, судя по ошибке, пытаешься построить этот url с пустым параметром, который обязательный.
66 1444185
Сколько времени займет вкат в питон и джанго? Сам фронтендер, опыт работы год, пишу на ангуляре, умею делать бекенды на node+express.
67 1444188
>>44185
Всё зависит исключительно от тебя. Кто так вопросы задаёт? Несколько месяцев надо.

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

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

Короче, начни просто с питона. Если зайдёт, то и остальное освоишь. А пока питон не освоишь, во фреймворки лучше не лезть.
68 1444191
>>44188
Асинхронность к нему разве нельзя прикрутить? Куда же без неё-то.
69 1444194
>>43661
+ за Dive into python
70 1444231
>>44191
channels
71 1444351
Аноны, как можно вкатиться в Django? Не хочу втупую сидеть и читать книжки и доки без особой практики. Есть какие-то видеокурсы может или просто сборники с текстовой лекцией и задачами к ней? Как вообще сами вкатывались и каким образом изучали фреймворк?
lrg.jpg63 Кб, 500x656
72 1444374
>>44351

Сначала проходишь Django Polls - Пример из официальной документации.

Потом качаешь книжку Leightweight Django, читаешь только Главы 1-4. Делаешь все задания. Параллельно учишься работать с гитом (скачай сазу GitKraken и не ебись с консолью как вонючий бумер) Пример из книги разрастается от простого к сложному, по сути, в конце параграфа у тебя получается рабочий проект но с некоторыми фичами.

Тут ты должен понять что 1) Фуллстек это путь в никуда 2) Можно учить сразу Рест АПИ фреймворк.

Потом Идешь на в документацию джанги, читаешь про

Модели
Кверисеты

Потом на всякий случай проходишь туториал рест фреймворка https://www.django-rest-framework.org/

Теперь можешь начинать писать свою имиджборду. Да, она будет без фронтенда ну и хуй с ним.
Параллельно прочитай про pytest и сделай интеграционные тесты для своей борды (запостить сообщение/попытаться открыть удаленный тред/проверь что тред не апается когда он в бамплимите и т.д.).
73 1444384
>>44374

> (скачай сазу GitKraken и не ебись с консолью как вонючий бумер)


А чего там ебаться? git pull git commit git push

> Фуллстек это путь в никуда


Почему?
74 1444400
>>44384

>А чего там ебаться? git pull git commit git push


Только если ты будешь комитить всё и сразу в одном комите.
К гит-клиентах с GUi есть удобная функция для того что бы комитить конкретные строки, откатывать изменения наглядно и т.д.
Но консольные команды знать надо, офк, иначе есть возможно обосраться на собесе и на сервере.
75 1444402
>>44129
Ты недооцениваешь мою ебанутость, и нелепость составления формулировок ^)
>>44130
Не понимаю как это на гите искать, ну а если есть что-то похожее готовое то смысл разбираться отпадает, ведь можно копипастить

Сталкиваюсь с проблемами типа не понимания как работает модуль schedule, или же thread. Потом оказалось что ониработают как надо но программа просто не работает дальше hendler от telegram-bot-api.
Хотя знаете, это на самом деле лень, просто человеческая лень. Когда у тебя есть документация и ты можешь все прочитать и понять, но предпочитаешь ныть, что вот если бы был наставник было бы так здорово. Хотя лопатить всю доку это же пиздец
image.png6 Кб, 380x127
76 1444414
Что с ним не так? Почему ключи и объекты в словаре в таком порядке?
Я понимаю, что словарь - неупорядоченная структура, но почему, к примеру, в {i: i for i in range(5)} элементы выстроены нужным образом, то есть в соответствии со значениями i?

мимонуб
77 1444420
>>44191
Можно, но очень коряво, неочевидно и ограничено. Это решения (как channels) для историй, когда у тебя уже есть проект на джанго, и тебе надо что-то асинхронное вдруг прикрутить, но не для того, чтобы строить на этом асинхронный проект.

После ноды это будет смотреться уныло и убого. Есть другие фреймворки, но в них меньше плюшек, которые есть в джанго.
78 1444427
>>44351
Этап 1:
Из официальной документации по джанго, очень желательно на английском, смотришь главу "Writing your first Django app"

https://docs.djangoproject.com/en/2.2/intro/

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

Потом можно разбирать более детально отдельные части. Я бы рекомендовал сначала разобраться с обработкой url, как они вызываются (это просто, но тут надо смотреть на вторую версию джанго, а не на 1.9), потом со View и немного с шаблонами (шаблоны крайне желательно подключить jinja2 и с ними работать), потом с моделями, как делать разные запросы. Про всё есть как обзорная документация, так и детализированная.
79 1444430
>>44414
Порядок ключей гарантированно соответствует порядку добавления только в питоне начиная с 3,6 (мб 3,7 точно не помню), во втором этого вообще нет.
80 1444434
>>44402

>Когда у тебя есть документация и ты можешь все прочитать и понять, но предпочитаешь ныть, что вот если бы был наставник было бы так здорово.


Грамотный наставник очень нужен и полезен, но где его взять? Как важны хорошие выстроенные систематизированные курсы, это не документация, но где их найти? Большинство коммерческих курсов про то, чтобы состричь денег со случайных вкатывальщиков. Нормальный будет стоить дорого и слушателей для него не найдёшь. Но зато если продерёшься через всё это, то будешь среди немногих, кто смог.
81 1444445
>>44374
Годная информация. Воспользуюсь, спасибо.
А с гитом я работал, команды знаю. Да и в PyCharm всё довольно удобно реализовано, так что консолью я где-то год не пользуюсь уже.

>>44427
И тебе спасибо за ответ.
82 1444452
>>44430

> только в питоне начиная с 3,6 (мб 3,7 точно не помню)


Вроде как с 3,8? По крайней мере читал недавно особенности 3,8 и там это было в списке.
Мимодругойанон
83 1444538
>>44402

Ну ты накодил своё решение, тебе кажется, что оно косячное, ищешь , как данную проблему решили другие люди и заимствуешь лучшие приемы. Да на самом деле иногда лучше скопипастить удачное решение, чем городить свой велосипед, главное разобраться в этом решении и вынести из него что-нибудь для себя.
84 1444539
>>44402

Если не понимаешь как работают треды и подобные вещи, то тебе нужно почитать что-нибудь по операционным системам, например таненбаума.
85 1444540
>>44434

Сомневаюсь, что наставник знает документацию любой либы наизусть. Наставник может проводить код-ревью, указывать на косяки связанный с чистым питоном ну или с очень популярными либами типа Django, Flask и т.д., его главная задача - это прояснение каких-то относительно общих вопросов и указывание на твои слабые места
86 1444542
>>44452

https://mail.python.org/pipermail/python-dev/2016-September/146327.html

С 3.6 в CPython словарь упорядочен в порядке добавления, в других реализациях Python это не гарантируется. С версии 3.7 это уже фича языка, то есть все реализации языка должны гарантировать упорядочность словаря.
15276249102150.jpg230 Кб, 811x968
87 1444546
>>44179

>А ты, судя по ошибке, пытаешься построить этот url с пустым параметром, который обязательный.



Так в том и дело, я нехрена не понимаю как оно может быть пустым, если оно НЕПУСТОЕ, а конфигурируется исходя из читаемого url-slug при создании поста.

А тут эта хня еще вызывает ошибку даже без перехода к посту, а при переходе к самому приложению "blog", а точнее при вызове базового хтмл

я не понимат
88 1444560
>>44540

>Сомневаюсь, что наставник знает документацию любой либы наизусть.


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

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

Но правда на работе редко кто-то готов быть наставником. Чаще все сами по себе. В универах в этом плане проще.
89 1444563
>>44546
Видимо ты вызываешь неправильно, не передаёшь нужный параметр, как надо. При создании поста, когда ты тэг url вызываешь, ты явно должен указывать и параметры, чуть по-разному в стандартном джанго и jinja2. Значит, ты как-то намудрил с этим параметром, только и всего.
90 1444578
>>44546
Попробуй вместо '' в первом url поставить '/'
или другой вариант, вызвать в браузере не
localhost:8000/blog/
а
localhost:8000/blog

то есть без закрывающего слеша
91 1444579
>>44430
>>44452
>>44542
Спасибо за ответы. Сам пользуюсь 3.4.2, потому и результат соответствующий.
92 1444583
>>44563
ладно, спасибо.

Буду искать.

второй день мучаюсь, если возникает нетривиальная ошибка, просто выпадаю в прострацию и уныние, сложно бороться
93 1444633
Не могу долго учить язык программирования, именно учить, а не программировать или читать книгу. Есть книга по питону, обучение идёт как по маслу всё быстро понимаю, но более 3-4 страниц в день не могу осилить. При этом времени на них уходит примерно 1,5 часа. Но это пиздец как высасывает мои ресурсы, хотя я по силам могу ещё покодить или что-нибудь почитать, но что-нибудь новое на сегодня для узнать я не хочу
94 1444641
>>44633
Попробуй вместо книг смотреть курсы
95 1444643
>>44641
мне книга нравится. она очень хорошая. но спасибо, после неё попробую обязательно
97 1444667
Python for Everybody Specialization с курсеры или книга Mark Lutz Learning Python/Programming Python?
Что лучше подойдет для вката?
Какое мнение в целом по курсу Python for Everybody Specialization? Стоит ли платить за него чтобы проверки работ были?
98 1444674
>>44667
Напиши заявление на фин. помощь
15427266854742.jpg109 Кб, 700x818
99 1444676
>>44578
>>44563

ситуация становится охуительной

Я уже нашел на гитхабе код автора
Весь перебрал

В итоге на мозг капнуло "а вдруг эта херня как то не так обрабатывает теги"

Зашел в админ панель и удалил последние 2 поста помеченные тегами

И ОН БЛЯТЬ ЗАРАБОТАЛ

И Я В УПОР НЕ ПОНИМАЮ ПОЧЕМУ И ПРИЧЕМ ТУТ base.html, и как эти посты в detail.html влияют на основную страницу

Короче все решилось. но НИПАНЯТНА почему

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

"Я решил проблему, но как и почему я не знаю, но я её решил, потому что она не вылезает" потрясающе.
100 1444679
>>44676

>эта боль веб макакена

101 1444686
>>44674
Ты про Financial aid? Я, кстати, так и не понял до конца, что это за хуитка такая. Чем отличается от обычной оплаты курса?
102 1444691
>>44686
Ничем, но нужно ждать одобрения две недели
103 1444692
>>44691
А про сам курс (специализацию в целом, там вроде сразу пять курсов идёт) что думаешь? Стоит того или лучше по книжкам учить?
104 1444697
>>43245 (OP)
Насколько корректно использование eval и exec в коде? Заметил, что это "не по понятиям", хоть кто-то из разрабов со стажем их юзает? И при каких обстоятельствах?
105 1444699
>>44400
Если git add . то конечно можешь все сразу. Команд там 20 или около того. Да и это куда быстрее и привычнее, когда все в одном окне делаешь(в терминале офк). Раньше я тоже гуями пользовался. Да и сейчас иногда, если это удобнее быстрее. Но обычно консоль выигрывает. Не слишком красиво, зато быстро и удобно.
106 1444710
>>44692
Забыл добавить, что фин. помощь на всю специализацию сразу оформить нельзя, нужно оформлять на каждый курс.

Бегло посмотрел программу курсов, если честно, то не очень. На мой взгляд слишком долго, по программе курса ты к ООП перейдешь только на 4 курсе, т.е. на 21 неделе, т.е. через 5 месяцев. Конечно, ты скорее всего будешь проходить эту специализацию быстрее, но всё равно. К тому же язык в данной специализации разбирается довольно поверхностно, если судить по программе, то даже если ты пройдешь всю специализацию полностью, то твоих знаний будет недостаточно, чтобы претендовать на вакансию джуна (при этом я беру в расчёт только знание языка, джуну ещё фреймворки нужно знать). Задания не смотрел, судя по названиям довольно прикладные, что хорошо, но не уверен.

С другой стороны пролистал Learning Python Лутца и тоже немного удивился. По содержанию претензий нет, если изучишь данную книгу, то будешь довольно уверено себя чуствовать с питоном, знаний языка будет достаточно для джуна, единственное в книге не затрагивается асинхронность (хотя от джунов редко требуют) и стандартные библиотеки Python. К тому же в конце каждой главы есть набор вопросов и упражнений с решениями, что тоже положительно скажется на качестве твоего обучения, только задания не очень прикладные, поэтому если будешь изучать Python по книге, то советую иногда делать какие-нибудь мини-проекты. Но в книге 1200 страниц, что на мой взгляд довольно много, видимо автор достаточно водянисто пишет, но с другой стороны для новичка это может быть даже полезно. Советую заранее расчитать скорость изучения языка по этой книге и сколько это у тебя займет времени в итоге.

В общем, если выбирать из этих двух вариантов, то я бы посоветовал Лутца, но ты не рассказал о своих текущих навыках и целях и к какой цели ты стремишься
107 1444716
>>44710
Спасибо огромное за ответ!

Питон для прикладных задач нужен. На голого прогера-джуна не претендую староват уже для такого
Я инженер-конструктор, и есть желание покопаться в сторону машинного обучения, датамайнинга и нейронок. Плюс, скрипты для автоматизации работы в CAD'ах, инженерные расчёты и так в целом для комфортной жизни.
В своё время учил Delphi и немного C++, ооп, даже немного до ассемблера добрался, но все это было в далекие студенческие беззаботные годы.
108 1444722
Надо смотреть на то, что человек умеет и какой у него бэкграунд.

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

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

Если с нуля, то надо прочитать просто самые основы языка, и начать решать разные задачи, примерно как на литкоде простые.

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

Вот если уже практика программирования есть, то другое дело. Но это надо смотреть на то, какой опыт и что умеешь.
109 1444723
>>44716

>В своё время учил Delphi и немного C++, ооп, даже немного до ассемблера добрался


Это совсем не начальный уровень и тут уже будет сильно проще.
110 1444725
>>44723
Ну, да. Какие-то знания есть, даже Кнута в своё время читал.
Но после студенческих увлечений ушел сильно в инженерную работу, и совсем программирование на десять лет забросил, а это считай вечность.
Так что я тут как полуновичок наверное.
111 1444728
>>44716
Тогда даже не знаю, возможно специализация для тебя более предпочтительна будет. Для решения прикладных задач и ML тех знаний будет более чем достаточно, плюс там задания и проекты относятся к этой теме.

Книга Лутца больше подходит для серьёзного изучения, а если не планируешь вкатываться в программирование, то лучше пожалей время, дата саентистам нужно больше делать упор на сторонние библиотеки, чем на чистый язык. Поэтому Лутц для тебя будет оверхед.

Ещё по теме автоматизации слышал хорошие отзывы о книге Automate the boring with python, возможно тоже будет неплохим вариантом для тебя.
112 1444790
Хорошо знаю core пайтона, куда двигаться теперь? Что учить, что читать?
113 1444808
>>44716
О, коллега, тоже работал конструктором на заводе, сейчас тружусь технологом на станке с ЧПУ в мелкой конторе. На досуге и в свободное рабочее время стараюсь всякие расчеты автоматизировать сначала в Экселе для понимания логики, а потом в пайтоне. Сложно, конечно, все осмыслить, но стараюсь.
114 1444809
>>44633
Как не странно тебе нужно научится, учится. Как анон уже писал выше, приготовь свое рабочее место, убери со стола и поставь таймер. Например, поставил таймер и блять не перестаешь учить, пока время не пройдет. ТЫ НЕ ДОЛЖЕН чувствовать себя как дома, будто ты на паре или на работе. НЕ ОТКЛИКАЙСЯ на всякие там вкшечки и инстаграмы.
115 1444824
>>44633
Я тоже не могу заставить себя читать больше 20 страниц в день "Изучаем Python" Лутца. Одна первая глава чего стоит: автор 20 страниц повторяет несколько идей. Начиная с 3-ей главы не так абсурдно, но читать все равно сложно.
Есть ли чтиво, которое читается легче/увлекательнее?
116 1444866
>>44824
ну я литературу на английском всю читаю. на русском может быть тоже 20 страниц в день бы было.

>>44809
да это хуйня всё, я не отвлекаюсь. могу спокойно сидеть больше часа без перерыва читать книгу. меня просто плющить начинает если я ИЗУЧИЛ сегодня более 4-х страниц в день. мозг болит что ли, хуй знает как это объяснить. тяжело в себя новой информации много запихивать, во истину самый тяжкий труд это учение!
117 1444877
В результате работы функции я получаю ответы

261
262
...
269
270
....
300

Как сделать дополнительную функцию для замены этих результатов в упрощенный вид, 260-269 - представлять как 1, 270-270 - 2 итд.
118 1444889
>>44877
def normalise(number):
____if number == 260:
________return 1
____if number == 261:
________return 1
____if number == 262:
________return 1
____if number == 263:
________return 1
____if number == 264:
________return 1
____if number == 265:
________return 1
____if number == 266:
________return 1
____if number == 267:
________return 1
____if number == 268:
________return 1
____if number == 269:
________return 1
____if number == 270:
________return 2
____if number == 271:
________return 1
____if number == 272:
________return 1
____if number == 273:
________return 1
____if number == 274:
________return 1
____if number == 275:
________return 1
____if number == 276:
________return 1
____if number == 277:
________return 1
____if number == 278:
________return 1
____if number == 279:
________return 1
____if number == 280:
________return 1
____if number == 281:
________return 1
____if number == 282:
________return 1
____if number == 283:
________return 1
____if number == 284:
________return 1
____if number == 285:
________return 1
____if number == 286:
________return 1
____if number == 287:
________return 1
____if number == 288:
________return 1
____if number == 289:
________return 1
____if number == 290:
________return 1
____if number == 291:
________return 1
____if number == 292:
________return 1
____if number == 293:
________return 1
____if number == 294:
________return 1
____if number == 295:
________return 1
____if number == 296:
________return 1
____if number == 297:
________return 1
____if number == 298:
________return 1
____if number == 299:
________return 1
____if number == 300:
________return 1
____if number == 301:
________return 1
____if number == 302:
________return 1
____if number == 303:
________return 1
____if number == 304:
________return 1
____if number == 305:
________return 1
____if number == 306:
________return 1
____if number == 307:
________return 1
____if number == 308:
________return 1
____if number == 309:
________return 1
____if number == 310:
________return 1
____if number == 311:
________return 1
____if number == 312:
________return 1
____if number == 313:
________return 1
____if number == 314:
________return 1
____if number == 315:
________return 1
____if number == 316:
________return 1
____if number == 317:
________return 1
____if number == 318:
________return 1
____if number == 319:
________return 1
____if number == 320:
________return 1
____if number == 321:
________return 1
____if number == 322:
________return 1
____if number == 323:
________return 1
____if number == 324:
________return 1
____if number == 325:
________return 1
____if number == 326:
________return 1
____if number == 327:
________return 1
____if number == 328:
________return 1
____if number == 329:
________return 1
____if number == 330:
________return 1
____if number == 331:
________return 1
____if number == 332:
________return 1
____if number == 333:
________return 1
____if number == 334:
________return 1
____if number == 335:
________return 1
____if number == 336:
________return 1
____if number == 337:
________return 1
____if number == 338:
________return 1
____if number == 339:
________return 1
____if number == 340:
________return 1
____if number == 341:
________return 1
____if number == 342:
________return 1
____if number == 343:
________return 1
____if number == 344:
________return 1
____if number == 345:
________return 1
____if number == 346:
________return 1
____if number == 347:
________return 1
____if number == 348:
________return 1
____if number == 349:
________return 1
____if number == 350:
________return 1
____if number == 351:
________return 1
____if number == 352:
________return 1
____if number == 353:
________return 1
____if number == 354:
________return 1
____if number == 355:
________return 1
____if number == 356:
________return 1
____if number == 357:
________return 1
____if number == 358:
________return 1
____if number == 359:
________return 1
____if number == 360:
________return 1
____if number == 361:
________return 1
____if number == 362:
________return 1
____if number == 363:
________return 1
____if number == 364:
________return 1
____if number == 365:
________return 1
____if number == 366:
________return 1
____if number == 367:
________return 1
____if number == 368:
________return 1
____if number == 369:
________return 1
____if number == 370:
________return 1
118 1444889
>>44877
def normalise(number):
____if number == 260:
________return 1
____if number == 261:
________return 1
____if number == 262:
________return 1
____if number == 263:
________return 1
____if number == 264:
________return 1
____if number == 265:
________return 1
____if number == 266:
________return 1
____if number == 267:
________return 1
____if number == 268:
________return 1
____if number == 269:
________return 1
____if number == 270:
________return 2
____if number == 271:
________return 1
____if number == 272:
________return 1
____if number == 273:
________return 1
____if number == 274:
________return 1
____if number == 275:
________return 1
____if number == 276:
________return 1
____if number == 277:
________return 1
____if number == 278:
________return 1
____if number == 279:
________return 1
____if number == 280:
________return 1
____if number == 281:
________return 1
____if number == 282:
________return 1
____if number == 283:
________return 1
____if number == 284:
________return 1
____if number == 285:
________return 1
____if number == 286:
________return 1
____if number == 287:
________return 1
____if number == 288:
________return 1
____if number == 289:
________return 1
____if number == 290:
________return 1
____if number == 291:
________return 1
____if number == 292:
________return 1
____if number == 293:
________return 1
____if number == 294:
________return 1
____if number == 295:
________return 1
____if number == 296:
________return 1
____if number == 297:
________return 1
____if number == 298:
________return 1
____if number == 299:
________return 1
____if number == 300:
________return 1
____if number == 301:
________return 1
____if number == 302:
________return 1
____if number == 303:
________return 1
____if number == 304:
________return 1
____if number == 305:
________return 1
____if number == 306:
________return 1
____if number == 307:
________return 1
____if number == 308:
________return 1
____if number == 309:
________return 1
____if number == 310:
________return 1
____if number == 311:
________return 1
____if number == 312:
________return 1
____if number == 313:
________return 1
____if number == 314:
________return 1
____if number == 315:
________return 1
____if number == 316:
________return 1
____if number == 317:
________return 1
____if number == 318:
________return 1
____if number == 319:
________return 1
____if number == 320:
________return 1
____if number == 321:
________return 1
____if number == 322:
________return 1
____if number == 323:
________return 1
____if number == 324:
________return 1
____if number == 325:
________return 1
____if number == 326:
________return 1
____if number == 327:
________return 1
____if number == 328:
________return 1
____if number == 329:
________return 1
____if number == 330:
________return 1
____if number == 331:
________return 1
____if number == 332:
________return 1
____if number == 333:
________return 1
____if number == 334:
________return 1
____if number == 335:
________return 1
____if number == 336:
________return 1
____if number == 337:
________return 1
____if number == 338:
________return 1
____if number == 339:
________return 1
____if number == 340:
________return 1
____if number == 341:
________return 1
____if number == 342:
________return 1
____if number == 343:
________return 1
____if number == 344:
________return 1
____if number == 345:
________return 1
____if number == 346:
________return 1
____if number == 347:
________return 1
____if number == 348:
________return 1
____if number == 349:
________return 1
____if number == 350:
________return 1
____if number == 351:
________return 1
____if number == 352:
________return 1
____if number == 353:
________return 1
____if number == 354:
________return 1
____if number == 355:
________return 1
____if number == 356:
________return 1
____if number == 357:
________return 1
____if number == 358:
________return 1
____if number == 359:
________return 1
____if number == 360:
________return 1
____if number == 361:
________return 1
____if number == 362:
________return 1
____if number == 363:
________return 1
____if number == 364:
________return 1
____if number == 365:
________return 1
____if number == 366:
________return 1
____if number == 367:
________return 1
____if number == 368:
________return 1
____if number == 369:
________return 1
____if number == 370:
________return 1
119 1444891
>>43245 (OP)
а кто на втором пике? создатель писоса питона?
120 1444900
>>44790
А что тебе интересно?

TensorFlow, Keras, Torch...
121 1444903
>>44889
Спасибо, но нет ли способа покороче? А то у меня же не только эти значения, а значительно больше.

Как-то массивы наверное можно сделать без перечесления, а с указанием диапазона и проверять есть ли число в массиве если есть присваивать новое значение.
image.png22 Кб, 551x189
122 1444906
>>44903
Формулируй сразу как тебе надо, я первый ответ писал полчаса >:C
123 1444910
>>44906
Круто, добра тебе анончик!
124 1444911
>>44889
Это троллинг такой? Твоя функция даже не работает нужным образом, а просто возвращает единицу при 260 <= number <= 370.
Снимок экрана 2019-07-30 в 14.50.07.png701 Кб, 1042x964
125 1444912
>>44906
Надеюсь, ты пошутил.
126 1444915
Анон, посоветуй бесплатный питон хостинг. Я запилил телеграм бот на хероку, но через полчаса он засыпает и просыпается секунд через 15.
Или это норм для фри хостинга и лучше вариантов нет?
127 1444919
>>44912
Так у челика на 270 возвращает 2, а у тебя везде 1. Это не то, что нужно было.
129 1444921
>>44915
Может ты запускаешь хуево?
Запускай в фоне через nohup python main.py &
130 1444923
>>44920
Не то, 2 должно быть только в диапазоне 270-270, в глаза долбишься?
131 1444925
>>44923
Да не он прав, в оппосте опечатка очевидно же 270-279 должно быть
132 1444926
>>44923
Я не только в глаза не долблюсь, но и в лобные доли, потому и понимаю, что он просто опечатался и имел в виду 270-279.
Снимок арвоннвлгее.PNG21 Кб, 356x646
133 1444928
>>44921

> nohup python main.py



это их стандартная фича для бесплатного акка
134 1444929
>>44919
Ну руками поменял бы, когда вставлял. Нет проблем
olgachocolate660758246959406441796543532355329907766330n.jpg63 Кб, 829x1472
135 1444934
>>44920
Тебе тоже спасибо огромное. Я запомню что можно и так делать, но тот вариант мне подходит больше т.к. я не упомянул в тз, что диапазоны не всегда из 10 чисел и могут быть с пропусками.

А есть какие-нибудь сайты с такими простыми задачками, желательно с возможностью посмотреть ответы и варианты решений?
136 1444937
Чето у меня тупой вопрос. Вот django: в качестверазраба макаки мне надо работать с многопоточностью или нет? Здравый смысл говорит, что да. Но оверинжиринг заставляет сомневаться. Что-то без круда явно же надо стараться запихать в треды?
137 1444940
>>44920
Вы троллите блядь, нахуя вам циклы какие-то.. print(a//10 - 35)
138 1444943
>>44934
checkio.org
139 1444945
>>44940
print(a//10 - 25), тогда уж.
140 1444947
>>44945
А, ну да, я опечатался
141 1444958
>>44940
Нет, мы быдлокодеры. А ты говнокодер.
изображение.png10 Кб, 863x248
142 1444960
Сап, питонисты, столкнулся с такой хуйней как шаблонизатор Джаного. И я блять вообще не понимаю, что это ? Какой это язык, как это понимать ? Что за скобки, проценты и тд ?
143 1444964
>>44958

>кодеры

144 1444965
>>44960
Это язык шаблонов, в разных веб-фреймворках они разные, у джанго свой, у фласка например jinja2.
Да кажется сложным, на деле учится за вечер.
https://docs.djangoproject.com/en/2.2/ref/templates/language/
https://djbook.ru/rel1.4/topics/templates.html
сука ты тупая :3
145 1444966
>>44964
Мы быдло, а ты говно.
146 1444976
>>44966
Да вы троллите по-моему просто, тут у вас какое-то соревнование было по самому ебанутому решению простейшей задачи. Странно только, что его ещё первый челик с ифами выиграл, обогнать его было невозможно
147 1444987
>>44976
Технически выиграл его ты, ибо даже его код иногда выдаёт нужные значения, в отличие от твоего с опечаткой.
148 1444994
>>44987
Да только опечатка исправляется в один символ после получения неожиданного ответа(отрицательных чисел быть не должно было по постановке задачи), а у вас нужно переписывать полностью, потому что вместо выражения на два действия у вас алгоритм перебора с циклом на n//10 - 25 итераций
149 1444998
>>44994
Алсо, если серьёзно, то я советую порисовать черепашкой несколько заданий из http://judge.mipt.ru/mipt_cs_on_python3/labs/lab1.html
Задание на спираль Архимеда, на вложенные многоугольники, и на н-конечную звезду. Они и интересные и не очень долгие и там нужно собирать математические выражения.
Screenshot.png57 Кб, 634x508
150 1445014
151 1445019
>>44998
Блин, прикольная штука. Я и не знал, что у питона такое есть.
152 1445024
>>45019
А то! Можно ещё модуль graphics скачать, там про это есть тоже следующих главах курса. Но для геометрических фигур хватает черепашки. Там потом ещё тема будет про рисование фракталов, на рекурсивные алгоритмы.
153 1445038
>>44906
Выглядит красиво , но работать же будет только первый диапазон
154 1445079
>>44965
Сасибо анон. Лучше ставить jinja2 или оставить Django шаблоны ?
155 1445085
>>45079
Не трогай что работает, лол.
Джанго шаблоны не сильно отличаются от других стандартных. Научишься на них - считай знаешь остальные.
Выучи базовые вещи: получение ссылки на статичные данные (картинки, скрипты), работа с переданными аргументами, циклы и условия, наследование шаблонов (самая ахуенная вещь).
156 1445116
>>45079
Они похожие, но лучше jinja2, штатные немного корявые. У jinja2 больше возможностей и удобства при обращении к словарям и т.п. Jinja2 более универсальные, и на других фрейворках работают, и даже в другие языки портированы довольно близко. В целом для начала можно не заморачиваться, ключевые принципы одни, смотри просто, чьи доки тебе удобнее читать и понимать.

Самое крутое в шаблонах, это возможность наследования и макросы, вот там они по-настоящему разворачиваются.
цетата.jpg133 Кб, 807x656
157 1445122
Объясните, пожалуйста, про метод Ньютона для нахождения квадратного корня. Гуглил, но ничего не понимаю что написано, что за приближение, что это вообще такое...
158 1445126
>>45122
Если не понимаешь, то начни с основ матана, иначе это бессмысленно. Например, на сайте для заочников и не только mathprofi или в школе/универе
159 1445129
>>45126
Я уже разобрался, спасибо не надо. Просто не понимал что такое "приближение"
160 1445135
>>43844

>>Теория игр, теория принятия решений, Управление и оптимизация, многокритериальное принятие решений, Марковские модели, конечные автоматы, теория графов, теория вероятностей, статистические методы, имитационное моделирование, ии и коллективное поведение и проч.


иными словами - мозг пытается составить обобщенную модель мозга с целью надежного и длительного выставления произвольных функций оптимизации. и чтоб внимание получше работало. в РЦП такими вещами очень интересуются вроде бы.
161 1445185
>>44808
Привет брату инженеру! Расскажи что получилось автоматизировать на питоне? Удобно ли пользоваться? Заморачивался ли с интерфейсом?
162 1445195
>>44728
Спасибо.
Буду глядеть специализацию тогда. Мне питон больше в прикладных задачах нужен, да.

> Automate the boring with python


Есть такая, да. Уже скачал, буду изучать. Спасибо еще раз.
163 1445218
>>45122
>>45126
Разобрался полностью с этим, теперь у меня вопрос какое отношение это имеет к погромированию? Типа алгоритм? Я ньюфаня, не обссыкайте за глупые вопросы
164 1445225
>>45218
Никакого. Это не программирование. Программирование это когда ты в доту играешь. Или в инсте фотки лайкаешь. А какие-то там вычисления, это не программирование.
165 1445229
>>45218
Это основа.
Допустим, тебе надо будет нарисовать график по точкам, но не от руки, как в школе, а с интерполяцией сплайнами. Вот тут ты берешь матлаб питон и пишешь себе на будущее функцию, которая за пару минут тебе красиво все покажет и нарисует.
ЯП - исполнитель, а тебе нужно знать, что исполнять и как это написать
166 1445230
>>45229
Спасибо, я ничего не понял. Но всё равно спасибо, пойду дальше тогда книжку читать
167 1445234
>>45230
Потому что это вычматы, а не питон. Для глобального понимания, как решать задачу, и существуют алгоритмы, которые изучаются в отрыве от языка.
168 1445236
>>45234
ну так там книга и есть эта. типа обучения основам погромирования общим на примере питона.
169 1445272
>>45234
Вычмат о том, чтобы доказать сходимость решения, скорость сходимости и т.п. А программирование о том, чтобы реализовать это на практике.

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

Вот разберись и реализуй.
15580779430600.jpg108 Кб, 532x675
Говно из жопы Пидор Ебаный 170 1445309
>>43245 (OP)
Антоши, вот я тупой дебил и нихуя не умею. Хочу научится погромированмю. Решил выбрать пока питон, он вроде как самый лёгкий и неплохой такой. Вот скажите, не зашквар ли читать книгу "питон для детей" если я уже не дитё?
171 1445310
>>45309

>вот я тупой дебил


Справедливо, раз ты задаешь такие вопросы

Нет не зашквар.
15532420716450.jpg57 Кб, 500x435
Пидор Ебаный 172 1445311
>>45310
Спасибо тебе анон, сейчас пойду спать и завтра постараюсь начать читать эту книгу.
173 1445695
>>43245 (OP)
Братцы, на работе (режимное говнопредприятие) нет инета, а мне очень бы помогли пакеты Питона для работы с Excel и PDF форматами. Как их сцуко установить, если pip install не пашет? Я раздобыл исходники с Гитхаба, но как эти модули дальше установить, чтоб они работали?
174 1445704
>>45695
Можно сделать через virtualenv, портируемый режим. Дома создаёшь всё, что тебе надо, ставишь все пакеты, которые нужны, приносишь куда надо, копируешь и запускаешь.
175 1445706
>>45695
Качаешь колёса, ставишь колёса через pip.
176 1445710
>>45695
Что ты там делаешь? Вали оттуда, целее и сытее будешь.
177 1445723
>>45710
Съебусь только к октябрю. Сначала надо премию получить, сходить в отпуск и получить новые отпускные за полгода

>>45704
Наверно так и надо пробовать. Но я виртуалку еще не настраивал, тем более портируемую и для сторонней машины, годную инструкцию подкинуть не сможешь?

>>45706
? качаю куда? и можно ли указать этому менеджеру откуда устанавливать пакет? везде по pip лишь базовые сведения аля "щелкни сюда чтоб установить 5 разных фреймворков", но нигде толком не объясняют на низком уровне как собственно этот менеджер пакетов работает
178 1445724
>>45723
Берешь флешку, на ней создаешь виртуалку, в которую уже ставишь все, что нужно.
На работе собсна кидаешь на эту флешку нужные файлы и работаешь с ними из под виртуалки.
Для настройки просто загугли virtualenv
179 1445734
как эффективнее всего реализовать сохранение статуса выполнения цикла?(чтобы брал значение переменной из txt файла)
180 1445770
Аноны, собсна, какого хуя такое происходит и как это исправить?
Чому оно не работает? Вроде всё делал по тутору с сайта DRF, но выдаёт такую хуйню. УРЛ проёбан по полной.
Гугл выдаёт гайды от обоссаных индусов с кривым кодом.
181 1445799
img_rgb = np.array(sct_img)
resized_image = cv.resize(img_rgb , (0, 0), fx=5, fy=5)

cv.imwrite('xxx.png', resized_image)
im = cv.imread('xxx.png')

im[np.where((im == [0, 0, 0]).all(axis=2))] = [255, 255, 255]

Как работать с изображением без сохранения/чтения напрямую? Если resized_image добавить в последнюю строку будет ошибка AttributeError: 'bool' object has no attribute 'all'. Какой тип нужен? Я же вроде в сам начале в numpy.array перевел.
182 1445813
Есть массив

array = ["Bob", "Alex", "Bob", "John", "Bob", "Alex", "Bob"]

как вывести не повторяющиеся элементы и их количество, т.е.
bob - 4
alex - 2
john - 1
183 1445823
Суп питонач. Есть здесь продвинутые веб макаки?
Есть заготовка проекта. В нём channels, celery, redis ещё и фронт на ноде с server side rendering. Вот хочу всё это ебануть в nginx + docker, но ума не приложу с чего начать.

Предполагаю, для начала надо запустить хотя бы сам проект через nginx без всяких докеров, а после успешной отладки уже пытаться всё упаковывать в контейнеры. Надеюсь на ваши советы.
184 1445834
>>45813
лучше спроси как научиться задавать вопросы гуглу?
https://stackoverflow.com/questions/28663856/how-to-count-the-occurrence-of-certain-item-in-an-ndarray-in-python
185 1445836
>>45834
ну а тривиальный способ это сделать лист с уникальными элементами и для каждого элемента листа получить count в исходном листе
186 1445841
>>45038
С чего ты взял?
187 1445866
>>45813
В питоне есть стандартный модуль collections, а в нем есть класс Counter, он делает сразу то, что тебе нужно
188 1445871
>>45734
Не понятно, что тебе нужно конкретно. Но, наверно, тебе полезно будет почитать про генераторы в питоне, ну, там, yield, next, и все дела
189 1445872
>>45695
pip умеет скачивать пакеты со всеми завизимостями, но не устанавливать их, а сохранить в указанной директории, которую ты можешь спокойно скопировать на флешку и перенести куда угодно, а еще pip умеет устанавливать пакеты не из интернета, а из локальных файлов и папок. Так что, можешь дома выкачать нужные пакеты вместе с их зависимостями, а потом принести их на работу и установить, и все с помощью pip. Вообще pip до хрена всего умеет, не поленись изучить его документацию, хотя бы ту, что он сам про себя в консоли показывает.
190 1445889
>>45799
бамп

я ща проверил dtype, там до сохранения uint8 и после чтения uint8, но напрямую не рабоатет.
image.png76 Кб, 810x452
Аноним 191 1446024
>>44021
Анон, у тебя всё правильно, просто не стоит вводить p,z,t , а нужно вводить то, что записано в переменной, тобишь Zerg , Protos, Terrain.
192 1446042
>>45770
Бумп.
Что за блядство такое, этот DRF..
193 1446046
>>46042
>>45770
Дружище, кури регулярки и https://docs.djangoproject.com/en/2.2/topics/http/urls/
Я просто в ахуе, что ты такое еще спрашивать сдесь удумал.
image.png51 Кб, 628x406
194 1446051
>>46046
Причём тут регулярки?
Если пикрил предлагается в офф доках ДРФа.
У меня подобная херня, только вместо "" мой роут начинается с "api/".
Или я чего-то не понимаю?
195 1446133
>>45866
>>45813
Есть стандартный метод у списка
array.count('Bob')
196 1446135
>>46133
А, не так понял задачу.
197 1446182
>>43245 (OP)
Что нужно знать, чтобы етл на вашем яп писать?
198 1446328
>>46182
Желательно минимальное знание англа, а потом учить язык
199 1446335
>>46328
Спасибо, английский я знаю.
А более подробный ответ на вопрос можно?
200 1446541
>>46335
Если вообще не знаешь язык, то можешь либо пройти курс Питонтьютора, либо прочитать "Укус питона", это основа(документация еще, конечно же)
Потом смотришь нужные тебе библиотеки и начинаешь что-то делать с их использованием.
Можно просто решать задачи на chekio/codingame/pythonchallenge
201 1446553
Сап питонач. Хочу изучать питон. Какое издание "Изучаем питон" Лутса выбрать?
202 1446568
>>46553
Четвертое
203 1446572
>>46568
почему не пятое?
204 1446591
>>46572
Можешь и его, для вкатывания нет разницы особой, так как это все же книга для +- углубленного изучения, а пятое издание еще не переведено, насколько я знаю
205 1446594
>>46591
Хорошо, спасибо за ответ
206 1446621
Питонач, пришла идея сделать бота для телеги.Ты его добавляешь, кидаешь название паблосов из вк, а он все посты, которые будут выходить после твоей подписки на них в боте телеги, будет постить. Че, как вам? такое же реально сделать?
207 1446624
>>46621
Просмотри апи вк и поймешь
208 1446628
>>46624
а че если я просто буду парсить, там же не будет никаких подводных
209 1446630
>>46621

>такое же реально сделать?


Реально. Недавно только щупал я бы сказал, касался даже апи ВК и там есть всё, что тебе надо. Дело 2-3 функций. Вот только нахуя оно? Сейчас каждый 2-ой, если не 1,5-ый, паблик имеет свой ТГ канал для сруба бабок с рекламы вдвое чаще обычного, так что какого-то большого импакта не вижу, разве что брать посты с групп непопулярных на 10-20к тел.

>>46628
Нахуя парсить страницы при живом апи? Всё равно, что тебе дадут мотоцикл, чтобы ты до дома доехал, а ты рот ебал чо-то с ним разбираться, ключ зажигания там какой-то ещё вставлять, и поедешь на своём раздолбанном велосипеде.
210 1446632
>>46628
Как сказано выше, можно и парсить, но это себя не уважать. Апи дает как минимум опыт и удобство
211 1446634
>>46630
благодарю. Да вот по наблюдениям не у каждой группы есть тг канал. А у меня то задумка в том, что можно будет совершенно любую группу сделать
50788817b72.jpg106 Кб, 750x422
212 1446639
Питонач, есть серьёзный вопрос. Как вкатиться в работу? Вот я правда. У меня есть знания питона, которые позволяют мне кодить всякие штуки для себя, с чем я успешно справляюсь. Я могу прочитать чужой код, найти ошибки в нём и исправить их. Если мне скажут разобраться в фреймворке, я прочитаю документацию и всё пойму без особых проблем. Но это же блять нихуя не учитывается при устройстве на работу! Всем нужно, чтобы ты решал какие-то ебанутые задачи и разруливал ситуации, которые ну вот вообще никогда не возникнут, если только не полный долбоёб пишет код. Понимать, что от кого и когда наследует и как эта хуйня работает в очень глубоком представлении, хотя по факту есть тут вообще те, кому эти глубочайшие знания необходимы на практике? Если есть, пруфайте, и я ухожу нахуй.
Так вот, что мне нужно собственно. Есть ли какой-то сборник задач, вопросов и прочего, которые составлены по собеседованиям? Чтобы вот со всеми этими ебанутыми ситуациями в коде, со всеми доёбами до каждого атрибута в каком-то доисторическом классе и всё в этом духе. Очень прошу поделиться подобным, потому что заебало уже всё максимально. Или просто хоть напишите, как сами к собеседованию готовились, если вы работаете питон девом.
В МВП не отправляйте. Там никто не сидит и не шарит, к тому же вопрос именно касается сабжа, а не других ЯП.
213 1446642
>>46639
Нахуй.
214 1446653
Аноны, есть одна проблема.

В функции:

https://pastebin.com/x0bdh59k

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

ЧЯДНТ????
215 1446669
>>46639

>Как вкатиться в работу?


Заходишь на hhru. Ищешь вакансии в своем городе. Если видишь что многим нужны технологии которых вообще не знаешь - учишь их. Жмешь ОТКЛИКНУТЬСЯ. Ждешь. Проходишь собес. Работаешь. Вопросы?
image.png15 Кб, 483x268
216 1446798
>>46653
Как нуб могу предположить, что где-то по ходу кода возбуждается IndexError.
Так же, как нуб, я не очень понимаю, что делает указанная на скрине часть кода. Не нужен ли здесь return?
217 1446815
Как вставить текст из буфера обмена в список?

Или вообще можно ли сразу работать с текстом в буфере обмена? Мне нужно будет находить в нем знак и копировать несколько символов после этого знака.
219 1446819
Писать гуевые приложения для винды на питоне это норм или я поехавший?

Я не погромист, но раньше делал в офисе для теток и не только всякие утилитки для облегчения жизни на delphi.

Сейчас немного начал питон изучать. Думаю для набора опыта переписать некоторые из них.
220 1446827
>>46798

>возбуждается IndexError


Да, так и есть. Но даже если тут и возникает какая-то ошибка, то должен возвращаться list_of_text, который выше был дополнен.

>Не нужен ли здесь return?


Нет. Потому что скрипт вызывает себя еще раз, что бы проделать еще одну операцию, пока определенные условия не будут соблюдены, либо пока не вызовется ошибка.
221 1446832
>>46819
Норм всё, пили
222 1446834
>>46819
Ну можно, но ето изврат.
223 1446841
>>46834
Почему? Я сам внутренне это чувствую, но как ты это объясняешь?
224 1446874
просто интересно. на каком языке программирования в основном пишут программы которые работают в видеокамерах, стационарных телефонах, микроволновках и т.д.
225 1446876
226 1446877
>>46874
Жаба
227 1446879
>>46876
>>46877
а на технику которая выпускалась в 90-е годы тоже java?
228 1446881
>>46879
Бейсик, ассамблер
229 1446904
>>46881
понял. спс
230 1446911
>>43245 (OP)
А есть тут успешные джанго-разработчики? Как по вашему, что должен уметь/знать джун на эту позицию?
Я вроде как подтянул базовые знания, попробовал в редис, селери. Даже жс на уровне ajax запросов выучил.
Но на работу идти стремно, потому что кажется что я просто не смогу в энтерпрайз, я хуй знает какие там общепринятые практики и вот это вот всё.
Я в основном для работы проекты пилил, на своих костылях. Работало, да и хуй с ним. Но работу сейчас хочется поменять.
231 1446913
к теме про vk api. Как получиь посты конкретной группы, так и не нашел:?
232 1446914
>>46653
Нашел уже сам проблему, но появился другой вопрос: "Как остановить цикл, который СУКА НЕ ХОЧЕТ ОСТАНАВЛИВАТЬСЯ?"

Дело в том, что в функции я запускал саму же функцию, но, если так можно выразиться, 1 поток функции не хочет оканчиваться даже если поставить после вызова функции break
233 1446915
>>46913
вопрос снят, я открыл доки api и понял, лол
234 1446918
>>46914
Вопрос снят, просто сделал еще одну (другую) функцию
235 1446919
>>46874
Си, кресты. Никто не пишет такое на жабе, тебе пиздят. Внутри твоей видеокамеры вообще ртос на сишке крутится почти наверняка.
236 1446924
>>46919
я думал что на си ++ . на джаве наверное для современных больше пишут.
211.png622 Кб, 817x571
237 1446928
>>46919
интересно на каком языке написано по на котором пикрил работает. пикрил 2000-го года выпуска.
238 1446938
Питонач, получаю я значит посты с группы и че бля? Получаю почти мгновенный "Rate limit reached" и это при 2500 - 5000 разрешенных вызовов, но вызвал ф-ию я только 2-3 раза. що за нах
239 1446953
>>46938
крч мой план такой: Если будет много людей, то надо будет делать сортировку, типа 2-3 чела подписаны на "двач" и, чтобы бот понимал это и делал вызов только один раз, а отсылал троим. Это нужно, чтобы, если 1к пользователей на двач подпишутся, то бот каждый вызов не херачил для этой тысячи людей.
240 1446958
>>46953
ну и снова возвращаясь к api vk или парсу. Парс все же надежнее, кто меня там заблочил, запросы бесконечные. А так это же пиздец, либо 100акков создавать, чтобы когда один терял доступ к апи система заходила под другим акком и обращалась к апи до тех пор, пока снова не блочнит, либо делать одного бота под конкретную группу, но это не устраивает меня. Я хочу, чтобы человек писал какие группы ему нужны, а бот сам все отправлял в виде новостей, вк тогда нахой не нужен будет.
241 1446979
>>46958
Вот же блядь, я теперь через приложение вк не могу получить посты со стены групп, тк превысил число запросов, лол
.png99 Кб, 317x372
242 1447149
В очередной раз пробую закрыть гештальт и научиться в погромирование.
В данный момент где-то на середине укуса питона. За что взяться после него?

Тут еще такое дело, я не могу понять кто я по складу ума - гуманитарь или техноблядок, с голой математикой у меня всегда был пиздец, зато хоть сколько-то имеющие прикладной аспект (химия, физика) понимались нормально. Ну и есесно всякая гуманитарная хуита с легкостью заходила. Прошу учесть это при совете.
243 1447202
>>47149
Гуманитарий-хуянитарий. Тебе 14 лет, что ты такие вопросы задаешь? По твоему тут у каждого премия Тьюринга или что?
Как завещали старейшины сначала ты должен запилить свою борду. Можешь начать "Python. к вершинам мастерства". Она углубляется в разные аспекты питона и вполне актуальна, кроме разделов с asyncio
image.png16 Кб, 654x260
244 1447297
Есть два потока, в одном я должен чекать появление новых постов в группе, а в другом слушать что прислал юзер боту. Как не пытался два никогда не стартуют, только какой-то один в зависимости от того, какой первый создашь. В чём проблема? Пробовал threading, _thread, вот версия через multiprocessing. Но суть то везде одна и та же, просто передаёшь функцию и запускаешь поток.
245 1447302
>>47202
А что с asyncio?
246 1447308
>>43295
Даже смотреть не буду в таком виде -- пости на пастубин.

>>43318
За каким хуем вообще втыкают ченнелс в джангу, если можно сделать отдельный сервис на асинхронном фреймфорке типа того же торнадо? Вебсокеты это уже событийное программирование, а это не прерогатива джанги.
247 1447313
Аноны, есть вопрос.

https://pastebin.com/UF6hPZVZ

Дело в том, что мне надо, что бы код просто вызвал другую функцию (ge2) в функции (ge), и ничего не возвращал. Как мне это сделать?
248 1447315
Подскажите какие плагины мастхев или просто очень хорошие для pycharm? Например можно сделать автодополнение хотя бы примерно как в саблайме?
249 1447316
>>43318
Вот тебе две ссылки - должно помочь в понимании асинхронки. Вторая это часть цикла.

http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html#fnref2

https://ruslanspivak.com/lsbaws-part1/
250 1447319
>>47313

>return list


Убери ретурн тогда. Строго говоря в питоне функции всегда возвращают что-то. Если явно не указан ретурн, тогда возвращается None
251 1447320
>>47302
Все сильно поменялось с тех времен. Концепция та же, но инструменты изменились
252 1447322
>>47315
kite?
253 1447334
>>47319
Спасибо, буду думать
doge.png779 Кб, 1366x656
254 1447470
Братишки, сосу хуйца, как полагается всем, кто хочет стать великим программистом. На данный момент хуец состоит из нескольких индусских циклов.
https://pastebin.com/kmTCkz2X
Хочу понять принцип, а именно почему после итерации в подцикле с 9 по 11ую строчки интерпретатор улетает в самое начало цикла на первую строку, а не продолжает бегать по подциклу, а потом спускаться ниже и ниже. ЧТО НЕ ТАК С ОТСТУПАМИ БЛЯТЬ? простите
255 1447484
В vs code норм с питоном работать или лучше ставить для него что-то отдельное?
256 1447492
>>47297
Ну ребят, ну чё за приколы, почему второй поток не стартует?
257 1447496
>>47470
Что на вход подаешь и что пишет?
Что эта хуита вообще делает?
Если при входе в цикл x не a, b или c, то он так и будет бегать, потому что ты i не меняешь.

Если ты хочешь посчитать все вхождения каждого элемента из трех, сделай нормальный проход по коллекции:
for element in x:
...
а не байтоебский.
258 1447512
Изучаем пайтон Лутца 5-е издание ещё сохраняет актуальность? Если нет, то чем заменить? Вроде как эта самая новая книжка в шапке, но ей уже 6 лет, что вроде как не малый срок.
259 1447546
>>47492
Что такое bot.polling и почему бы подставляешь вызов функции, а не саму функцию? Если ты вызываешь функцию, то в target будет записан результат вызова (предполагаяется что ещё какая-то функция, которую можно вызвать), и только потом стартует процесс
260 1447554
>>47316
Вторая вообще не про асинхронку, там про низкоуровниевую работу с сокетами, что-то про HTTP, а потом они не к селектам идут, а к форкам.

Первая тяжеловеская и с устаревшим синтаксисом, там asyncio.coroutine / yield from. Ну может если через генераторы разбирать внутреннее устройство асинхронной работы и нормально, глубже понимание будет, но это тяжёлый путь и опыт хороший нужен в питоне. В том числе с теми же генераторами, с работой с select, и т.п., а это серьёзный уровень.
261 1447595
>>47554
Обе ссылки объясняют простую вещь - высокопроизводительный веб-сервер реализуется на основе событий операционной системы. А первая объясняет что корутины в контексте asyncio это синтаксический сахар над callback-ами которые задаются таким событиям в качестве обработчиков.
262 1447598
>>47546
Это функция, которая слушает команды юзера, которые он боту в чат кидает
263 1447610
>>47546

> почему бы подставляешь вызов функции, а не саму функцию?


Блять, спасибо, что навёл меня на решение. Ты лучший
264 1447613
>>47470
Какой у тебя там подцикл с 9 по 11 строчку? Если условие после if имеет значение True, то он просто выполнит две следующие строчки кода, а код, следующий после else, выполняться по очевидным мне причинам уже не будет.
265 1447626
>>47595
Это тяжеловесно, ненаглядно, через это трудно продраться. И насколько я понимаю, в будущем от этого уйдут, внутренняя реализация может быть другой. Уже сейчас yield from и async не очень совместимы в одной функции.

Вообще, это сложная вещь, чтобы с этого начинать.

https://www.youtube.com/watch?v=MCs5OvhV9S4

Вот тут лекция на ютубе, на английском, где поясняется на примере вся история с асинхронности, причём и на примере потоков, и на примере генераторов. Намного более наглядная, чем этот текст.

Но генераторы-корутины ещё очень небольшая часть от asyncio. Там больше магии с разными сущностями (корутины, Future, Task, scheduler (планировщик), event loop, event loop policy), идеи плохо расписаны, что ключевое, что нет.

Я бы вообще советовал тем, кто на JS немного пишет, разобраться с асинхронностью там для начала. И с коллбэками, и с промисами, и с async/await. После этого понять питон будет проще. В питоне модель асинхронности сложнее, хотя сейчас её упрощают специально. В 3.7 уже можно просто писать, не погружаясь в технические детали. А в 3.5-3.6 уже сложнее, в 3.4 какой-то полный ад.
266 1447677
Пацаны, не обосыти, а помогите! Только начинаю осваивать питон.

У меня есть 2 списка: files, language

Мне нужно внутри цикла (for element in files:) перебирать еще и список language

Как правильно написать это?

directory = '/Users/Desktop/pythom/upload/'
files = os.listdir(directory)
language = ['english', 'russian', 'spanish']

for element in files:
print(directory+element)
267 1447681
>>47677
Ну внутри цикла и перебирай, сделай внутри цикла ещё один цикл но уже по второму списку.
268 1447685
>>47677
Каким образом тебе его нужно перебирать? Что нужно делать с элементами списка language?
Первое, что приходит на ум с таким количеством данных:
for element in files:
____for lang in language:
________<какая-то операция>
____<какая-то операция>
269 1447687
>>47626
Это хорошая база чтобы начать.

И да, это видео я в свое время тоже видел и оно мне ответов на мои вопросы не дало. Поэтому я скинул эти ссылки, а не это видео.

Ну и тогда уж можно было бы скинуть версию с переводом
https://www.youtube.com/watch?v=ys8lW8eQaJQ
270 1447688
>>47681
Всё братишка, я тупанул, спасибо!
271 1447689
>>47685
Да, спасибо, так и сделал. От души!
272 1447690
>>46928
асемблер
273 1447693
>>47470
PEP 8 по отступам
я нихуя не понял что это за код и что он делает
274 1447706
>>47693
Человек явно недавно вкатываться начал, а ты ему уже про PEP 8.

Код, если я не ошибаюсь, всего-навсего считает количество 'a', 'b' и 'c' в строке x.
275 1447711
Ультра-нубас снова на связи.

Я получаю все docx файлы из директории:
files=glob.glob("/Users/gobsek/Desktop/pythom/bookstoupload/.docx")

Абсолютный путь пытаюсь заменить на относительный

print (os.path.dirname(os.path.abspath(__file__)))
Получаю /Users/gobsek/Desktop/pythom

Как мне совместить:
os.path.dirname(os.path.abspath(__file__)) + /bookstoupload/
.docx

Чтобы на выходе получить, что glob ищет все файлы docx в папке bookstoupload по адресу os.path.dirname(os.path.abspath(__file__))
276 1447712
>>47711
Вот так работает, но это костыль же, верно?
И я не понимаю каких-то совсем основ

path = os.path.dirname(os.path.abspath(__file__))
files=glob.glob(path+"/bookstoupload/*.docx")
277 1447722
Пацаны, а тут по селениум по хардкору поясняют или нахуй шлют?
278 1447725
>>47722
А что тебе надо?
4605b7cf7e1ab87ab90446b814503224-1400.jpg413 Кб, 2240x1400
279 1447726
>>47496
Это задача на нахождение символов a, b, c в строке. Строка вида "aaaabbbbcba"
Объясните пожалуйста неофиту, что есть

>нормальный проход по коллекции


и
байтоебский [проход по коллекции(?)]
>>47706
ДА! Моя хуйня оказывается читабильна. вкатываюсь чуть больше месяца хз где менторов искать, вот пришёл на двощ, ведь здесь все мои друзья

>>>1447613


Моя теория была такова:
- Сначала цикл бегает 2 и 4;
- Потом выполняется условие else, и начинается подцикл между 9 и 11;
- Потом работаетусловие else на строке 12, и идёт следущий подцикл

Но после выполнения первой итерации на подцикле 9 - 11 строки у меня интерпретатор уходит на первую строку. Не могу понять почему.
280 1447731
Не разбирусь как логгировать все ошибки?

Вот в консоле мне пишет ошибку, всё заебись. Как это всё в файл направить?

Пока придумал только py мойскрипт.py > log.txt

Но это же костыль. Смотрю на модуль logging и нихуя не пойму, честно говоря.
281 1447733
>>47731
в документации к logging есть пара статей-туториалов.
282 1447734
>>47726
Напиши условие задачи.
283 1447737
>>47733
Там написано сделать вот так и будет заебись

logging.basicConfig(
level=logging.INFO,
filename='app.log', filemode='a')

но нихуя не заебись, пустой файл имею
284 1447738
>>47737
Покажи весь код.
285 1447739
Поцоны, подскажите нубу:

class Stand:

def __init__(self, name):
self.name=name

stand1=Stand('stand1')
stand2=Stand('stand2')
stand3=Stand('stand3')
stand4=Stand('stand4')

class File:

def __init__(self, name, stand):
self.name=name
self.stand=stand

file1=File('file1', stand1)
file2=File('file2', stand2)
file3=File('file3', stand3)
file4=File('file4', stand4)

class Request:

def __init__(self, name, file):
self.name=name
self.file=file

send = Request('send', [file1, file3])
resend = Request('resend', [file1, file2, file3, file4])
delete = Request('delete', [file4, file3])

На вход получаем атрибут name класса Stand и атрибут name класса Request. В результате я должен получить объект класса File, который соответствует заданным значениям. Как это правильно реализовать?
285 1447739
Поцоны, подскажите нубу:

class Stand:

def __init__(self, name):
self.name=name

stand1=Stand('stand1')
stand2=Stand('stand2')
stand3=Stand('stand3')
stand4=Stand('stand4')

class File:

def __init__(self, name, stand):
self.name=name
self.stand=stand

file1=File('file1', stand1)
file2=File('file2', stand2)
file3=File('file3', stand3)
file4=File('file4', stand4)

class Request:

def __init__(self, name, file):
self.name=name
self.file=file

send = Request('send', [file1, file3])
resend = Request('resend', [file1, file2, file3, file4])
delete = Request('delete', [file4, file3])

На вход получаем атрибут name класса Stand и атрибут name класса Request. В результате я должен получить объект класса File, который соответствует заданным значениям. Как это правильно реализовать?
286 1447740
>>47738
import os
import glob
import logging

path = os.path.dirname(os.path.abspath(__file__))
logging.basicConfig(
level=logging.DEBUG,
filename=path+'/app.log', filemode='a')

def main():
files=glob.glob(path+"/bookstoupload/*.docx")
language = ['english', 'russian', 'spanish']
print (files)

for element in files:
for lang in language:
print(element)
print(lang)
f = open(path+'/books.txt', 'a')
f.write(os.path.basename(element) + " " + lang + " "+ "DONE"'\n')
f.close()
os.remove(element)
f = open(path + '/books.txt', 'a')
f.write(os.path.basename(element) + " " + "REMOVED"'\n')
f.close()

main()
286 1447740
>>47738
import os
import glob
import logging

path = os.path.dirname(os.path.abspath(__file__))
logging.basicConfig(
level=logging.DEBUG,
filename=path+'/app.log', filemode='a')

def main():
files=glob.glob(path+"/bookstoupload/*.docx")
language = ['english', 'russian', 'spanish']
print (files)

for element in files:
for lang in language:
print(element)
print(lang)
f = open(path+'/books.txt', 'a')
f.write(os.path.basename(element) + " " + lang + " "+ "DONE"'\n')
f.close()
os.remove(element)
f = open(path + '/books.txt', 'a')
f.write(os.path.basename(element) + " " + "REMOVED"'\n')
f.close()

main()
288 1447748
>>47743
Ну вот смотри, у тебя в условии не сказано, что могут быть только символы a, b, c, сказано что надо учитывать регистр, то есть могут быть варианты AaaRtQppQbccccCcr и т.п.

Поэтому ты не может так явно сравнивать. Идея решения такая:
1) ты заводишь переменную "последний символ" и счётчик. Если текущий символ в последовательности такой же, как последний, увеличиваешь счётчик. Если же другой, выводишь "последний символ"+"счётчик", обновляешь переменную "последний символ", присваиваешь значение счётчику = 1.

2) тут тонкости с тем, как стартовать цикл и с тем, как его завершить, чтобы не потерять последнюю группу символов. Несложно, но надо сделать. Разные способы есть.
289 1447757
>>47748
С регистром вроде вопросов нет.
1) Погоди, "последний символ" это литера, которую в данный момент проверяет программа? Кстати, поясни почему счетчику нужно присвоить значение 1, помню, что я до этого как-то дошёл сам, но потом забыл. Почему не 0?
2) В моём полном коде есть len(s), я ее как раз таки сделал, чтобы на последнем символе цикл прекратить.
290 1447762
>>47757

>В моём полном коде есть len(s), я ее как раз таки сделал, чтобы на последнем символе цикл прекратить.


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

Мне просто в принципе не нравятся лишние проверки в цикле, не очень нужные и разовые. Слёту, можно такой вариант сделать:

seq = "aabbDDcdadfddsssasdfa" # мы закладываемся, что длина ненулевая
count = 0 # перед стартом 0, чтобы корректно начать цикл
prev = seq[0]
for symbol in seq:
if symbol != prev:
print("{}{}".format(symbol, count))
prev = symbol
count = 1 # У нас уже есть один новый символ
else:
count += 1
else: # это условие будет выполнено по окончании цикла, особенность питона
print("{}{}".format(symbol, count))

Не запускал, прямо здесь набил, но по идее должно работать.
291 1447769
Блядь, так как эти ебанные ошибки логировать в файл. Пиздос, уже индуса просмотрел, нихуя не понял.

Я что при использовании import logging должен сам расставлять вот эти хуевины в коде? А если не расставил, то хуй мне, а не логи?
logging.debug("This is a debug message")
logging.info("Informational message")
logging.error("An error has happened!")

Что нет готовой библиотеки/модуля, чтобы все ошибки записывать в файл? Не может же быть такого
292 1447786
>>47726

>Объясните пожалуйста неофиту, что есть


>>нормальный проход по коллекции


Смотри, пусть у тебя есть список xs, тогда просто пройтись по нему от начала до конца идиоматично можно так

for x in xs:
print(x)

А можно представить, что это массив в языке си и делать так:

for i in range(len(xs)):
print(xs)
i += 1

или даже

i = 0
while i < len(xs):
print(xs)
i += 1

Это правильно, но не так хорошо читается.

По задаче отступы правильно, но ты не во всех ветвления прибавляешь единичку и индексу. Если бы ты сделал плоский свитч (if .. elif .. elif .. else) это было бы проще отловить.
293 1447787
>>47786

>print(xs\[ i \])

7705.jpg111 Кб, 800x360
294 1447788
Требую эту картину на ОП-пик!
295 1447792
>>47712
Нормально, но pythonic-way - это использование библиотеки pathlib при работе с путями:

from pathlib import Path

path = Path(__file__) / 'bookstoupload'
files = path.glob('*.docx')
296 1447869
скиньте чатик питонистов в тележке
297 1447872
Хелпаните плз. Не могу понять как использовать классы дада, я тупой. Например как это сделать с классами и сохранением изменённого словаря. https://pastebin.com/T7hrSdJf
298 1447884
>>47872

class MyClass:

def __init__(self, my_dict):
self.my_dict = my_dict

def add(self, key, item):
self.my_dict[key] = item

def delete(self, key):
del self.my_dict[key]

def search(self, item):
return self.my_dict.get(item)

def show(self):
for k, v in self.my_dict.items():
print('{}: {}'.format(k, v))

my_dict = {'name0': 'number0', 'name1':'number1', 'name2':'number2'}

m = MyClass(my_dict)
# m.show()

m.add('name99', 'number99')
# m.show()
m.delete('name0')
#m.show()
print(m.search('name99'))

остальное сам сделай
298 1447884
>>47872

class MyClass:

def __init__(self, my_dict):
self.my_dict = my_dict

def add(self, key, item):
self.my_dict[key] = item

def delete(self, key):
del self.my_dict[key]

def search(self, item):
return self.my_dict.get(item)

def show(self):
for k, v in self.my_dict.items():
print('{}: {}'.format(k, v))

my_dict = {'name0': 'number0', 'name1':'number1', 'name2':'number2'}

m = MyClass(my_dict)
# m.show()

m.add('name99', 'number99')
# m.show()
m.delete('name0')
#m.show()
print(m.search('name99'))

остальное сам сделай
300 1447912
>>43245 (OP)
Какая сейчас примерная зряплата для вкатывальщиков(в ДС)? Насколько трудно найти работку, если в приоритете не веб?
Есть примерно год опыта ковыряния по вечерам своего кривого проекта на джанге и пандасах. Олсо до этого несколько лет кодил на плюсах, но это было давно и неправда.
301 1447916
>>47884
>>47885
Спасибо, наконец-то разобрался.
302 1447991
https://pastebin.com/QSSd0dC2
Как сделать этот уебищный кусок кода c проверкой нескольких условий более красивым и лаконичным?
Использовать обратный слэш в питоне это вроде как зашквар и признак нуба.
image.png6 Кб, 290x218
303 1447999
Нуб уже который раз в треде. Как реализовать создание нового экземпляра уже с новыми параметрами на месте старого в теле method?

>> f = Foo(1, 2, 3)


>> f


<какой-то объект Foo с атрибутами 1, 2, 3>

>> f.method(2, 2, 8)


>> f


<какой-то объект Foo с атрибутами 2, 2, 8>
304 1448003
>>47991
Первое, что пришло в голову: if last_sym not in (",", ":", "=", "--") and len(line) > min_len.
305 1448005
>>48003
Да, точно. Я осёл.
306 1448018
>>47991
Как, блять, вообще один последний символ может быть равен двум '--'. Почему last_sym = line[-1:] А не просто last_sym = line[-1]
307 1448022
>>48018
Да никак, это я по невнимательности проебался чутка.
308 1448037
>>47999
Ты хочешь вообще все переинициализировать? Тогда наверное лучше сделать f = Foo(2, 2, 8), так понятнее, что ты пересоздаешь объект. Если хочешь часть атрибутов поменять, то просто в методе это и делай
def method(self, a, b, c):
self.a = a
self.b = b
self.c = c
309 1448040
>>47991

>Использовать обратный слэш в питоне это вроде как зашквар и признак нуба.


Иногда без него никуда не деться, если надо - используй и никого не слушай потом может быть отрефакторишь
image.png8 Кб, 267x225
310 1448056
>>48037
Пожалуй, подобный способ для моих целей подходит даже больше. Спасибо.
Впрочем, и по своему вроде удалось реализовать.
311 1448067
Хай питонач, есть тут кто, кто шарит за апи телеги? Вопрос какой, можно ли сделать так, чтобы добавив бота и написав ему команды, бот самостоятельно отправлял какие то новости итд итп в личку? Можно ли как-то узнать идентификатор беседы юзера и бота или самого юзера?
312 1448068
>>48067
легко

sendmessage есть метод, указываешь юзверя, бот отправляет по @id-шнику ну или по числовому, надо его отдельно узнавать
313 1448073
Привет, анон-питон. Подскажи плиз фреймворк/либу для разворачивания простейшего сервака с парочкой роутов.

Надо получать форму с чекбоксами по одной из урлов и после получения запускать скрипт.

Короче нужно типа этого, с минимальным количеством строк и конфига, т.к это одноразовая хуйня для тестирования хуеты на другом ЯП.

def my_hanler(req):
print(req)

server.start()
server.listen(/api/huyapi/, my_handler)

Обнял того, кто наведет на путь истиный.
314 1448078
>>48073
Ответ формы можно хоть через import http.server сделать.
А так - бери Flask, ещё никто не жаловался на него.
315 1448079
>>48078
Спасибо, наверное import http.server возьму. Фласк излишен будет, мне там в прямом смысле 10 строк кода нужно - схоронять данные из формы в текстовый файл и больше ничего не делать
316 1448104
Хело, ананасы.
Я в программировании вообще абсолютный нюфаг, в свое время баловался на начальном уровне CSS+HTML, шо как бы намекает, что я далеко не программист.
Так вот, возникла внезапная необходимость собрать кое-какую хуевину...
Существует огромный, сцуко, файл *.docx на почти тысячу страниц, состоящий из множества таблиц, в каждой из которых перечисляются люди, учащиеся на одной специальности, но в разных шарагах, и небольшого описания к каждой из них. В каждой таблице пять столбцов (на деле не совсем так, но для простоты представим). Первый столбец - номер строки, второй - id-число, третий - ФИО персонажа, четвертый - численное значение балла на экзе, пятый - трехзначный номер заведения, в котором персонаж состоит.
Так вот, надо каким-то образом научить железный ящик выбирать из этого файла только персонажей из конкретной шараги и сохранять в отдельный файл, желательно - с группировкой по специальностям.
Звучит совершенно не сложно, кажется (кроме этапа с подключением .docx файла), но у меня, как у человека, который в пайтоне только задачки на питонтьюторе решал, попытка представить принцип работы целиком вызывает когнитивный диссонанс.
Так вот, товарищи, поделитесь, пожалуйста, как такую хрень можно вообще реализовать? Каким вы видите подобный скрипт? За любую информацию буду благодарен люто-неистово, только дайте направление, куда копать. Если в чем-то я проебался и это что-то нереализуемо - скажите, пожалуйста, что именно, что теперь делать-то вообще и вообще. И насчет реализуемого тоже что-нибудь скажите, пожалуйста.
Сумбурно, но, как говорится, "часики-то тикают". Заранее спасибо, пацаны.
317 1448107
>>48104
Нахуя тебе питон для этого? VBA для кого придумали?
318 1448118
>>48107
Вооот, уже ответы пошли. Люблю анона. Попиздил гуглить, что это такое.
Насчет пайтона - хуй знает, нравится он мне почему-то))9
Давно хотел заняться изучением, а тут вот такая необходимость возникла, я и загорелся чет. Но если на нем я слишком заебусь этим заниматься, то ладно, можно отложить, думаю.
А на этой твоей хуйне мою хуйню будет сильно геморно склепать?
319 1448119
>>48118
Вах, ебац, типа прям с вордом работать умеет. Благодать. Покурю.
А в принципе если отмести тот факт, что мне нужно работать именно с *.docx, на пайтоне это реализуемо?
big1544750217Anime2.png143 Кб, 360x360
320 1448123
>>48104
мне кажется легче в sql все записать, спарсить всё и записать

https://github.com/python-openxml/python-docx/issues/13

там даже какой-то полуготовый ответ лежит, мельком глянул
парсишь таблицы и все запихиваешь в базу sql
321 1448124
>>48119
Можно и через питон, но нахуя, если микрософт тебя прямо в ворд всё запихали.
322 1448138
>>48068
благодарю анончек, посмотрю! Счастья и здоровья тебе
323 1448140
>>48123
Оп, охуенно. Полностью ещё не прочитал, но выглядит полезно. Насчет SQL тоже покурю утром, попытаюсь вникнуть в твою мысль, анонче. Спасибо за годную ссылочку.
324 1448143
Анон, поясни в чём разница между

class MyClass:

____test = 0

и

class MyClass:

____def __init__(self, test):
________self.test = test

Когда и что юзается и какие есть подводные?
325 1448146
>>48143
В первом случае у тебя переменная общая на весь класс, то есть глобальная, во втором у каждого объекта своя переменная.
326 1448151
>>48119
Вся работа тут в подключении docx, парсинге данных, обработке разных исключительных ситуаций и наступании на потенциальные грабли. То есть 90% работы будет в том, чтобы загнать этот docx в какую-нибудь нормальную питон-структуру. А там уже можно легко и быстро данными манипулировать.

Тут реально от питона ничего.
327 1448235
Есть парочка вопросов по телеге.

Вот добавил я бота, написал ему, например, что хочу читать такой-то тред и приложил ссылку на него. Бот обработал запросик и начал слать ответь анонов. Эти ответы будут видеть все пользователи бота или именно тот пользователь, что написал ссылку треда? Если все ,то можно сделать работу бота по каждого пользователя, а не под всех?
328 1448241
>>48235
скинь код, как можно без кода понять кому бот шлет сообщение
329 1448244
>>48241
я не про свой код. Я спрашиваю реально ли сделать то, что я хочу?
330 1448245
Я правильно понимаю, что стоит делать бота для телеги без использования библиотек? Ну чтобы учиться с API работать и всё такое?
331 1448257
>>48245
Нет, делай через либы, если таковые есть, если нет, то ебаш через реквесты
332 1448271
>>44903
Выкатывается в тред нуб. Вообще можно через in range это оформить.
333 1448365
>>48235
так ты же шлешь ответы КОНКРЕТНОМУ челику, а не всем подряд
334 1448369
>>48365
не кричи, мать. Почитал доки и понял, что высрал хуету
335 1448385
>>48369

>Почитал доки


Ебать ты экстремал
336 1448390
>>43442
Ты чё бля гонишь? Паразит!

def pizda(a, b, i, N):
return (((aN)+(bN)+i)*2)-a
337 1448395
Щас работаю линукс админом, думаю стать питон макакой. Какие подводные? Не поздно ли делать перекат в 24 года?
338 1448397
>>48395
Иди нахуй, дебил, весь раздел своей парашей засрал.
Поздно уже, ты слишком тупой.
339 1448439
>>48395
Подводных никаких, не поздно.
340 1448443
>>48056
Ну это почти то же самое, что и a = Foo(5), только неявно, а питонодзен говорит, что явное лучше неявного, так что смотри, не отстрели себе ничего.
341 1448487
Поясните за сокеты, плз.
Допустим, есть приложение на джанге. В это приложение хуйня на ардруине шлет гет запросы через форму и записывает их в базу. На другой странице они рендерятся в хтмл. Возможно ли с сокетами сделать асинхронное обновление этих записей, на странице которые они рендерятся, чет никак не могу понять? Потыркался в аякс, но там немного не то что мне нужно, там данные обновляются с указанным интервалом. А мне надо как только прилетело новое значение на сервер - оно сразу же отрисовалось у клиента
342 1448503
>>48487

> А мне надо как только прилетело новое значение на сервер - оно сразу же отрисовалось у клиента


ZMQ/RabbitMQ
343 1448507
>>48503
Спасибо, буду в этом направлении рыть. Юзать это все равно с каким нибудь асинхронным фреймворком типа Celery, да?
344 1448512
>>48507

> асинхронным фреймворком типа Celery


> фреймворком


Это не совсем так.
Смотря какая у тебя архитектура там вообще, можешь с Селери, можешь отдельно.
345 1448585
>>48512
Да у меня там нет ничего толком. Все просто, уровень не выше чем бложек из мануалов.
Ладно, спасибо за наводку. Добра.
87fb13120a0f91725ba748eab968334a.png217 Кб, 412x500
346 1448609
Есть ебучий датафрейм.
В ячейках одного столбца есть ебучие кортежи, причем ключи там примерно одинаковы.
Как вычленить этот сраные кортежи, так чтобы ключи стали новыми столбцами, а значения - значениями столбцов?
347 1448805
Хайль питонисты. Язык очень люблю, мне нравится на нём писать, да и опыта уже не мало. Но я не люблю веб, не люблю датасайнс и прочие математические приблуды...
Мне нравится писать что-то, что используется повседневно, я был бы счастлив участвовать в разработке ворда, клиента стимача, Файерфокса и тому подобного.
На данный момент я использую питон для разработки игор (но мне просто повезло, что есть финансирование. Не уверен, что если его перекроют я найду аналогичную работу) и для автоматизации задач (что своих, что помогаю девопсам в крупной ИТ компании из спб).

Есть вообще при таких раскладах смысл продолжать задротить питон? Или стоит заняться джавой (которую я тоже люблю)? Или вообще уйти на C# (к языку претензий не имею, кроме того, что методы начинаются с большой буквы, а вот VS я непереношу. Но, наверное, можно привыкнуть)?

Ваше мнение?
348 1448887
Хай питонач, написал я бота и залил его на пайтонэнивер, запустил и вроде работает, но бот принимает только команду /start, ни на что другое не реагирует, хотя вебхук установлен. Пробовал вырубить /setprivacy, но ничего не помогло. хелп. Прилагаю скрины.
350 1448911
>>48888
Чо за говно?
351 1448912
>>48911
мне не твое мнение нужно, а что сделатЬ, чтобы заработала.
ебучий зуммер
352 1448918
>>48912
Попробуй сосать хуи
353 1448920
>>48918
порвался, либераха

Ты вместо своих высеров помог бы брату питонисту
354 1448926
>>48918
хахах, я даун. Я не тот файл редаичил, что запускался.
355 1448958
>>48805
Си-сярп хорош для геймдева, бери его !
image.png2,2 Мб, 1508x932
356 1448961
>>48805
Можешь попробовать какой нибудь Рygame или Pyglet. Но сишарп пока что кажется более лучшим решением.
357 1448968
>>48920
>>48926
Вот видишь, стоило пососать хуи - и все сразу получилось.
358 1448970
Как заставить эту хуету вернуться к началу цикла вхиле, а не переспрашивать, хочу ли я продолжить?

def user(nickname, name, last_name):
"""Собирает в словарь информацию о пользователе и выводит её"""
while True:
user_info = []
user_info.append (name)
user_info.append (last_name)
user_info_array = {}
user_info_array [nickname] = user_info
for nname, uinfo in user_info_array.items():
print(nname, uinfo[0], uinfo[1])
quit = input ('do u wona quit? ')
if quit == 'no':
False

nickname = input ('Enter ur nickname ')
name = input ('Enter your name ')
lastname = input ('Enter govnour lastname ')

user(nickname, name, lastname)
359 1448972
>>48970
Пробелы проебалися, извините
360 1448974
>>48970
>>48972
Хлебушек я, совсем не так делаю. Вопрос отзывается
361 1448975
>>48970
Могу предположить, что вместо "False" нужен "break".
В следующий раз выкладывай на pastebin. Облегчишь задачу и себе, и другим.
362 1448976
>>48975
Не помогает бреак, и вообще там я неправильно в словарь никнеймы складываю
363 1448977
>>48970
А что ты такое хочешь сделать? По факту у тебя в функции вечный цикл, из которого нет выхода.
364 1448979
>>48977
Нихуя не вечный, и хуй знает что я делаю. Дошел до функций в учебнике и захотел немножко забежать вперед без подсказок автора
365 1448982
Ага, вот
366 1448999
А в пизду, зря только мозг себе вынес. Пойду дальше читать
367 1449007
>>48979
Как же не вечный, если вечный? Твоё
if quit == 'no':
____False

не сделал для его остановки ровным счётом нихуя.
368 1449009
>>49007
Если написать NO, то один хуй выйдет из цикла, просто проебался со значением. Вон на картинке более менее нормально сделал, например
369 1449011
>>49007
Ты не понял походу, я хотел анально заставить вернуться питон в начало цикла вхиле, чтоб оно запрашивало ввод с никнейма, нейма и ластнейма по новой.
370 1449027
>>49011
Для этого у тебя инпуты из промта должны быть внутри цикла, иначе как ты введёшь новую информацию? Один раз ввёл и всё, функция твоя раьотает только с уже введёнными данными
371 1449028
>>49027
Ааааааа, сука, блядь. Спасибо
372 1449043
>>48982
Нахуя ты везде пробелы перед скобками ставишь? Тебе даже среда говорит, что ты еблан и что-то делаешь не так.
373 1449044
>>49043
Понял, принял. А я то думал чего это он выёбывается
374 1449054
>>49044
Загугли как делать reformat code в твоём редакторе и делай регулярно. Таким образом легко изучишь pep 8
375 1449165
PyQt5 юзал кто-нибудь?
Делаю кнопки, и у них коллбек с опциональным аргументом (какие-то кнопки передают его, какие-то нет).
Коллбек типа такого:
def onClick(self, opt_arg=None):
И в общем когда делаю проверку этого optarg внутри функции, то он внезапно возвращает False вместо None, хотя пока никто и не передает туда ничего.
В чем косяк? Нормальных доков по кути на питоне не нашел, поэтому хз какая там сигнатура.
376 1449168
>>49165
Бля, там в кликед еще передается чекед зачем-то.
https://doc.qt.io/qt-5/qabstractbutton.html#clicked
Хотя во всех примерах пишут button.clicked.connect(partial(calluser,name)) и в коллбеке не смотрят никакой чекед, хуйня какая-то.
377 1449185
>>49168
Питонач на помощь.

У меня есть функция, которая парсит всякое и отправляет их куда мне надо. Как мне сделать так, чтобы все повторялось? Кстати, все это надо отправлять нескольким людям, повтор отправки для всех разный и что отправляется тоже. Как реализовать отправку по времени, нужно ли использовать классы для этого?
378 1449188
>>49185
Сделай циклом.
Что-то возможно стоит отдельными тредами сделать.
По времени надо таймеры смотреть или системную дату.
Задача не понятна нихуя.
379 1449192
>>49188
крч, поступает запрос от пользователя, тип пропарси сайт и таких пользователей много, у каждого свои хотелки. Но смысл один, прога парсит сайт и повторяет это каждый час, например. Вот первый юзер пишет пропарси хх.ру и это в 14:00, получает результаты и через час бот снова их отправляет.
второй пользователь пишет в 16 часов и бот должен в 17 ему снова отправить результат.
380 1449195
>>49192
Ну хз, храни пул ивентов, которые надо обработать. При запросе добавляй в пул инфу. В каком-то треде крути проверку ивентов.
Или при запросе тупо на таймер вешай событие, а при отправке снова его засекай.
Если это веб-сервис или тг-бот, там мб какие-то свои еще приколы есть.
381 1449198
>>49195
где хранить, в бд?
382 1449201
>>49198
Если надо долгосрочно, то скорее всего да.
383 1449228
>>49185
>>49192
Тебе нужны менеджеры задач, типа Celery и проще.

Архитектурно: интерфейсный модуль получает от пользователя задачу и складывает в очередь сообщений, например просто в БД в виде строки или объекта
"parse sweet-wet-pussy-cats.com 01:08:2020 14:00"
одновременно у тебя крутится несколько процессов-воркеров, они сканируют эту очередь задач, забирают, выставляют флаг "выполняю". Как сделают, записывают итоговый результат куда-то, в файл или БД, выставляют флаг "выполнено" и ссылку на результат.

Обмен заданиями/сообщениями можно делать через БД, это самое простое. Или использовать специальные брокеры обмена сообщений и/или менеджеры задач, от простых вариантов до энтерпрайз решений. Я бы рекомендовал начать или с обмена через БД, или с максимально простых брокеров, навроде такого: https://huey.readthedocs.io/en/latest/ потом поймёшь, что тебе надо и на каком уровне, нужен ли серьёзный инструмент и какой.
384 1449237
>>49192
>>49188

celery + celerybeat
232131231223.png10 Кб, 466x218
385 1449242
????????????????????????????????????????
Почему цифры работают а буквы нет!?!??!?!!?!?
386 1449244
>>49242
Тебе не нужно заниматься программированием. Пойти в охранники, оставь программирования омежкам-задротам, которые понимают, чем имя переменной отличается от её значения. Например чем имя переменной отличается от строки.
387 1449245
>>49244
Не останавливай меня на пол пути! Я такой же сыч как вы!!! Я хочу научиться прогромировать! Так почему не работает?
388 1449247
Ну всё я понял, оказывается нужно было сделать ""
389 1449279
>>49242
В кавычки возьми и пиши на третьем питоне.
390 1449305
>>49242
print (pidor % ('pidor', 'huila'))
А вообще советую третий питон: 'you are {0} or {1} ? '.format('pidor', 'huila') или ещё проще f'{переменная со строкой №1} or {переменная со строкой №2}'
391 1449306
Анон, я знаю что нужное мне решение существует, но не знаю как его гуглить.
Есть пользовательский ввод команды по типу
command [-flag] [-flag ("attribute")]
Как сделать обработку команд красиво? А то единственное что в голову приходит -- разбить в массив строку по пробелам, собрать те части, что с кавычками используя остаток от деления надвое, потом искать все, что начинается с - и проверять на наличие атрибутов (кавычек)
392 1449310
>>49306
В стандартной библиотеке питона есть модуль argparse
393 1449317
>>49279
>>49305
В смысле "третий питон"? Где его скачать? Я вроде последнюю версию качал, если что.
394 1449354
>>49237
>>49228

Вот же бля, сложновато. Придется доки читать и вникать. Благодарю. Думал сделать быстро, но придется попотеть.
кст, а можно будет сделать таски ассинхронными?
395 1449370
>>43245 (OP)
Помогите решить проблему. Изначальная задача заключается в том, что из CSV файла беру данные и создаю массив с помощью numpy.array(на первом пике) и необходимо посчитать скользящую среднюю по последнему столбцу, после чего добавить столбец состоящий из чисел скользящей средней в изначальный массив. В интернетах нашёл следующий способ расчета скользящей средней(на втором пике), однако этот код вообще ничего не выдаёт. И даже если как-то сделать, что этот код заработает, как его адаптировать допустим для массива, который закоментен во второй строке на втором пике, потому что я уже несколько часов пытаюсь как-то манипулировать этим массивом, но все время ошибки связанные с типами данных. Вот код для средней:
import numpy as np
# a=np.array([[1.1], [2.2], [3.3], [4.4], [5.5], [6.6], [7.7]])
def moving_average(a, n=3) :
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1:] / n
a = np.arange(20)
moving_average(a)
396 1449377
>>49354
Разрешаю.
397 1449412
>>49370
Не углублялся в задание, но твоя программа ничего не выдаёт, потому что ты результат работы функции ни сохраняешь, ни вводишь через print.
398 1449414
>>49412
выводишь*

быстрофикс
399 1449433
Сап 2ch, подскажи годных видео-уроков по Kivy.
400 1449449
>>49412
Да, я даун, вроде вторую неделю уже учусь и почему-то подумал, что он щас без принта выведет всё.
402 1449470
>>49354
С помощью celery они как раз и будут выполняться в фоне
404 1449475
>>49470
Сначала попробую на RabbitMQ сделатЬ, вроде полегче. Посмотрим. буду обращаться ,если словлю тупняк
405 1449556
Запилил свой первый пет-проект, стоит сюда выкладывать? Боюсь, что меня здесь затроллят и обосрут так, что мне уже не захочется дальше учить питон.
406 1449569
>>49556
Кидай. Оценят адекватно, а остальных шли нахуй
407 1449629
https://repl.it/@RaspberryPie/FortunateNegligibleQueryplan

TypeError: put() takes 2 positional arguments but 3 were given
Разве там не 2 аргумента передается?
408 1449631
>>49629
И алсо как вообще понять, что я должен ждать с помощью await, а что нет?
В документации к aiohttp есть пример:
async with aiohttp.ClientSession() as session:
async with session.get('http://httpbin.org/get') as resp:
print(resp.status)
print(await resp.text())
Например resp.text ожидается с await, а resp.status нет. Где прочитать почему?
409 1449635
>>49317
Правильное форматирование строк в третьем питоне такое:
https://docs.python.org/3/library/string.html#format-string-syntax

То, как делаешь это ты - легаси и ты рискуешь все сломать в в определенный момент. Ну и вообще, конечно, лучше сразу учиться делать по документации а не по старым туториалам от васяна.
410 1449636
>>49635
Бля, ну я хз, я вроде качал самую последнюю версию с сайта.

>Ну и вообще, конечно, лучше сразу учиться делать по документации а не по старым туториалам от васяна.


По документации я нихуя не понимаю. И учу по книге "питун для дытей", а это книга 2017 года, вроде не такая и старая.
411 1449637
>>49370
. Внутри пандас уже np.ndarray, зачем тебе в него явно переводить я не понимаю

. Не надо самому городить математические функции, они есть в scipy или в самом пандас:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html

. Не итерируйся без необходимости по нампайным структурам - лучше найди функцию которая сделает это за тебя на си, будет драматически быстрее. Когда работаешь с numpy + scipy + pandas, полезно мыслить вообще не циклами, а потоками данных и редьюсами.
412 1449638
>>49449
Попробуй прототипировать в jupytert notebook, там без принтов выдает.
413 1449639
>>49556
Выкладывать лучше на гитхаб, конечно.
414 1449640
>>49636
Дело не в версии интерпретатора, а в версии синтаксиса, которую ты используешь. Актуальный синтаксис - это format strings, например:
print("I have fucked {name}'s mother.".format(name="Vasya"))

Здесь ты в фигурных скобках пишешь имя переменной, которую подставляешь, потом к строке применяешь метод format(), и в него передаешь, что оименно и всесто какого аргумента ты хочешь подставить. Можно вообще так:
substring_from_above = "!"
text = "Here goes some substring: {}".format(substring_from_above)
print(text)

Ну и совсем сахарок:
salary = 30000000
print(f"Я питонист и зарабатываю {salary:#x}кк/нс")
415 1449641
>>49640
Спасибо, но я к сожалению ничего не понял.
В общем-то та версия интерпретатора на которой я сижу не актуальна? Нужно качать формат стринг?
416 1449643
>>49636

>"питун для дытей", а это книга 2017


Первое издание в 2012.
417 1449645
>>49641
Нет, просто вместо
outstr = "%s pidor"
name = "Vasya"
print(outstr % name)

писать
outstr = "{} pidor"
name = "Vasya"
print(outstr.format(name))

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

Можешь еще сюда глянуть
https://pythonworld.ru/osnovy/formatirovanie-strok-metod-format.html
418 1449647
>>49643
Тут в скобочках написано 2017.
419 1449648
>>49647
Имею в виду, что некоторые вещи из этой книги могли устареть, даже с учетом того, что ее переиздавали.
420 1449657
Здрасьте. Никогда не работал с GUI, всегда довольствовался просто текстом.
Теперь захотел для личных нужд написать кой-че, так что посоветуйте, пожалуйста, модуль для того, чтобы лихо написать программу с графикой (ничего особо фэнси, просто кнопочки, ползунки, чеклисты и поля ввода нужны).
421 1449668
>>49631
В документации всё есть
https://docs.aiohttp.org/en/stable/client_reference.html

coroutine async-with get(url,...

get - это корутина, соответственно её ты или вызываешь с await, ну или оформляешь явно в задачу, но это другая история. Если бы метод был обычным, в asyncio таких много, но в aiohttp.ClientSession вроде таких нет, то их уже надо вызывать обычным способом.

status - это просто свойство.
422 1449681
>>49569
>>49639
https://github.com/bernd32/vk-autoposter/
Извините за кривой английский.
423 1449687
424 1449729
>>49637
Благодарю
425 1449872
>>49681
Хм. А если у меня такого с десяток: скраперы там всякие, утилиты, главное, что с ирл применением, плюс беки для петшопов и имиджборд с хуевым вырвиглазным фронтом, на собеседования есть смысл ходить?
алсо я начал вкат в прогу через кресты, и без задней мысли могу хуячить указатели на указатели на указатели
426 1449893
>>49681
Хунта
Пишешь складно, но как пэт проект супер ущербно
427 1449928
>>49893
В смысле слишком простенько?
428 1449953
>>49928
Да
И это не нужно, что нового ты сделал? Ничего! Это можно найти за 2 мин гугления
Не показывай это работодателю
429 1449974
>>49953

>И это не нужно, что нового ты сделал? Ничего! Это можно найти за 2 мин гугления


>Не показывай это работодателю


Большую часть говна, которое пишут программистишки можно найти за пару минут гугления. Так что пусть показывает, хоть какой-то код лучше, чем ничего.
430 1449980
>>49953
>>49928

Pet-project и не обязан являться чем-то новым, с помощью него ты показываешь потенциальному работодателю свои скилли, сама идея не оценивается (по крайней мере в программировании так).
Но показывать данный проект работодателю не стоит, тут я согласен. Во-первых слишком мало кода и проект слишком простой, во-вторых качество кода оставляет желать лучшего, видно что до джуна не дотягиваешь, причём довольно сильно. Есть, конечно, и положительные моменты: наличие readme, requirements и config-файла (правда ini не самый удачный формат), также хорошо, что есть логгирование и комментарии к коду. Судя по гитхабу это твой первый проект, так что вполне нормальный результат.
431 1449999
>>49953>>49980
В качестве пет-проджекта не годится, понял.
Это моя первая программа на питоне, решил для начала запилить что-то более-менее простое, так как еще не уверен в своих силах.
432 1450006
>>49999

Ну для первого проекта очень даже хорошо, я сначала так и подумал, что проект учебный. Но косяки и недочёты, конечно, присутствуют
433 1450017
>>50006

>Но косяки и недочёты, конечно, присутствуют


Что больше всего смущает?
434 1450063
>>50017

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

>total_lines = sum(1 for line in open(txt_file))


Решение элегантное, но файл нужно закрыть, а лучше вообще использовать контекстный менеджер with при открытии файла (загугли как работать с файлами правильно)

Работа с путями (где проверка на os.name) совсем не pythonic-way. Как минимум есть os.path.join (которую ты использовл выше), а вообще самым лучшим вариантом является использование встроенной библиотеки pathlib.

>requests.get('https://myanimelist.net/anime/' + mal_id + '/a/pics')


Для таких случаев вместо обычной конкатенации лучше использовать f-строки (f-strings), если версия питона 3.6+, тогда и mal_id к строке не нужно будет преобразовывать

С форматированием кода всё довольно неплохо, но не идеально, во-первых обрати внимания на то как нужно форматировать импорты согласно PEP8 (можешь просто isort например заюзать), плюс ещё по мелочи есть, прогони через линтер какой-нибудь.
435 1450073
>>50063
Ого, благодарю за подробную конструктивную критику.
Взял всё на заметку.
436 1450096
Суп питонач. Изучаю celery. Не могу понять из контекста, что такое feed task. Это какой-то тип больших жирных задач или чего?
sage 437 1450323
>>50063

> Решение элегантное


Говно решение. Что так, что эдак, файл все равно прочитается целиком, все строки. Поэтому лучше прочитать строки и явно сделать len(), а не городить неведомо что.
438 1450324
Питона я тупой.
В чем разница между тредингом и мультипроцессингом?
Можно ли импортировать другой файл в основной чтобы все инструкции импортируемого исполнялись фоном, это делать через мультипроц? И как это сделать мхе

Как какие ограничения снимает мультипроц относительно трединга?
439 1450351
>>50323
Ты тормозишь.
Если сделать
with open('file.ext') as f:
for line in f:
do_something

то ты читаешь файл построчно, он весь в память не загружается. Если файл небольшой, мегабайт, то иногда проще целиком прочитать. Но файл может быть и в сотню мегабайт и больше.
440 1450356
>>50324
Ты можешь запустить тред, тогда у тебя общий процесс, общая память, общие переменные и т.п. Но есть проблемы с GIL. А можешь запустить отдельный процесс, он не будет связан напрямую с основным. У тебя нет проблемы GIL, у тебя полностью независимое адресное пространство, свои переменные и т.п., но другие способы синхронизации данных, тебе явный обмен надо делать. Плюс перерасход ресурсов, каждый процесс память занимает.

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

Короче, читай теорию, это большая и сложная тема.
441 1450399
>>50356
Проблему я свою решил) В процессе решия оказалось что signal может быть только в мейн треде, если мультипроцессами это делать, то можно?
Понял что нельзя в мультипроце жонглировать данными, гораздо сложнее общение одного с другим и вывод общего. Можно ли там же использовать global или все через сторонние места храниэений, бд или файл?
Да надо будет почитать, но так сложно себя заставить.

Спасибо за ответ.
442 1450415
>>50399
Это сложная область, лучше потратить время и полноценно с ней разобраться, поработать на тестовых примерах, чтобы треш не лепить.

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

Много разных подходов есть. Нельзя в двух словах объяснить. Это квалифицированная область, требует профессионального подхода. Найди время, чтобы разобраться.
443 1450456
>>50415
Хорошо, у лутца нормально объяснено это? Гуглинг выдаёт куару, по ней и разрешил свою проблему, но вопросов возникает много мелких. Примеры и задачи на эту тему тоже в шапке есть?
444 1450631
>>50456
Почитай в какой-нибудь книге по операционным системам (например в Таненбауме) главу про процессы и потоки для начала
d28f6aa21bdfa2f4eb54098649d04186[1].png2 Кб, 358x52
445 1450685
Анон, нужна помощь ньюфагу. Есть часть кода пикрелейтед. Нужно, чтобы "yes" выполнялось и когда юзер вписывает Yes, и yES, и YES - словом, чтобы регистр не учитывался. Головой понимаю, что нужно использовать вот метод string.lower() - его нужно применить к answer, но пока не совсем понимаю синтаксис и не знаю, как его пристроить в этот код. Помоги, пожалуйста.
446 1450687
https://www.last.fm/api/show/user.getFriends

Добрый вечер. Как работать с подобным API в Python? Подскажите хотя бы, в сторону чего смотреть, а то я совсем нуб.
447 1450688
>>50685
if answer.lower() == "yes": ?
449 1450691
>>50688
Блин. Я был уверен, что метод надо было применить именно к answer. Но спасибо! А вообще, именно к введенной строке его можно применить?
450 1450696
>>50691
Да, конечно. Не вижу для этого препятствий.
451 1450700
>>50689
Выглядит круто. Спасибо.
452 1450704
>>50696
А как? Я не понимаю, как синтаксически составить такую конструкцию.
answer = answer.lower(str(input('Another question? ')))
возвращает ошибку, что answer не определен (кстати почему?)
453 1450712
>>50704
Потому что ты вызываешь метод .lower() для ещё не определённой строки answer, а не для твоего инпута. Правильным вариантом будет
answer = str(input('Another question? ')).lower()
David Coffin – Roll the Old Chariot .webm7,9 Мб, webm,
426x240, 2:31
454 1450713
>>50712
Вот оно что. Спасибо огромное!
455 1450957
Вкатываюсь в питон.
Обьясните почему в шапке настолько старые ссылки? Хабр 2012 года! Гитхаб 15 года!

>полезные материалы для начального уровня.


2013 год.
За это время питон вообще никак не развивался?
456 1450970
>>50957

>Вкатываюсь в питон.


А другие вкатывались 5-10 лет назад и просто не следят, что там вышло нового для вкатывальщиков.

Ссылки с книжками актуальные, там и 2017 книжки есть и даже новее думаю. Это надо бы как-то систематизировать, проглядеть материалы и рассортировать по каталогам "для вкатывающихся с нуля", "для вкатывающихся с других языков", для продвинутых, по технологиям и т.п. Но всем лень.

>>50957

>За это время питон вообще никак не развивался?


Сама основа языка почти не изменилась, для начинающих. Да и так почти во всех языках, кроме разных JS и совсем новых, которые только появились. База старая. Из нового только asyncio. Но это сложновато для вкатывальщиков.
457 1450973
>>50957
В шапке прошлого треда был коммент, что ФАК устарел.
458 1450985
>>50970
Поэтому питон 3 выкатили уже 10 лет как, а бомбит у всех по сей день.
image.png7 Кб, 332x271
459 1451058
Добрый вечер. Есть варианты сделать один атрибут "зависимым" от другого так, чтобы при изменении значения одного менялось значение другого?

нуб пытается в ооп
460 1451071
Из A Byte of Python:
https://pastebin.com/nrgwUu1W

В интерпретаторе всё работает, как ожидается. Но в jupyter-lab выводит какое-то говно:
https://pastebin.com/kMMd0swV

1 строка - создается объект
2 строка - видно, что вызывается метод __del__ - не известно, по какой причине. В коде объект не удалялся.
4 строка - вызывается метод sayHi(), который возвращает поле объекта. Но при этом ранее сработал метод __del__. WTF?
461 1451073
>>51058
Почитай про сеттеры-геттеры:
https://pythonz.net/references/named/property/

С помощью этих механизмов можно реализовать то, что тебе надо.
462 1451100
Поясните зачем в имиджборде использовать Celery? Не могу сам дойти что то.
463 1451103
Анон, помоги со словарями.
У меня есть словарь, который будет изменять сообщение, введенное пользователем:
alphabet = {'one':'1', 'two':'2'}

encoded_message = str(input('Enter an encoded message: '))

for i, k in alphabet.items():
____output = encoded_message.replace(i,k)
____print(output)

Но почему-то при введении инфы (например, one), программа возвращает
1
one

Почему так? Не пойму, откуда берется задвоение.
464 1451107
Пацаны, помогите, а не обосыте!

Мне нужно подключаться из питона к опенвпн - запускать селениум и там работать.

Я опенвпн запускать научился, но вот как дальше быть, если он не завершается же, а работает. Пробую через subprocess.Popen, но всё равно подключается только к впн, а дальше код не выполняется.

import requests, os, sys, subprocess, time
path = '/home/qazw/documents/nordvpn/ovpn_tcp/de507.nordvpn.com.tcp.ovpn'
password = '/root/Downloads/nordvpn/loginpass.txt'
with open("/home/qazw/documents/nordvpn/ovpn_tcp/de507.nordvpn.com.tcp.ovpn", "a") as myfile:
myfile.write('\nscript-security 2\nup /etc/openvpn/update-resolv-conf\ndown /etc/openvpn/update-resolv-conf')
myfile.close()
x = subprocess.Popen(['openvpn', '--auth-nocache','--auth-user-pass', password, '--config', path], shell=True)
try:
while True:
time.sleep(600)
except:
try:
x.kill()
except:
pass
while x.poll() != 0:
time.sleep(1)

Тут код запуска селениума
465 1451108
>>51107
не ебу про питон, но у процесса там, что ли, нет стандартных потоков ввода/вывода?
466 1451110
>>51073
Большое спасибо, анон. Всё получилось так, как я хотел.
467 1451125
>>50713
Не думал что найду эту вэбм здесь. Большое спасибо, долго искал !
468 1451126
>>51110
>>51058

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



Это очень ОЧЕНЬ плохой стиль.
Не надо делать такое ооп, пожалуйста.

Всё должно быть явно.
А в питоне - особенно, ибо сказано - explicit is better than implicit.
1563966185.jpg111 Кб, 600x600
Хранение функции в переменной? 469 1451131
Я у мамы дурачок, можно мне как в JS?

var callback;
function setCallback(func){
__callback = func
}
...
callback("пизда накрылась")

Или как реализовать обратный вызо
470 1451139
>>51131
В этом вашем питоне нет нормальных анонимных функций.
(мне, как закоренелому анониму, это особенно неприятно, лол)

Поэтому, надо использовать именованные.
Гвидо так захотел.

Вот так это делается, примерно:
https://repl.it/repls/StarkFlatPrinter
471 1451144
>>51131
Конечно можно, ровно так же, как и у твоём примере.

callback = None
def set_callback(func):
____global callback
____callback = func

или ты что имел в виду?
1565476279035.jpeg131 Кб, 845x445
472 1451145
Привет. Читаю изучаю питон и вот в книге наткнулся на такое задание.

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

Окей, сделал я так: https://pastebin.com/J6mvtVnB

Но разве это правильно? Получается я всегда должен буду создавать копию массивов listCopyCopyCopy, это ведь отвратительный код?

Про копирование массивов знаю, что делаем это таким образом:
listCopied = listOriginal[:]. Но нельзя ли здесь где-нибудь поставить .lower()?

Спасибо :3
473 1451148
>>51145
Попробовал вместо четвертой строки поставить это:

currentUsersCopy = []
for currentUser in currentUsers:currentUsersCopy.append(currentUser.lower())

Получилось, практически, тоже самое, но более ебланово.
474 1451150
>>51148
Так они сами просят такое кривое решение, что тут сделаешь.

Оно кривое. Я бы проектировал иначе, но это не будет соответствовать ТЗ.

Я бы сделал словарь с записями вида
users = {
'john' : 'JohN',
'pavel' : 'Pavel',
'michael' : 'mICHAel,
}
вот в таком словаре ты хранишь как ключ имя, приведённое к нижнему регистру, а как значение - оригинальное имя, либо более сложную структуру, если потребуется.

Но это не про ТЗ.
475 1451151
>>51150
Мне кажется, что ты не понял задание. Тут данные юзеры будут вносить, а не я сам заполнять. И их может быть как три, так и тысячи. Хз, мб я не догоняю. До словарей ещё не добрался.
476 1451157
>>51145
Не надо копировать массив.
Приводить к нижнему регистру надо непосредственно при проверке.

Проходишь по new_users, затем, внутри, с каждым new_user проходишь по current_users и сравниваешь (в этот момент и приводишь оба имени к нижнему регистру).
Всё.

Ещё раз - копировать/преобразовывать массивы не надо.
Рассматривать это как реальную задачу и "оптимизировать" - тоже не надо.
В реале делают примерно как пишет >>51150
477 1451190
>>51103
У тебя в словаре две пары ключ-значение. Для каждой пары происходит итерация цикла с принтом в конце. Первая итерация меняет твою строку на "1" и выводит, но другая не делает ничего, потому что в твоей строке нет "two", и выводит тот же самый input. Надеюсь, понятно выразился.
478 1451197
>>51157
Ну так когда я в седьмой строке проверку делаю, как мне currentUsersCopy завернуть в lower? Нельзя ведь метод ко всему массиву применить.
479 1451206
>>51197
Так господи, пройди ручками по всему массиву и проверь, ты вместо того, чтобы написать функцию на три строчки кода теперь всегда будешь искать вариант с сахаром?
480 1451209
>>51206
Покажи, пожалуйста, как это сделать. Я сейчас попробовал loop в loop завернуть, но получилось не то, что я ожидал. Спасибо.
image.png44 Кб, 967x365
481 1451221
>>51209
Что у тебя не получилось с вложенными циклами?
Знаешь, с твоими проблемами тебе бы какой-нибудь курс по алгоритмам пройти. В котором тебе вообще не будут разрешать пользоваться никаким сахаром, чтобы с массивами работать по индексам и всё такое.
482 1451278
>>51190
Хм. Выразился-то понятно, но что мне с этим делать? Я думал, что основная фича for loops - это как раз проход по всему массиве информации.
483 1451285
>>51197

>как мне currentUsersCopy завернуть в lower?



Гугли "python map function".
Это вообще одна из фундаментальных вещей в программировании.

Но, как я уже сказал, именно эту задачу так решать не надо.
Это, как правильно заметил анон выше, скорее алгоритмическая задача, обходные пути тут искать не нужно.
484 1451291
>>51278
Переменная output не нужна.
Или копируй сразу туда введёную строку, если не хочешь её портить, почему-то.

В цикле надо делать encoded_message = encoded_message.replace(...)
Выводить результат надо после цикла, а не в цикле.
485 1451306
>>51291

>Или копируй сразу туда введёную строку, если не хочешь её портить, почему-то.



Это я хуйню написал, чисто на автомате.
В питоне строки иммутабельные. Ну, и replace каждый раз возвращает изменённую копию, естественно.
4138a33ce17a3d7ceafae5d572859d99[1].png18 Кб, 874x216
486 1451365
>>51291
Спасибо за помощь, анон, с этим получилось, но у меня появился какой-то баг в коде, никак не могу понять, в чем дело.
Моя программа сейчас переводит английские слова на фонетический алфавит нато (альфа, браво, чарли и т.д.), код на пикрелейтед, при вводе "test" возвращает вот такое:

>Enter a message: test


>Tango EcHOSierra caRomeo Tango eLiMike a OSierra caRomeo Sierra Tango



Хотя должно возвращать Tango Echo Sierra Tango.
487 1451380
>>51365
Включи мозг.
В словах, на которые ты меняешь буквы, есть те же самые буквы.

Это надо делать по-другому.
В цикле надо проходить по буквам строки: (for c in my_string): ...
Для каждой буквы находить слово в словаре, и добавлять в список (напр. words).

Потом: result = " ".join(words)

Алсо - более кошерно будет использовать map вместо цикла:
https://repl.it/repls/FriendlyEvergreenFormulas
ba1d3778a33091a234236774a78151e7[1].png36 Кб, 590x775
488 1451385
>>51380
Вот именно поэтому программирование кажется мне таким трудным. Я еще не вкатывался в функции, поэтому особо их не понимаю. Можешь, пожалуйста, объяснить свой код?

s = 'ololo'
d = {'o': 'Oscar', 'l': 'Lima'}
Тут все понятно - исходная строка и словарь с парами ключей и значений.

def trans(s):
return d
Определяешь функцию (которая зависит от s?), а вот что именно делает вторая строчка, я не совсем понял.

res = ' '.join(list(map(trans, s)))
Объединяешь что-то.

print(res)
И выводишь результат объединения
489 1451395
>>51385
s - это _параметр_ функции.
Функция должна вернуть значение, используя этот параметр.

Вторая строка (7-я в коде на repl.it) - получить слово из словаря по букве (параметр s) и вернуть его из функции.

Попробуй там сделать print(trans('o')) - всё станет понятно.

Функция map преобразует любой iterable-объект (коллекцию - список, строку и т.п.) в новую коллекцию, преобразуя каждый элемент через функцию (trans в данном случае).
Т.е. коллекция букв превращается в коллекцию слов.

Функция list преобразует результат именно в список (после map - там не список, а специальная коллекция). Она там НЕ нужна, я просто давно не писал на питоне, и добавил для перестраховки.
Т.е. можно просто:
res = ' '.join(map(trans, s))

" ".join(coll) - это метод строки. Он соединяет элементы коллекции в строку результата, используя данную строку (у которой он вызывается) как соединитель. Т.е. соединить элементы коллекции пробелом, в данном случае.
490 1451406
>>51395
Спасибо большое за подробные ответы, анон, буду изучать. Исходя из нашего диалога, скажи, пожалуйста, в чем у меня основная проблема этого непонимания? Может, порекомендуешь что-нибудь конкретное почитать?
491 1451426
>>51406
Практиковаться надо.
Причём, на элементарных вещах.

Вещи типа map так сразу не заходят, с нуля.
Т.е., вроде, всё понятно, но нихуя не понятно.

Задрачивай простые примеры - выражения, циклы, функции.

Попробуй преобразовать выражения типа (2 + 3) 4 в вызовы своих функций, чтобы операторов (+, , ...) в нём не осталось вообще, а были только функции.

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

Попробуй сделать сортировку списка методом "пузырька" - это как раз и достаточно просто и достаточно сложно. Алгоритм прочти в гугле, а код напиши сам.

Вот сюда зайди (и см. examples):
https://repl.it/languages/python_turtle

И т.д.

Попробуй читни вот этот перевод известного курса:
http://aliev.me/runestone/
https://habr.com/ru/post/241696/

Но, это будет сложно, читай медленно.
Всякий матан про букву O можешь пропускать, поначалу.

Ну и прочее подобное - гугол в помощь.

Если читаешь по-английски:
http://composingprograms.com/
491 1451426
>>51406
Практиковаться надо.
Причём, на элементарных вещах.

Вещи типа map так сразу не заходят, с нуля.
Т.е., вроде, всё понятно, но нихуя не понятно.

Задрачивай простые примеры - выражения, циклы, функции.

Попробуй преобразовать выражения типа (2 + 3) 4 в вызовы своих функций, чтобы операторов (+, , ...) в нём не осталось вообще, а были только функции.

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

Попробуй сделать сортировку списка методом "пузырька" - это как раз и достаточно просто и достаточно сложно. Алгоритм прочти в гугле, а код напиши сам.

Вот сюда зайди (и см. examples):
https://repl.it/languages/python_turtle

И т.д.

Попробуй читни вот этот перевод известного курса:
http://aliev.me/runestone/
https://habr.com/ru/post/241696/

Но, это будет сложно, читай медленно.
Всякий матан про букву O можешь пропускать, поначалу.

Ну и прочее подобное - гугол в помощь.

Если читаешь по-английски:
http://composingprograms.com/
492 1451446
>>51126
Ну а как здесь иначе? Я без претензии спрашиваю, мне правда интересно. Не создавать же каждый раз новый объект Foo, если хочется изменить нужное мне значение.
493 1451451
>>51446
Новый объект тут ни при чём.
И, конечно же, такие вещи можно делать, но, надо чётко понимать, зачем.
И стараться избегать этого.

Я имел в виду, что изменение _другого_ аттрибута, в результате изменения первого, должно быть _явным_ и _очевидным_.
Т.е. лучше сделать отдельный метод, с соответствующим названием, типа change_something(...). Или вообще отдельную функцию.

Кроме тех случаев, когда взаимозависимость этих аттрибутов очевидна и естественна - например, изменение полного имени в результате изменения фамилии или отчества. Но, даже это - неоднозначный вопрос.

Также, полезно в принципе делить объекты на "данные" и "сервисы".
И в объектах "данных" такие вещи строго нежелательны.

См. например, книгу "Object Design Style Guide" (она, правда, ещё не вышла, хз есть уже пиратка или нет). Там примеры на псевдокоде.
Ну и гуглить такое можно, например.
494 1451479
>>51426
Добра тебе.
495 1451482
>>51451
"Явность" и "очевидность" пока для меня выглядят как какие-то крайне субъективные категории, и я не очень понимаю, почему тот способ с сеттерами-геттерами в них не вписывается.

Сделать отдельный метод - не проблема, да и вообще первое, что приходит на ум. Было интересно, можно ли обойти необходимость вызывать этот метод "вручную" и вместо этого "автоматически" изменять значение одного атрибута вместе со значением другого. Ну, на "нежелательно" и суда нет.

Так или иначе, спасибо. Буду думать и изучать дальше.
496 1451493
>>51221
Ну, тут ты флаг используешь. А я до этого не додумался, хоть и по книге я этого не проходил. Спасибо, интересное решение.

А почему у тебя флаг равен флаг ор тру?
497 1451525
Шалом. Посоветуйте поездатый GUI-фреймворк.
498 1451529
Может кто ссылку на Грокаем алгоритмы дать? Или что лучше почитать после A Byte of Python?
1564838490.jpg125 Кб, 1200x697
499 1451553
>>51144
Ой, действительно. Спасибки, анончик
500 1451571
>>51493
Ну смотри, на самом деле элегантное решение с флагом это как на пике(1). Я тебе написал с ветвлением, чтобы было нагляднее, но по сути это одно и то же. Что мы тут делаем? мы делаем проверку для каждой пары элементов из двух списков и логически прибавляем к boolean переменной. Таблицу истинности дизъюнкции помнишь? В нашем случае, если хоть один раз условие равно единице, то флаг тоже становится 1. Иначе флаг остается 0.
Полезность такого флага в том, что мы можем его влепить в любой уже написанный алгоритм, работающий с какими-то данными и проверить, есть ли в этих данных элемент, удовлетворяющий нашему условию.
Вообще, следующим шагом оптимизации будет прекратить проверять условия, если одно уже истинно, в этом нет смысла, потому что так и так нужно выводить, что имя занято.
Вот тебе пик2 с применением break(ты же его прошёл?). Как ты можешь видеть, тут мы используем то, что у цикла for есть else-block, он сработает, если цикл прошёл все итерации. Если мы закончили цикл досрочно оператором break, то else не сработает.
Дальше мы видим, что флаг, ищущий определённый элемент в списке нам уже не нужен, если мы этот список полностью не проходим, поэтому мы лишнее убираем. Вот тебе пик 3.
Хз зачем я это всё расписал так, ну надеюсь, что тебе немного поможет.
>>51529
Хз, насколько это правильный выбор, но я после укуса питона начал вот этот курс http://judge.mipt.ru/mipt_cs_on_python3/
Там и лекции и практики интересные, вообще годнота, короче. Но я его ещё не закончил, и вообще новичок сам.
Кстати, где-то в нюфаг треде есть ещё один анон, который этот курс проходит.
501 1451579
>>51571

>Питон + камелкейз


>Код картинками

502 1451580
>>51579
В камелкейзе у него было изначально.
Код на три строчки нужно заливать на пастебин каждый раз?
503 1451584
>>51482
Если ты только изучаешь всё это - то не обращай внимания.
Для поиграться - это нормально.
Хороший дизайн - это уже следующий этап.
504 1451587
>>51529
На scanlibs dot com есть.
И много чего ещё.
505 1451606
>>43245 (OP), пили перекат!
506 1451612
>>51571
>>51587
Спасибо анончики! добра
507 1451614
>>51606
сейчас будет
509 1451655
>>51571
Спасибо, до брейк ещё не дошел, но там нет ничего сложного. Объяснение твое помогло. Ещё раз спасибо, успехов и тебе в обучении :3.
510 1452776
Подскажите книжку для новенького, попробовал "Charles Severance" показалась слишком трудной..и нудной
511 1453787
>>52776
A byte of pyrhon - Укус питона, 130 стр.
Тред утонул или удален.
Это копия, сохраненная 13 сентября 2019 года.

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

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