Продолжаем обсуждать самый лучший язык программированияЧАВО: 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)
Работал кто с django_channels? Помогите нюфагу, я уже замучался. Короче, есть такой URLRouterURLRouter([ 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, и если не находит, то закрывает сокет. А она не находит. В документации вроде четко написано что делается так, но у меня не выходит
Репост из предыдущего Суп питонач. Вкатываюсь в Django Channels и Celery. Сколько времени понадобится на освоение этих вещей?Влез в Channels, и блядь статьи даже на русском хуй понятны. Новая терминология. Я до этого ни с асинхронщиной, ни с сокетами не работал. Ну хуй с ним накатил на проект, сделал уведомления через сокеты, но то что я использовал это 2% от всех возможностей Channels'ов.Полез дальше в Celery, пока только накатил на проект ещё не разбирался, но ебать их страничка настроек в доках занимает наверное листов 20 А4 формата.В общем посоветуйте статей\книжек на русском и английском языках чтобы прям по пальцам и терминология и основные концепции. Буду премного благодарен.
Что лучше для построение нейросети для распознания текста, цифр в частности?scikit learn tensorflowkeras?
>>1443245 (OP)Помогите разобраться. Только начал изучать python 2.7, изучаю классы и хочу сделать связный список. На первом пике образец с сайта, на втором то что у меня. В чём проблема?
>>1443392Тензерфлоу и прочие керасы - это уже прошлый век. Сейчас в основном используют градиентный бустинг или опорные вектора для распознавания изображений.
>>14433941. Учи пистон 32, Покажи/дай полную ссылку на пример.>>1443392Скит-лерн это больше для обучения и вката, серьёзную нейронку не построишь на ней(на сколько я знаю).Остальные два пункта подходят для твоих целей.>>1443318По каналам ничего не подскажу. Так их и не начал учить, хах.По Celery обычно хватает доков. Я начинал с простого запуска тасок и мониторинга их. И только после этого привязку к джанге делал. И тебе советую, абстрагироваться от джанги и тыкать просто в Celery.
При запуске jupyter notebook есть эта ошибка. Все работает. Но меня смущает эта ошибка. Нагуглить что-то внятное не могу. Кто знает, что это такое?
>>1443394Я начал учить питон году в 2009-10, сразу с третьего. Потом правда пришлось перекатываться на второй, такой на работе был, но там питон не основной был, и вообще очень долго сообщество перекатывалось.Это было 10 лет назад. Но в 2019 писать на втором питоне? Ну как бы очень плохая идея. Учи третий и забудь второй как страшный сон. В третьем масса технологий, которые принципиально отсутствуют. Перекат на 3 питон уже окончательно произошёл. 1) не используй next для имён самостоятельных переменных. Это зарезервированное слово, встроенная функция питона.2) не очень понятно, что ты пытаешься сделать. Когда ты пишешь list(node1), ты пытаешься создать список, но для этого объект должен быть итерируемым. Ты можешь реализовать свой итератор, но несколько сложнее, надо реализовывать методы __iter__, __next__. Отложи это пока.В примере слева не делают итератор с точки зрения питона, там демонстрация именно связанного списка как алгоритмической структуры. Ты должен передать свой node1 в эту функцию print_list, и по идее, она напечатает то, что ты хочешь.
>>1443318Про Channels не скажу, не осваивал, по описанию в документации и по тому, как комментируют, не нравятся. Нет ощущения полноценной интеграции с джанго. >>1443318>Я до этого ни с асинхронщиной, ни с сокетами не работал.Вот лучше с этими технологиями разобраться независимо, понять, как это работает. Они просты и очевидны, когда их нормально поймёшь, но сложны, пока начинаешь. Асинхронность заметно сложнее, особенно если раньше с подобными технологиями не работал. Но реально лучше с простейших консольных программ начать.
>>1443295Ничего не понимаю в channels, но поведение примерно ожидаемое. У тебя ведь один общий обработчик для трёх видов путей. Если в пути не было device_name, то и в обработчике его не будет, может где-нибудь возникнуть ошибка обработки и исключение из-за обращения к неопределённому элементу словаря и т.п.Может я не прав, так как не изучал channels и не понимаю, как они работают.
Посоны, а как понимать алгоритмы?Сижу над задачей час, посмотрел решение, оно там в одну строчку.Как? Можно ли как то повысить уровень знания построения алгоритмов?
>>1443403>>1443412Установил 3 питон, написал всё верно ошибки не выдаёт, но выводит не числа. Опять же не пойму почему.
>>1443448У тебя функция печатает сам объект, это некоторая структура. Ты должен печатать не print(node), a print(node.login)
Работаю уже на второй работе по Питону, рассматриваю вариант перехода на третью. Решил в фоновом режиме подтянуть всякие скилы, в том числе теорию. Открываю статью про SOLID, вроде все любопытно, но тут же осознаю, что, например, сериализаторы в Django Rest Framework это нефига не S. И как с этим жить? Решил почитать про ПАТТЕРНЫ, и тоже как-то все не заходит...Сложилось ощущение, что это все не про программирование вообще, а про программировании на джаве какой-то. Думаю теперь, надо ли мне для профессионального роста в это погружаться или лучше про кубернетисы почитать.
Есть смысл заморачиваться с платной версие пайчарма для зеленого работяги в самом начале пути? Или бесплатная версия более чем достаточна?
>>1443506Более чем достаточно. Я б даже посоветовал Atom или VSCode, они легче и лучше подходят для простых вещей
Ануня, в файле запускаю скрипт, он исполняет код находящийся в другом файле. Как мне поймать ошибки возникающие в функции вызываемой из второго файла?
>>1443442Здесь и алгоритма как такового серьёзного нет - просто выводится зависимость искомой длины шнурка от a, b, l и N согласно условию задачи.
>>1443506Нахуя тебе пичарм, если ты вкатывальщик зеленый? Просто нахуя, vscode подойдет, да даже блокнот обычный да даже вим, но для тебя ето геморрой будет.
>>1443245 (OP)Аноны, такая проблема, может кто сталкивался: поставил линукс, пайчарм, сначала вроде норм работало, но после перезапуска открываю её, открывается автоматом проект, делает update skeletons /usr/bin/python3. 7 или как-то так, и где-то на пятой части этого апдейта система зависает намертво. Причём это точно не память кончается, я отслеживаю её.
>>1443561Я понял, что как только что-то взаимодействует напрямую с системным интерпретатором то всё сразу же ложится нахуй. С интерпретатором venv всё работает хорошо(вроде). Как это пофиксить? На винде делал всё через системный
Есть картинки (черный квадрат) на которой могут быть разные объекты с произвольным смещением.Задача кропать изображение по границе объекта. Объект не явный, классифицировать сложно, но размер его +- один и тот же поэтому по сути нужна только левая верхняя точка. Какие есть способы его определить?
>>1443658Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Доброго дня, аноны.На связи инженер-программист с опытом в ~5 лет.Был и есть макакой на JS, PHP, NodeJS. Хочу стать настоящим макакой на python.Как считаете, сложно будет перейти? Может кто-то испытывал такой опыт? Концепции-то похожи будут? В какую сторону копать и что изучать лучше?
>>1443245 (OP)Ищу кого-нибудь для общения вокруг программирования и матана, обмена ссылками и книгами, а так же для парного программирования.Мои языки C, Python. Считаю что программист из меня так себе.Сферы интересов: Теория игр, теория принятия решений, Управление и оптимизация, многокритериальное принятие решений, Марковские модели, конечные автоматы, теория графов, теория вероятностей, статистические методы, имитационное моделирование, ии и коллективное поведение и проч.korbelan@mail.ru
>>1443245 (OP)Аноны, подскажите раку. Вроде как смог создать связный список из объектов класса с одним аргументом, но как сделать 2 и более аргументов? На первых двух пиках для одного аргумента. На третьем попытка сделать для двух.
>>1443658Почитай ОП пост, а вообще я б советовал пройти базовый курс на Курсере или Питонтьюторе и дальше решать задачки
>>1443950У тебя ошибки в 16 и 19 строках.Что там запятая значит? Ты явно хотел что-то другое, но для питона запятая это способ записи типа данных tuple.Вообще, вывод лучше иначе форматировать, специальными средствами. Или какout = "[%s, %s " % (current.login, current.password)илиout = "[{}{} ".format(current.login, current.password), или f"[{current.login}, {current.password}"последний только для питона 3.6 и новее.
>>1443950Можешь передавать словарь из аргументов в конструктор списка, или через args. В операторе __str__, можно сделать вывод через генератор. хз не стал доделывать
>>1443965Не, формат не подойдет, а если он захочет добавить поле для вывода ? Придется менять формат.
>>1443950Я бы вообще строки 14-19 переписал иначе. Тут дублирование сплошное, можно всё тоже самое проще записатьout = []current = self.firstwhile current != None: out.append("{}{}".format(current.login, current.password)) current = current.nextreturn "[{}]".format(" ".join(out))
z = "zerg"p = 'Protos't = 'Terrain'x = Truewhile 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 = Falseelse: print('trya gagimn')print(selected_character)Я УЧУ ПИТОН УЖЕ 2 ЧАСА! ДА Я ДУРАЧОК!. ВООТ ВОПРОСИК! Я ХОЧУ ЧТОБЫ ЕСЛИ ОТВЕТ НЕ БУДЕТ ТАКОЙ КАК В ЭТИХ ПЕРЕМЕНЫХ МЕНЯ ЦИКЛ ВОЗРАЩАЛ К ИНПУТУ! КАК В ИГРЕ УГАДАЙ ЧИСЛО !
>>1444021https://repl.it/repls/RuralPoshLava ВОТ ФОРМАТИРОВАНЫЙ КОД ЧТОБЫ ВАМ ЛОХАМ БЫЛО УДОБНО ЧИТАТЬ!СПАСИБО ЗАРАНИЕ !! ВЫ НЕ ЛОХИ Я ЛОХ!
При поиске картинки в картинке лучше использовать на столько маленькое изображение на сколько это возможно или чем больше деталей в темплейте тем лучше?Как влияет на скорость рост размера?
А что там из нового для освоения питона? если для джанго это джанго 2 с примерами. То для вката кроме давйпитона нет ничего?
>>1444076Есть база, общая для всех. Есть конкретные направления, они часто про технологии в целом, чем про питон. Уже зависит от того, что конкретно тебе надо.
Аноны, привет. Читаю python crash course eric matthes (2019) и немного проблемы с переводом/пониманием. Правильно ли понял и выполнил ли я задание? Подсобите, плиз. multipleList = [value*3 for value in range(3,31,3)]print(multipleList)
>>1444081Да мне бы прочитать примитивным языком про разные модулю и про правильность организации программы. Вообще конечно все в доках можно прочиттать
http://ideone.com/vbgT4j base.htmlurl второй скрин Помогите... уже менял абсолютный url в href, все равно вместо url на основе slug - выбивает эту ошибкукод из учебника
>>1444076Есть ещё книга Fuent Python (наши дубляторы-надмозги перевели как "Python. К вершинам мастерства"), она покрывает язык практически полностью, но для начинающего не подойдет. Единственное, насколько я помню, там используется старый синтаксис для корутин, поэтому глава про асинхронность немного устарела. По этой теме можешь посмотреть https://www.youtube.com/playlist?list=PLlWXhlUMyooawilqK4lPXRvxtbYiw34S8 и доклады David Beazly.
>>1444110Пасибо =). Вообще пошел бы лучше на курсы какие нить чтобы на вопросы с которыми сталкиваюсь мог бы ответить кто-то... но это все херня нет доверия курсам
>>1444112Вообще да, обратная связь - самая важная вещь в обучении, поэтому самоучкам очень сложно добиться хорошого результата. Ну а большниство очных курсов - наебалово, как ты правильно заметил, ну либо они стоят слишком дорого для вкатывальщика. Чтобы компенсировать этот недостаток, можно гуглить любую фигню которая тебе кажется странной (желательно на английском), даже если у тебя всё работает, то посмотри, как это сделано у других, можно просто искать в гитхабе по ключевым словам и смотреть исходники.
>>1444168Там всё написано в сообщение об ошибке.У тебя шаблон url требует поле slug, которое не пустое. А ты, судя по ошибке, пытаешься построить этот url с пустым параметром, который обязательный.
Сколько времени займет вкат в питон и джанго? Сам фронтендер, опыт работы год, пишу на ангуляре, умею делать бекенды на node+express.
>>1444185Всё зависит исключительно от тебя. Кто так вопросы задаёт? Несколько месяцев надо. Начни просто с питона, поймёшь, насколько интересный для тебя язык и как заходит.Джанго больше для CRUD. Неприятный момент в том, что он синхронный, некоторые тривиальные для ноды вещи сделать на джанго будет или сложно, или почти невозможно, это может быть неприятно. Правда есть другие фреймворки.Короче, начни просто с питона. Если зайдёт, то и остальное освоишь. А пока питон не освоишь, во фреймворки лучше не лезть.
Аноны, как можно вкатиться в Django? Не хочу втупую сидеть и читать книжки и доки без особой практики. Есть какие-то видеокурсы может или просто сборники с текстовой лекцией и задачами к ней? Как вообще сами вкатывались и каким образом изучали фреймворк?
>>1444351Сначала проходишь Django Polls - Пример из официальной документации.Потом качаешь книжку Leightweight Django, читаешь только Главы 1-4. Делаешь все задания. Параллельно учишься работать с гитом (скачай сазу GitKraken и не ебись с консолью как вонючий бумер) Пример из книги разрастается от простого к сложному, по сути, в конце параграфа у тебя получается рабочий проект но с некоторыми фичами.Тут ты должен понять что 1) Фуллстек это путь в никуда 2) Можно учить сразу Рест АПИ фреймворк.Потом Идешь на в документацию джанги, читаешь про МоделиКверисетыПотом на всякий случай проходишь туториал рест фреймворка https://www.django-rest-framework.org/Теперь можешь начинать писать свою имиджборду. Да, она будет без фронтенда ну и хуй с ним.Параллельно прочитай про pytest и сделай интеграционные тесты для своей борды (запостить сообщение/попытаться открыть удаленный тред/проверь что тред не апается когда он в бамплимите и т.д.).
>>1444374> (скачай сазу GitKraken и не ебись с консолью как вонючий бумер)А чего там ебаться? git pull git commit git push > Фуллстек это путь в никудаПочему?
>>1444384>А чего там ебаться? git pull git commit git pushТолько если ты будешь комитить всё и сразу в одном комите.К гит-клиентах с GUi есть удобная функция для того что бы комитить конкретные строки, откатывать изменения наглядно и т.д.Но консольные команды знать надо, офк, иначе есть возможно обосраться на собесе и на сервере.
>>1444129Ты недооцениваешь мою ебанутость, и нелепость составления формулировок ^)>>1444130Не понимаю как это на гите искать, ну а если есть что-то похожее готовое то смысл разбираться отпадает, ведь можно копипаститьСталкиваюсь с проблемами типа не понимания как работает модуль schedule, или же thread. Потом оказалось что ониработают как надо но программа просто не работает дальше hendler от telegram-bot-api. Хотя знаете, это на самом деле лень, просто человеческая лень. Когда у тебя есть документация и ты можешь все прочитать и понять, но предпочитаешь ныть, что вот если бы был наставник было бы так здорово. Хотя лопатить всю доку это же пиздец
Что с ним не так? Почему ключи и объекты в словаре в таком порядке? Я понимаю, что словарь - неупорядоченная структура, но почему, к примеру, в {i: i for i in range(5)} элементы выстроены нужным образом, то есть в соответствии со значениями i?мимонуб
>>1444191Можно, но очень коряво, неочевидно и ограничено. Это решения (как channels) для историй, когда у тебя уже есть проект на джанго, и тебе надо что-то асинхронное вдруг прикрутить, но не для того, чтобы строить на этом асинхронный проект.После ноды это будет смотреться уныло и убого. Есть другие фреймворки, но в них меньше плюшек, которые есть в джанго.
>>1444351Этап 1:Из официальной документации по джанго, очень желательно на английском, смотришь главу "Writing your first Django app"https://docs.djangoproject.com/en/2.2/intro/Там разбирается пример учебного приложения, шаг за шагом, и на этом примере весь ключевой функционал джанго демонстрируется, ты сам потрогаешь.Потом можно разбирать более детально отдельные части. Я бы рекомендовал сначала разобраться с обработкой url, как они вызываются (это просто, но тут надо смотреть на вторую версию джанго, а не на 1.9), потом со View и немного с шаблонами (шаблоны крайне желательно подключить jinja2 и с ними работать), потом с моделями, как делать разные запросы. Про всё есть как обзорная документация, так и детализированная.
>>1444414Порядок ключей гарантированно соответствует порядку добавления только в питоне начиная с 3,6 (мб 3,7 точно не помню), во втором этого вообще нет.
>>1444402>Когда у тебя есть документация и ты можешь все прочитать и понять, но предпочитаешь ныть, что вот если бы был наставник было бы так здорово.Грамотный наставник очень нужен и полезен, но где его взять? Как важны хорошие выстроенные систематизированные курсы, это не документация, но где их найти? Большинство коммерческих курсов про то, чтобы состричь денег со случайных вкатывальщиков. Нормальный будет стоить дорого и слушателей для него не найдёшь. Но зато если продерёшься через всё это, то будешь среди немногих, кто смог.
>>1444374Годная информация. Воспользуюсь, спасибо.А с гитом я работал, команды знаю. Да и в PyCharm всё довольно удобно реализовано, так что консолью я где-то год не пользуюсь уже.>>1444427И тебе спасибо за ответ.
>>1444430> только в питоне начиная с 3,6 (мб 3,7 точно не помню)Вроде как с 3,8? По крайней мере читал недавно особенности 3,8 и там это было в списке.Мимодругойанон
>>1444402Ну ты накодил своё решение, тебе кажется, что оно косячное, ищешь , как данную проблему решили другие люди и заимствуешь лучшие приемы. Да на самом деле иногда лучше скопипастить удачное решение, чем городить свой велосипед, главное разобраться в этом решении и вынести из него что-нибудь для себя.
>>1444402Если не понимаешь как работают треды и подобные вещи, то тебе нужно почитать что-нибудь по операционным системам, например таненбаума.
>>1444434Сомневаюсь, что наставник знает документацию любой либы наизусть. Наставник может проводить код-ревью, указывать на косяки связанный с чистым питоном ну или с очень популярными либами типа Django, Flask и т.д., его главная задача - это прояснение каких-то относительно общих вопросов и указывание на твои слабые места
>>1444452https://mail.python.org/pipermail/python-dev/2016-September/146327.htmlС 3.6 в CPython словарь упорядочен в порядке добавления, в других реализациях Python это не гарантируется. С версии 3.7 это уже фича языка, то есть все реализации языка должны гарантировать упорядочность словаря.
>>1444179>А ты, судя по ошибке, пытаешься построить этот url с пустым параметром, который обязательный.Так в том и дело, я нехрена не понимаю как оно может быть пустым, если оно НЕПУСТОЕ, а конфигурируется исходя из читаемого url-slug при создании поста. А тут эта хня еще вызывает ошибку даже без перехода к посту, а при переходе к самому приложению "blog", а точнее при вызове базового хтмля не понимат
>>1444540>Сомневаюсь, что наставник знает документацию любой либы наизусть.А зачем знать наизусть? Если ты понимаешь, как устроено и как работает, то или сразу сможешь объяснить, что не так, или быстро сможешь ответ найти в документации.Тяжело осваивать что-то самому, вот у тебя возникает вопрос, ты не понимаешь, зачем что-то нужно и как работает, а спросить не у кого. Ты можешь делать тупую ошибку, сам того не понимая, а указать тебе её некому. Идеи и принципы объяснить некому.Но правда на работе редко кто-то готов быть наставником. Чаще все сами по себе. В универах в этом плане проще.
>>1444546Видимо ты вызываешь неправильно, не передаёшь нужный параметр, как надо. При создании поста, когда ты тэг url вызываешь, ты явно должен указывать и параметры, чуть по-разному в стандартном джанго и jinja2. Значит, ты как-то намудрил с этим параметром, только и всего.
>>1444546Попробуй вместо '' в первом url поставить '/'или другой вариант, вызвать в браузере неlocalhost:8000/blog/аlocalhost:8000/blogто есть без закрывающего слеша
>>1444430>>1444452>>1444542Спасибо за ответы. Сам пользуюсь 3.4.2, потому и результат соответствующий.
>>1444563ладно, спасибо. Буду искать. второй день мучаюсь, если возникает нетривиальная ошибка, просто выпадаю в прострацию и уныние, сложно бороться
Не могу долго учить язык программирования, именно учить, а не программировать или читать книгу. Есть книга по питону, обучение идёт как по маслу всё быстро понимаю, но более 3-4 страниц в день не могу осилить. При этом времени на них уходит примерно 1,5 часа. Но это пиздец как высасывает мои ресурсы, хотя я по силам могу ещё покодить или что-нибудь почитать, но что-нибудь новое на сегодня для узнать я не хочу
Python for Everybody Specialization с курсеры или книга Mark Lutz Learning Python/Programming Python?Что лучше подойдет для вката? Какое мнение в целом по курсу Python for Everybody Specialization? Стоит ли платить за него чтобы проверки работ были?
>>1444578>>1444563ситуация становится охуительнойЯ уже нашел на гитхабе код автора Весь перебралВ итоге на мозг капнуло "а вдруг эта херня как то не так обрабатывает теги"Зашел в админ панель и удалил последние 2 поста помеченные тегамиИ ОН БЛЯТЬ ЗАРАБОТАЛИ Я В УПОР НЕ ПОНИМАЮ ПОЧЕМУ И ПРИЧЕМ ТУТ base.html, и как эти посты в detail.html влияют на основную страницу Короче все решилось. но НИПАНЯТНА почему Сижу посмеиваюсь... 2 дня... тонны гугла и всё коту под хвост. Походу фреймворк пользовательские теги шаблонов неправильно рендерит по какой то причине "Я решил проблему, но как и почему я не знаю, но я её решил, потому что она не вылезает" потрясающе.
>>1444674Ты про Financial aid? Я, кстати, так и не понял до конца, что это за хуитка такая. Чем отличается от обычной оплаты курса?
>>1444691А про сам курс (специализацию в целом, там вроде сразу пять курсов идёт) что думаешь? Стоит того или лучше по книжкам учить?
>>1443245 (OP)Насколько корректно использование eval и exec в коде? Заметил, что это "не по понятиям", хоть кто-то из разрабов со стажем их юзает? И при каких обстоятельствах?
>>1444400Если git add . то конечно можешь все сразу. Команд там 20 или около того. Да и это куда быстрее и привычнее, когда все в одном окне делаешь(в терминале офк). Раньше я тоже гуями пользовался. Да и сейчас иногда, если это удобнее быстрее. Но обычно консоль выигрывает. Не слишком красиво, зато быстро и удобно.
>>1444692Забыл добавить, что фин. помощь на всю специализацию сразу оформить нельзя, нужно оформлять на каждый курс.Бегло посмотрел программу курсов, если честно, то не очень. На мой взгляд слишком долго, по программе курса ты к ООП перейдешь только на 4 курсе, т.е. на 21 неделе, т.е. через 5 месяцев. Конечно, ты скорее всего будешь проходить эту специализацию быстрее, но всё равно. К тому же язык в данной специализации разбирается довольно поверхностно, если судить по программе, то даже если ты пройдешь всю специализацию полностью, то твоих знаний будет недостаточно, чтобы претендовать на вакансию джуна (при этом я беру в расчёт только знание языка, джуну ещё фреймворки нужно знать). Задания не смотрел, судя по названиям довольно прикладные, что хорошо, но не уверен.С другой стороны пролистал Learning Python Лутца и тоже немного удивился. По содержанию претензий нет, если изучишь данную книгу, то будешь довольно уверено себя чуствовать с питоном, знаний языка будет достаточно для джуна, единственное в книге не затрагивается асинхронность (хотя от джунов редко требуют) и стандартные библиотеки Python. К тому же в конце каждой главы есть набор вопросов и упражнений с решениями, что тоже положительно скажется на качестве твоего обучения, только задания не очень прикладные, поэтому если будешь изучать Python по книге, то советую иногда делать какие-нибудь мини-проекты. Но в книге 1200 страниц, что на мой взгляд довольно много, видимо автор достаточно водянисто пишет, но с другой стороны для новичка это может быть даже полезно. Советую заранее расчитать скорость изучения языка по этой книге и сколько это у тебя займет времени в итоге.В общем, если выбирать из этих двух вариантов, то я бы посоветовал Лутца, но ты не рассказал о своих текущих навыках и целях и к какой цели ты стремишься
>>1444710Спасибо огромное за ответ!Питон для прикладных задач нужен. На голого прогера-джуна не претендую староват уже для такогоЯ инженер-конструктор, и есть желание покопаться в сторону машинного обучения, датамайнинга и нейронок. Плюс, скрипты для автоматизации работы в CAD'ах, инженерные расчёты и так в целом для комфортной жизни.В своё время учил Delphi и немного C++, ооп, даже немного до ассемблера добрался, но все это было в далекие студенческие беззаботные годы.
Надо смотреть на то, что человек умеет и какой у него бэкграунд.Если с нуля, то надо просто нарабатывать себе умение программировать, это времени требует, и прилично. Я не видел ещё ни разу, чтобы совсем с нуля за несколько месяцев научились писать какие-то мало-мальски содержательные задачи.Питон очень хороший язык для вката, на нём быстрее можно научиться и понять, что такое программирование. Но всё равно времени требует.Если с нуля, то надо прочитать просто самые основы языка, и начать решать разные задачи, примерно как на литкоде простые.Много решать. Самому думать, как эти задачи модифицировать и решить. Когда станет более-менее легко, тогда значит, что ты уже готов к программированию и можно осваивать платформу более-менее серьёзно. Нельзя пропустить этот базовый этап.Вот если уже практика программирования есть, то другое дело. Но это надо смотреть на то, какой опыт и что умеешь.
>>1444716>В своё время учил Delphi и немного C++, ооп, даже немного до ассемблера добралсяЭто совсем не начальный уровень и тут уже будет сильно проще.
>>1444723Ну, да. Какие-то знания есть, даже Кнута в своё время читал. Но после студенческих увлечений ушел сильно в инженерную работу, и совсем программирование на десять лет забросил, а это считай вечность. Так что я тут как полуновичок наверное.
>>1444716Тогда даже не знаю, возможно специализация для тебя более предпочтительна будет. Для решения прикладных задач и ML тех знаний будет более чем достаточно, плюс там задания и проекты относятся к этой теме.Книга Лутца больше подходит для серьёзного изучения, а если не планируешь вкатываться в программирование, то лучше пожалей время, дата саентистам нужно больше делать упор на сторонние библиотеки, чем на чистый язык. Поэтому Лутц для тебя будет оверхед.Ещё по теме автоматизации слышал хорошие отзывы о книге Automate the boring with python, возможно тоже будет неплохим вариантом для тебя.
>>1444716О, коллега, тоже работал конструктором на заводе, сейчас тружусь технологом на станке с ЧПУ в мелкой конторе. На досуге и в свободное рабочее время стараюсь всякие расчеты автоматизировать сначала в Экселе для понимания логики, а потом в пайтоне. Сложно, конечно, все осмыслить, но стараюсь.
>>1444633Как не странно тебе нужно научится, учится. Как анон уже писал выше, приготовь свое рабочее место, убери со стола и поставь таймер. Например, поставил таймер и блять не перестаешь учить, пока время не пройдет. ТЫ НЕ ДОЛЖЕН чувствовать себя как дома, будто ты на паре или на работе. НЕ ОТКЛИКАЙСЯ на всякие там вкшечки и инстаграмы.
>>1444633Я тоже не могу заставить себя читать больше 20 страниц в день "Изучаем Python" Лутца. Одна первая глава чего стоит: автор 20 страниц повторяет несколько идей. Начиная с 3-ей главы не так абсурдно, но читать все равно сложно.Есть ли чтиво, которое читается легче/увлекательнее?
>>1444824ну я литературу на английском всю читаю. на русском может быть тоже 20 страниц в день бы было.>>1444809да это хуйня всё, я не отвлекаюсь. могу спокойно сидеть больше часа без перерыва читать книгу. меня просто плющить начинает если я ИЗУЧИЛ сегодня более 4-х страниц в день. мозг болит что ли, хуй знает как это объяснить. тяжело в себя новой информации много запихивать, во истину самый тяжкий труд это учение!
В результате работы функции я получаю ответы261262...269270....300Как сделать дополнительную функцию для замены этих результатов в упрощенный вид, 260-269 - представлять как 1, 270-270 - 2 итд.
>>1444877def 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
>>1444889Спасибо, но нет ли способа покороче? А то у меня же не только эти значения, а значительно больше.Как-то массивы наверное можно сделать без перечесления, а с указанием диапазона и проверять есть ли число в массиве если есть присваивать новое значение.
>>1444889Это троллинг такой? Твоя функция даже не работает нужным образом, а просто возвращает единицу при 260 <= number <= 370.
Анон, посоветуй бесплатный питон хостинг. Я запилил телеграм бот на хероку, но через полчаса он засыпает и просыпается секунд через 15.Или это норм для фри хостинга и лучше вариантов нет?
>>1444923Я не только в глаза не долблюсь, но и в лобные доли, потому и понимаю, что он просто опечатался и имел в виду 270-279.
>>1444920Тебе тоже спасибо огромное. Я запомню что можно и так делать, но тот вариант мне подходит больше т.к. я не упомянул в тз, что диапазоны не всегда из 10 чисел и могут быть с пропусками. А есть какие-нибудь сайты с такими простыми задачками, желательно с возможностью посмотреть ответы и варианты решений?
Чето у меня тупой вопрос. Вот django: в качестверазраба макаки мне надо работать с многопоточностью или нет? Здравый смысл говорит, что да. Но оверинжиринг заставляет сомневаться. Что-то без круда явно же надо стараться запихать в треды?
Сап, питонисты, столкнулся с такой хуйней как шаблонизатор Джаного. И я блять вообще не понимаю, что это ? Какой это язык, как это понимать ? Что за скобки, проценты и тд ?
>>1444960Это язык шаблонов, в разных веб-фреймворках они разные, у джанго свой, у фласка например jinja2.Да кажется сложным, на деле учится за вечер.https://docs.djangoproject.com/en/2.2/ref/templates/language/https://djbook.ru/rel1.4/topics/templates.htmlсука ты тупая :3
>>1444966Да вы троллите по-моему просто, тут у вас какое-то соревнование было по самому ебанутому решению простейшей задачи. Странно только, что его ещё первый челик с ифами выиграл, обогнать его было невозможно
>>1444976Технически выиграл его ты, ибо даже его код иногда выдаёт нужные значения, в отличие от твоего с опечаткой.
>>1444987Да только опечатка исправляется в один символ после получения неожиданного ответа(отрицательных чисел быть не должно было по постановке задачи), а у вас нужно переписывать полностью, потому что вместо выражения на два действия у вас алгоритм перебора с циклом на n//10 - 25 итераций
>>1444994Алсо, если серьёзно, то я советую порисовать черепашкой несколько заданий из http://judge.mipt.ru/mipt_cs_on_python3/labs/lab1.htmlЗадание на спираль Архимеда, на вложенные многоугольники, и на н-конечную звезду. Они и интересные и не очень долгие и там нужно собирать математические выражения.
>>1445019А то! Можно ещё модуль graphics скачать, там про это есть тоже следующих главах курса. Но для геометрических фигур хватает черепашки. Там потом ещё тема будет про рисование фракталов, на рекурсивные алгоритмы.
>>1445079Не трогай что работает, лол.Джанго шаблоны не сильно отличаются от других стандартных. Научишься на них - считай знаешь остальные.Выучи базовые вещи: получение ссылки на статичные данные (картинки, скрипты), работа с переданными аргументами, циклы и условия, наследование шаблонов (самая ахуенная вещь).
>>1445079Они похожие, но лучше jinja2, штатные немного корявые. У jinja2 больше возможностей и удобства при обращении к словарям и т.п. Jinja2 более универсальные, и на других фрейворках работают, и даже в другие языки портированы довольно близко. В целом для начала можно не заморачиваться, ключевые принципы одни, смотри просто, чьи доки тебе удобнее читать и понимать.Самое крутое в шаблонах, это возможность наследования и макросы, вот там они по-настоящему разворачиваются.
Объясните, пожалуйста, про метод Ньютона для нахождения квадратного корня. Гуглил, но ничего не понимаю что написано, что за приближение, что это вообще такое...
>>1445122Если не понимаешь, то начни с основ матана, иначе это бессмысленно. Например, на сайте для заочников и не только mathprofi или в школе/универе
>>1443844>>Теория игр, теория принятия решений, Управление и оптимизация, многокритериальное принятие решений, Марковские модели, конечные автоматы, теория графов, теория вероятностей, статистические методы, имитационное моделирование, ии и коллективное поведение и проч.иными словами - мозг пытается составить обобщенную модель мозга с целью надежного и длительного выставления произвольных функций оптимизации. и чтоб внимание получше работало. в РЦП такими вещами очень интересуются вроде бы.
>>1444808Привет брату инженеру! Расскажи что получилось автоматизировать на питоне? Удобно ли пользоваться? Заморачивался ли с интерфейсом?
>>1444728Спасибо.Буду глядеть специализацию тогда. Мне питон больше в прикладных задачах нужен, да.> Automate the boring with pythonЕсть такая, да. Уже скачал, буду изучать. Спасибо еще раз.
>>1445122>>1445126Разобрался полностью с этим, теперь у меня вопрос какое отношение это имеет к погромированию? Типа алгоритм? Я ньюфаня, не обссыкайте за глупые вопросы
>>1445218Никакого. Это не программирование. Программирование это когда ты в доту играешь. Или в инсте фотки лайкаешь. А какие-то там вычисления, это не программирование.
>>1445218Это основа.Допустим, тебе надо будет нарисовать график по точкам, но не от руки, как в школе, а с интерполяцией сплайнами. Вот тут ты берешь матлаб питон и пишешь себе на будущее функцию, которая за пару минут тебе красиво все покажет и нарисует.ЯП - исполнитель, а тебе нужно знать, что исполнять и как это написать
>>1445230Потому что это вычматы, а не питон. Для глобального понимания, как решать задачу, и существуют алгоритмы, которые изучаются в отрыве от языка.
>>1445234Вычмат о том, чтобы доказать сходимость решения, скорость сходимости и т.п. А программирование о том, чтобы реализовать это на практике.Задача программиста в том, чтобы разобраться в проблеме и реализовать решение в виде программы. Всё сугубо утилитарно.Вот разберись и реализуй.
>>1443245 (OP)Антоши, вот я тупой дебил и нихуя не умею. Хочу научится погромированмю. Решил выбрать пока питон, он вроде как самый лёгкий и неплохой такой. Вот скажите, не зашквар ли читать книгу "питон для детей" если я уже не дитё?
>>1443245 (OP)Братцы, на работе (режимное говнопредприятие) нет инета, а мне очень бы помогли пакеты Питона для работы с Excel и PDF форматами. Как их сцуко установить, если pip install не пашет? Я раздобыл исходники с Гитхаба, но как эти модули дальше установить, чтоб они работали?
>>1445695Можно сделать через virtualenv, портируемый режим. Дома создаёшь всё, что тебе надо, ставишь все пакеты, которые нужны, приносишь куда надо, копируешь и запускаешь.
>>1445710Съебусь только к октябрю. Сначала надо премию получить, сходить в отпуск и получить новые отпускные за полгода>>1445704Наверно так и надо пробовать. Но я виртуалку еще не настраивал, тем более портируемую и для сторонней машины, годную инструкцию подкинуть не сможешь?>>1445706? качаю куда? и можно ли указать этому менеджеру откуда устанавливать пакет? везде по pip лишь базовые сведения аля "щелкни сюда чтоб установить 5 разных фреймворков", но нигде толком не объясняют на низком уровне как собственно этот менеджер пакетов работает
>>1445723Берешь флешку, на ней создаешь виртуалку, в которую уже ставишь все, что нужно.На работе собсна кидаешь на эту флешку нужные файлы и работаешь с ними из под виртуалки.Для настройки просто загугли virtualenv
как эффективнее всего реализовать сохранение статуса выполнения цикла?(чтобы брал значение переменной из txt файла)
Аноны, собсна, какого хуя такое происходит и как это исправить?Чому оно не работает? Вроде всё делал по тутору с сайта DRF, но выдаёт такую хуйню. УРЛ проёбан по полной.Гугл выдаёт гайды от обоссаных индусов с кривым кодом.
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 перевел.
Есть массивarray = ["Bob", "Alex", "Bob", "John", "Bob", "Alex", "Bob"]как вывести не повторяющиеся элементы и их количество, т.е.bob - 4alex - 2john - 1
Суп питонач. Есть здесь продвинутые веб макаки?Есть заготовка проекта. В нём channels, celery, redis ещё и фронт на ноде с server side rendering. Вот хочу всё это ебануть в nginx + docker, но ума не приложу с чего начать. Предполагаю, для начала надо запустить хотя бы сам проект через nginx без всяких докеров, а после успешной отладки уже пытаться всё упаковывать в контейнеры. Надеюсь на ваши советы.
>>1445813лучше спроси как научиться задавать вопросы гуглу?https://stackoverflow.com/questions/28663856/how-to-count-the-occurrence-of-certain-item-in-an-ndarray-in-python
>>1445834ну а тривиальный способ это сделать лист с уникальными элементами и для каждого элемента листа получить count в исходном листе
>>1445813В питоне есть стандартный модуль collections, а в нем есть класс Counter, он делает сразу то, что тебе нужно
>>1445734Не понятно, что тебе нужно конкретно. Но, наверно, тебе полезно будет почитать про генераторы в питоне, ну, там, yield, next, и все дела
>>1445695pip умеет скачивать пакеты со всеми завизимостями, но не устанавливать их, а сохранить в указанной директории, которую ты можешь спокойно скопировать на флешку и перенести куда угодно, а еще pip умеет устанавливать пакеты не из интернета, а из локальных файлов и папок. Так что, можешь дома выкачать нужные пакеты вместе с их зависимостями, а потом принести их на работу и установить, и все с помощью pip. Вообще pip до хрена всего умеет, не поленись изучить его документацию, хотя бы ту, что он сам про себя в консоли показывает.
>>1445799бампя ща проверил dtype, там до сохранения uint8 и после чтения uint8, но напрямую не рабоатет.
>>1444021Анон, у тебя всё правильно, просто не стоит вводить p,z,t , а нужно вводить то, что записано в переменной, тобишь Zerg , Protos, Terrain.
>>1446042>>1445770Дружище, кури регулярки и https://docs.djangoproject.com/en/2.2/topics/http/urls/Я просто в ахуе, что ты такое еще спрашивать сдесь удумал.
>>1446046Причём тут регулярки?Если пикрил предлагается в офф доках ДРФа.У меня подобная херня, только вместо "" мой роут начинается с "api/".Или я чего-то не понимаю?
>>1446335Если вообще не знаешь язык, то можешь либо пройти курс Питонтьютора, либо прочитать "Укус питона", это основа(документация еще, конечно же)Потом смотришь нужные тебе библиотеки и начинаешь что-то делать с их использованием.Можно просто решать задачи на chekio/codingame/pythonchallenge
>>1446572Можешь и его, для вкатывания нет разницы особой, так как это все же книга для +- углубленного изучения, а пятое издание еще не переведено, насколько я знаю
Питонач, пришла идея сделать бота для телеги.Ты его добавляешь, кидаешь название паблосов из вк, а он все посты, которые будут выходить после твоей подписки на них в боте телеги, будет постить. Че, как вам? такое же реально сделать?
>>1446621>такое же реально сделать?Реально. Недавно только щупал я бы сказал, касался даже апи ВК и там есть всё, что тебе надо. Дело 2-3 функций. Вот только нахуя оно? Сейчас каждый 2-ой, если не 1,5-ый, паблик имеет свой ТГ канал для сруба бабок с рекламы вдвое чаще обычного, так что какого-то большого импакта не вижу, разве что брать посты с групп непопулярных на 10-20к тел.>>1446628Нахуя парсить страницы при живом апи? Всё равно, что тебе дадут мотоцикл, чтобы ты до дома доехал, а ты рот ебал чо-то с ним разбираться, ключ зажигания там какой-то ещё вставлять, и поедешь на своём раздолбанном велосипеде.
>>1446628Как сказано выше, можно и парсить, но это себя не уважать. Апи дает как минимум опыт и удобство
>>1446630благодарю. Да вот по наблюдениям не у каждой группы есть тг канал. А у меня то задумка в том, что можно будет совершенно любую группу сделать
Питонач, есть серьёзный вопрос. Как вкатиться в работу? Вот я правда. У меня есть знания питона, которые позволяют мне кодить всякие штуки для себя, с чем я успешно справляюсь. Я могу прочитать чужой код, найти ошибки в нём и исправить их. Если мне скажут разобраться в фреймворке, я прочитаю документацию и всё пойму без особых проблем. Но это же блять нихуя не учитывается при устройстве на работу! Всем нужно, чтобы ты решал какие-то ебанутые задачи и разруливал ситуации, которые ну вот вообще никогда не возникнут, если только не полный долбоёб пишет код. Понимать, что от кого и когда наследует и как эта хуйня работает в очень глубоком представлении, хотя по факту есть тут вообще те, кому эти глубочайшие знания необходимы на практике? Если есть, пруфайте, и я ухожу нахуй.Так вот, что мне нужно собственно. Есть ли какой-то сборник задач, вопросов и прочего, которые составлены по собеседованиям? Чтобы вот со всеми этими ебанутыми ситуациями в коде, со всеми доёбами до каждого атрибута в каком-то доисторическом классе и всё в этом духе. Очень прошу поделиться подобным, потому что заебало уже всё максимально. Или просто хоть напишите, как сами к собеседованию готовились, если вы работаете питон девом. В МВП не отправляйте. Там никто не сидит и не шарит, к тому же вопрос именно касается сабжа, а не других ЯП.
Аноны, есть одна проблема.В функции: https://pastebin.com/x0bdh59kмне возвращает старое значение list_of_text, хотя в той же функции текст добавляется к списку, и list_of_text должен возвращаться уже с новой инфой. ЧЯДНТ????
>>1446639>Как вкатиться в работу?Заходишь на hhru. Ищешь вакансии в своем городе. Если видишь что многим нужны технологии которых вообще не знаешь - учишь их. Жмешь ОТКЛИКНУТЬСЯ. Ждешь. Проходишь собес. Работаешь. Вопросы?
>>1446653Как нуб могу предположить, что где-то по ходу кода возбуждается IndexError.Так же, как нуб, я не очень понимаю, что делает указанная на скрине часть кода. Не нужен ли здесь return?
Как вставить текст из буфера обмена в список?Или вообще можно ли сразу работать с текстом в буфере обмена? Мне нужно будет находить в нем знак и копировать несколько символов после этого знака.
Писать гуевые приложения для винды на питоне это норм или я поехавший?Я не погромист, но раньше делал в офисе для теток и не только всякие утилитки для облегчения жизни на delphi. Сейчас немного начал питон изучать. Думаю для набора опыта переписать некоторые из них.
>>1446798>возбуждается IndexErrorДа, так и есть. Но даже если тут и возникает какая-то ошибка, то должен возвращаться list_of_text, который выше был дополнен.>Не нужен ли здесь return?Нет. Потому что скрипт вызывает себя еще раз, что бы проделать еще одну операцию, пока определенные условия не будут соблюдены, либо пока не вызовется ошибка.
просто интересно. на каком языке программирования в основном пишут программы которые работают в видеокамерах, стационарных телефонах, микроволновках и т.д.
>>1443245 (OP)А есть тут успешные джанго-разработчики? Как по вашему, что должен уметь/знать джун на эту позицию? Я вроде как подтянул базовые знания, попробовал в редис, селери. Даже жс на уровне ajax запросов выучил. Но на работу идти стремно, потому что кажется что я просто не смогу в энтерпрайз, я хуй знает какие там общепринятые практики и вот это вот всё.Я в основном для работы проекты пилил, на своих костылях. Работало, да и хуй с ним. Но работу сейчас хочется поменять.
>>1446653Нашел уже сам проблему, но появился другой вопрос: "Как остановить цикл, который СУКА НЕ ХОЧЕТ ОСТАНАВЛИВАТЬСЯ?"Дело в том, что в функции я запускал саму же функцию, но, если так можно выразиться, 1 поток функции не хочет оканчиваться даже если поставить после вызова функции break
>>1446874Си, кресты. Никто не пишет такое на жабе, тебе пиздят. Внутри твоей видеокамеры вообще ртос на сишке крутится почти наверняка.
>>1446919интересно на каком языке написано по на котором пикрил работает. пикрил 2000-го года выпуска.
Питонач, получаю я значит посты с группы и че бля? Получаю почти мгновенный "Rate limit reached" и это при 2500 - 5000 разрешенных вызовов, но вызвал ф-ию я только 2-3 раза. що за нах
>>1446938крч мой план такой: Если будет много людей, то надо будет делать сортировку, типа 2-3 чела подписаны на "двач" и, чтобы бот понимал это и делал вызов только один раз, а отсылал троим. Это нужно, чтобы, если 1к пользователей на двач подпишутся, то бот каждый вызов не херачил для этой тысячи людей.
>>1446953ну и снова возвращаясь к api vk или парсу. Парс все же надежнее, кто меня там заблочил, запросы бесконечные. А так это же пиздец, либо 100акков создавать, чтобы когда один терял доступ к апи система заходила под другим акком и обращалась к апи до тех пор, пока снова не блочнит, либо делать одного бота под конкретную группу, но это не устраивает меня. Я хочу, чтобы человек писал какие группы ему нужны, а бот сам все отправлял в виде новостей, вк тогда нахой не нужен будет.
>>1446958Вот же блядь, я теперь через приложение вк не могу получить посты со стены групп, тк превысил число запросов, лол
В очередной раз пробую закрыть гештальт и научиться в погромирование.В данный момент где-то на середине укуса питона. За что взяться после него?Тут еще такое дело, я не могу понять кто я по складу ума - гуманитарь или техноблядок, с голой математикой у меня всегда был пиздец, зато хоть сколько-то имеющие прикладной аспект (химия, физика) понимались нормально. Ну и есесно всякая гуманитарная хуита с легкостью заходила. Прошу учесть это при совете.
>>1447149Гуманитарий-хуянитарий. Тебе 14 лет, что ты такие вопросы задаешь? По твоему тут у каждого премия Тьюринга или что?Как завещали старейшины сначала ты должен запилить свою борду. Можешь начать "Python. к вершинам мастерства". Она углубляется в разные аспекты питона и вполне актуальна, кроме разделов с asyncio
Есть два потока, в одном я должен чекать появление новых постов в группе, а в другом слушать что прислал юзер боту. Как не пытался два никогда не стартуют, только какой-то один в зависимости от того, какой первый создашь. В чём проблема? Пробовал threading, _thread, вот версия через multiprocessing. Но суть то везде одна и та же, просто передаёшь функцию и запускаешь поток.
>>1443295Даже смотреть не буду в таком виде -- пости на пастубин.>>1443318За каким хуем вообще втыкают ченнелс в джангу, если можно сделать отдельный сервис на асинхронном фреймфорке типа того же торнадо? Вебсокеты это уже событийное программирование, а это не прерогатива джанги.
Аноны, есть вопрос.https://pastebin.com/UF6hPZVZДело в том, что мне надо, что бы код просто вызвал другую функцию (ge2) в функции (ge), и ничего не возвращал. Как мне это сделать?
Подскажите какие плагины мастхев или просто очень хорошие для pycharm? Например можно сделать автодополнение хотя бы примерно как в саблайме?
>>1443318Вот тебе две ссылки - должно помочь в понимании асинхронки. Вторая это часть цикла.http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html#fnref2https://ruslanspivak.com/lsbaws-part1/
>>1447313>return listУбери ретурн тогда. Строго говоря в питоне функции всегда возвращают что-то. Если явно не указан ретурн, тогда возвращается None
Братишки, сосу хуйца, как полагается всем, кто хочет стать великим программистом. На данный момент хуец состоит из нескольких индусских циклов. https://pastebin.com/kmTCkz2XХочу понять принцип, а именно почему после итерации в подцикле с 9 по 11ую строчки интерпретатор улетает в самое начало цикла на первую строку, а не продолжает бегать по подциклу, а потом спускаться ниже и ниже. ЧТО НЕ ТАК С ОТСТУПАМИ БЛЯТЬ? простите
>>1447470Что на вход подаешь и что пишет?Что эта хуита вообще делает?Если при входе в цикл x не a, b или c, то он так и будет бегать, потому что ты i не меняешь.Если ты хочешь посчитать все вхождения каждого элемента из трех, сделай нормальный проход по коллекции:for element in x:...а не байтоебский.
Изучаем пайтон Лутца 5-е издание ещё сохраняет актуальность? Если нет, то чем заменить? Вроде как эта самая новая книжка в шапке, но ей уже 6 лет, что вроде как не малый срок.
>>1447492Что такое bot.polling и почему бы подставляешь вызов функции, а не саму функцию? Если ты вызываешь функцию, то в target будет записан результат вызова (предполагаяется что ещё какая-то функция, которую можно вызвать), и только потом стартует процесс
>>1447316Вторая вообще не про асинхронку, там про низкоуровниевую работу с сокетами, что-то про HTTP, а потом они не к селектам идут, а к форкам.Первая тяжеловеская и с устаревшим синтаксисом, там asyncio.coroutine / yield from. Ну может если через генераторы разбирать внутреннее устройство асинхронной работы и нормально, глубже понимание будет, но это тяжёлый путь и опыт хороший нужен в питоне. В том числе с теми же генераторами, с работой с select, и т.п., а это серьёзный уровень.
>>1447554Обе ссылки объясняют простую вещь - высокопроизводительный веб-сервер реализуется на основе событий операционной системы. А первая объясняет что корутины в контексте asyncio это синтаксический сахар над callback-ами которые задаются таким событиям в качестве обработчиков.
>>1447546> почему бы подставляешь вызов функции, а не саму функцию?Блять, спасибо, что навёл меня на решение. Ты лучший
>>1447470Какой у тебя там подцикл с 9 по 11 строчку? Если условие после if имеет значение True, то он просто выполнит две следующие строчки кода, а код, следующий после else, выполняться по очевидным мне причинам уже не будет.
>>1447595Это тяжеловесно, ненаглядно, через это трудно продраться. И насколько я понимаю, в будущем от этого уйдут, внутренняя реализация может быть другой. Уже сейчас 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 какой-то полный ад.
Пацаны, не обосыти, а помогите! Только начинаю осваивать питон.У меня есть 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)
>>1447677Каким образом тебе его нужно перебирать? Что нужно делать с элементами списка language?Первое, что приходит на ум с таким количеством данных:for element in files:____for lang in language:________<какая-то операция>____<какая-то операция>
>>1447626Это хорошая база чтобы начать.И да, это видео я в свое время тоже видел и оно мне ответов на мои вопросы не дало. Поэтому я скинул эти ссылки, а не это видео. Ну и тогда уж можно было бы скинуть версию с переводомhttps://www.youtube.com/watch?v=ys8lW8eQaJQ
>>1447693Человек явно недавно вкатываться начал, а ты ему уже про PEP 8.Код, если я не ошибаюсь, всего-навсего считает количество 'a', 'b' и 'c' в строке x.
Ультра-нубас снова на связи.Я получаю все 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__))
>>1447711Вот так работает, но это костыль же, верно?И я не понимаю каких-то совсем основpath = os.path.dirname(os.path.abspath(__file__))files=glob.glob(path+"/bookstoupload/*.docx")
>>1447496Это задача на нахождение символов a, b, c в строке. Строка вида "aaaabbbbcba"Объясните пожалуйста неофиту, что есть>нормальный проход по коллекцииибайтоебский [проход по коллекции(?)]>>1447706ДА! Моя хуйня оказывается читабильна. вкатываюсь чуть больше месяца хз где менторов искать, вот пришёл на двощ, ведь здесь все мои друзья >>>1447613Моя теория была такова:- Сначала цикл бегает 2 и 4;- Потом выполняется условие else, и начинается подцикл между 9 и 11;- Потом работаетусловие else на строке 12, и идёт следущий подциклНо после выполнения первой итерации на подцикле 9 - 11 строки у меня интерпретатор уходит на первую строку. Не могу понять почему.
Не разбирусь как логгировать все ошибки?Вот в консоле мне пишет ошибку, всё заебись. Как это всё в файл направить?Пока придумал только py мойскрипт.py > log.txtНо это же костыль. Смотрю на модуль logging и нихуя не пойму, честно говоря.
>>1447733Там написано сделать вот так и будет заебисьlogging.basicConfig( level=logging.INFO, filename='app.log', filemode='a')но нихуя не заебись, пустой файл имею
Поцоны, подскажите нубу:class Stand: def __init__(self, name): self.name=namestand1=Stand('stand1')stand2=Stand('stand2')stand3=Stand('stand3')stand4=Stand('stand4')class File: def __init__(self, name, stand): self.name=name self.stand=standfile1=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=filesend = Request('send', [file1, file3])resend = Request('resend', [file1, file2, file3, file4])delete = Request('delete', [file4, file3])На вход получаем атрибут name класса Stand и атрибут name класса Request. В результате я должен получить объект класса File, который соответствует заданным значениям. Как это правильно реализовать?
>>1447738import osimport globimport loggingpath = 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()
>>1447743Ну вот смотри, у тебя в условии не сказано, что могут быть только символы a, b, c, сказано что надо учитывать регистр, то есть могут быть варианты AaaRtQppQbccccCcr и т.п.Поэтому ты не может так явно сравнивать. Идея решения такая:1) ты заводишь переменную "последний символ" и счётчик. Если текущий символ в последовательности такой же, как последний, увеличиваешь счётчик. Если же другой, выводишь "последний символ"+"счётчик", обновляешь переменную "последний символ", присваиваешь значение счётчику = 1.2) тут тонкости с тем, как стартовать цикл и с тем, как его завершить, чтобы не потерять последнюю группу символов. Несложно, но надо сделать. Разные способы есть.
>>1447748С регистром вроде вопросов нет.1) Погоди, "последний символ" это литера, которую в данный момент проверяет программа? Кстати, поясни почему счетчику нужно присвоить значение 1, помню, что я до этого как-то дошёл сам, но потом забыл. Почему не 0?2) В моём полном коде есть len(s), я ее как раз таки сделал, чтобы на последнем символе цикл прекратить.
>>1447757>В моём полном коде есть 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 += 1else: # это условие будет выполнено по окончании цикла, особенность питона print("{}{}".format(symbol, count))Не запускал, прямо здесь набил, но по идее должно работать.
Блядь, так как эти ебанные ошибки логировать в файл. Пиздос, уже индуса просмотрел, нихуя не понял.Я что при использовании import logging должен сам расставлять вот эти хуевины в коде? А если не расставил, то хуй мне, а не логи?logging.debug("This is a debug message")logging.info("Informational message")logging.error("An error has happened!")Что нет готовой библиотеки/модуля, чтобы все ошибки записывать в файл? Не может же быть такого
>>1447726>Объясните пожалуйста неофиту, что есть>>нормальный проход по коллекцииСмотри, пусть у тебя есть список xs, тогда просто пройтись по нему от начала до конца идиоматично можно такfor x in xs: print(x)А можно представить, что это массив в языке си и делать так:for i in range(len(xs)): print(xs) i += 1или дажеi = 0while i < len(xs): print(xs) i += 1Это правильно, но не так хорошо читается.По задаче отступы правильно, но ты не во всех ветвления прибавляешь единичку и индексу. Если бы ты сделал плоский свитч (if .. elif .. elif .. else) это было бы проще отловить.
>>1447712Нормально, но pythonic-way - это использование библиотеки pathlib при работе с путями:from pathlib import Pathpath = Path(__file__) / 'bookstoupload'files = path.glob('*.docx')
Хелпаните плз. Не могу понять как использовать классы дада, я тупой. Например как это сделать с классами и сохранением изменённого словаря. https://pastebin.com/T7hrSdJf
>>1447872class 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'))остальное сам сделай
>>1443245 (OP)Какая сейчас примерная зряплата для вкатывальщиков(в ДС)? Насколько трудно найти работку, если в приоритете не веб? Есть примерно год опыта ковыряния по вечерам своего кривого проекта на джанге и пандасах. Олсо до этого несколько лет кодил на плюсах, но это было давно и неправда.
https://pastebin.com/QSSd0dC2Как сделать этот уебищный кусок кода c проверкой нескольких условий более красивым и лаконичным?Использовать обратный слэш в питоне это вроде как зашквар и признак нуба.
Нуб уже который раз в треде. Как реализовать создание нового экземпляра уже с новыми параметрами на месте старого в теле method?>> f = Foo(1, 2, 3)>> f<какой-то объект Foo с атрибутами 1, 2, 3>>> f.method(2, 2, 8)>> f<какой-то объект Foo с атрибутами 2, 2, 8>
>>1447991Первое, что пришло в голову: if last_sym not in (",", ":", "=", "--") and len(line) > min_len.
>>1447991Как, блять, вообще один последний символ может быть равен двум '--'. Почему last_sym = line[-1:] А не просто last_sym = line[-1]
>>1447999Ты хочешь вообще все переинициализировать? Тогда наверное лучше сделать f = Foo(2, 2, 8), так понятнее, что ты пересоздаешь объект. Если хочешь часть атрибутов поменять, то просто в методе это и делайdef method(self, a, b, c):self.a = aself.b = bself.c = c
>>1447991>Использовать обратный слэш в питоне это вроде как зашквар и признак нуба.Иногда без него никуда не деться, если надо - используй и никого не слушай потом может быть отрефакторишь
>>1448037Пожалуй, подобный способ для моих целей подходит даже больше. Спасибо. Впрочем, и по своему вроде удалось реализовать.
Хай питонач, есть тут кто, кто шарит за апи телеги? Вопрос какой, можно ли сделать так, чтобы добавив бота и написав ему команды, бот самостоятельно отправлял какие то новости итд итп в личку? Можно ли как-то узнать идентификатор беседы юзера и бота или самого юзера?
>>1448067легкоsendmessage есть метод, указываешь юзверя, бот отправляет по @id-шнику ну или по числовому, надо его отдельно узнавать
Привет, анон-питон. Подскажи плиз фреймворк/либу для разворачивания простейшего сервака с парочкой роутов.Надо получать форму с чекбоксами по одной из урлов и после получения запускать скрипт.Короче нужно типа этого, с минимальным количеством строк и конфига, т.к это одноразовая хуйня для тестирования хуеты на другом ЯП.def my_hanler(req): print(req)server.start()server.listen(/api/huyapi/, my_handler)Обнял того, кто наведет на путь истиный.
>>1448073Ответ формы можно хоть через import http.server сделать.А так - бери Flask, ещё никто не жаловался на него.
>>1448078Спасибо, наверное import http.server возьму. Фласк излишен будет, мне там в прямом смысле 10 строк кода нужно - схоронять данные из формы в текстовый файл и больше ничего не делать
Хело, ананасы.Я в программировании вообще абсолютный нюфаг, в свое время баловался на начальном уровне CSS+HTML, шо как бы намекает, что я далеко не программист.Так вот, возникла внезапная необходимость собрать кое-какую хуевину...Существует огромный, сцуко, файл *.docx на почти тысячу страниц, состоящий из множества таблиц, в каждой из которых перечисляются люди, учащиеся на одной специальности, но в разных шарагах, и небольшого описания к каждой из них. В каждой таблице пять столбцов (на деле не совсем так, но для простоты представим). Первый столбец - номер строки, второй - id-число, третий - ФИО персонажа, четвертый - численное значение балла на экзе, пятый - трехзначный номер заведения, в котором персонаж состоит. Так вот, надо каким-то образом научить железный ящик выбирать из этого файла только персонажей из конкретной шараги и сохранять в отдельный файл, желательно - с группировкой по специальностям.Звучит совершенно не сложно, кажется (кроме этапа с подключением .docx файла), но у меня, как у человека, который в пайтоне только задачки на питонтьюторе решал, попытка представить принцип работы целиком вызывает когнитивный диссонанс.Так вот, товарищи, поделитесь, пожалуйста, как такую хрень можно вообще реализовать? Каким вы видите подобный скрипт? За любую информацию буду благодарен люто-неистово, только дайте направление, куда копать. Если в чем-то я проебался и это что-то нереализуемо - скажите, пожалуйста, что именно, что теперь делать-то вообще и вообще. И насчет реализуемого тоже что-нибудь скажите, пожалуйста.Сумбурно, но, как говорится, "часики-то тикают". Заранее спасибо, пацаны.
>>1448107Вооот, уже ответы пошли. Люблю анона. Попиздил гуглить, что это такое.Насчет пайтона - хуй знает, нравится он мне почему-то))9 Давно хотел заняться изучением, а тут вот такая необходимость возникла, я и загорелся чет. Но если на нем я слишком заебусь этим заниматься, то ладно, можно отложить, думаю. А на этой твоей хуйне мою хуйню будет сильно геморно склепать?
>>1448118Вах, ебац, типа прям с вордом работать умеет. Благодать. Покурю.А в принципе если отмести тот факт, что мне нужно работать именно с *.docx, на пайтоне это реализуемо?
>>1448104мне кажется легче в sql все записать, спарсить всё и записатьhttps://github.com/python-openxml/python-docx/issues/13там даже какой-то полуготовый ответ лежит, мельком глянулпарсишь таблицы и все запихиваешь в базу sql
>>1448123Оп, охуенно. Полностью ещё не прочитал, но выглядит полезно. Насчет SQL тоже покурю утром, попытаюсь вникнуть в твою мысль, анонче. Спасибо за годную ссылочку.
Анон, поясни в чём разница междуclass MyClass:____test = 0иclass MyClass:____def __init__(self, test):________self.test = testКогда и что юзается и какие есть подводные?
>>1448143В первом случае у тебя переменная общая на весь класс, то есть глобальная, во втором у каждого объекта своя переменная.
>>1448119Вся работа тут в подключении docx, парсинге данных, обработке разных исключительных ситуаций и наступании на потенциальные грабли. То есть 90% работы будет в том, чтобы загнать этот docx в какую-нибудь нормальную питон-структуру. А там уже можно легко и быстро данными манипулировать. Тут реально от питона ничего.
Есть парочка вопросов по телеге. Вот добавил я бота, написал ему, например, что хочу читать такой-то тред и приложил ссылку на него. Бот обработал запросик и начал слать ответь анонов. Эти ответы будут видеть все пользователи бота или именно тот пользователь, что написал ссылку треда? Если все ,то можно сделать работу бота по каждого пользователя, а не под всех?
Я правильно понимаю, что стоит делать бота для телеги без использования библиотек? Ну чтобы учиться с API работать и всё такое?
Щас работаю линукс админом, думаю стать питон макакой. Какие подводные? Не поздно ли делать перекат в 24 года?
>>1448056Ну это почти то же самое, что и a = Foo(5), только неявно, а питонодзен говорит, что явное лучше неявного, так что смотри, не отстрели себе ничего.
Поясните за сокеты, плз.Допустим, есть приложение на джанге. В это приложение хуйня на ардруине шлет гет запросы через форму и записывает их в базу. На другой странице они рендерятся в хтмл. Возможно ли с сокетами сделать асинхронное обновление этих записей, на странице которые они рендерятся, чет никак не могу понять? Потыркался в аякс, но там немного не то что мне нужно, там данные обновляются с указанным интервалом. А мне надо как только прилетело новое значение на сервер - оно сразу же отрисовалось у клиента
>>1448487> А мне надо как только прилетело новое значение на сервер - оно сразу же отрисовалось у клиентаZMQ/RabbitMQ
>>1448503Спасибо, буду в этом направлении рыть. Юзать это все равно с каким нибудь асинхронным фреймворком типа Celery, да?
>>1448507> асинхронным фреймворком типа Celery> фреймворкомЭто не совсем так.Смотря какая у тебя архитектура там вообще, можешь с Селери, можешь отдельно.
>>1448512Да у меня там нет ничего толком. Все просто, уровень не выше чем бложек из мануалов. Ладно, спасибо за наводку. Добра.
Есть ебучий датафрейм.В ячейках одного столбца есть ебучие кортежи, причем ключи там примерно одинаковы.Как вычленить этот сраные кортежи, так чтобы ключи стали новыми столбцами, а значения - значениями столбцов?
Хайль питонисты. Язык очень люблю, мне нравится на нём писать, да и опыта уже не мало. Но я не люблю веб, не люблю датасайнс и прочие математические приблуды... Мне нравится писать что-то, что используется повседневно, я был бы счастлив участвовать в разработке ворда, клиента стимача, Файерфокса и тому подобного.На данный момент я использую питон для разработки игор (но мне просто повезло, что есть финансирование. Не уверен, что если его перекроют я найду аналогичную работу) и для автоматизации задач (что своих, что помогаю девопсам в крупной ИТ компании из спб).Есть вообще при таких раскладах смысл продолжать задротить питон? Или стоит заняться джавой (которую я тоже люблю)? Или вообще уйти на C# (к языку претензий не имею, кроме того, что методы начинаются с большой буквы, а вот VS я непереношу. Но, наверное, можно привыкнуть)?Ваше мнение?
Хай питонач, написал я бота и залил его на пайтонэнивер, запустил и вроде работает, но бот принимает только команду /start, ни на что другое не реагирует, хотя вебхук установлен. Пробовал вырубить /setprivacy, но ничего не помогло. хелп. Прилагаю скрины.
>>1448805Можешь попробовать какой нибудь Рygame или Pyglet. Но сишарп пока что кажется более лучшим решением.
Как заставить эту хуету вернуться к началу цикла вхиле, а не переспрашивать, хочу ли я продолжить?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': Falsenickname = input ('Enter ur nickname ')name = input ('Enter your name ')lastname = input ('Enter govnour lastname ')user(nickname, name, lastname)
>>1448970Могу предположить, что вместо "False" нужен "break".В следующий раз выкладывай на pastebin. Облегчишь задачу и себе, и другим.
>>1448970А что ты такое хочешь сделать? По факту у тебя в функции вечный цикл, из которого нет выхода.
>>1448977Нихуя не вечный, и хуй знает что я делаю. Дошел до функций в учебнике и захотел немножко забежать вперед без подсказок автора
>>1448979Как же не вечный, если вечный? Твоё if quit == 'no':____Falseне сделал для его остановки ровным счётом нихуя.
>>1449007Если написать NO, то один хуй выйдет из цикла, просто проебался со значением. Вон на картинке более менее нормально сделал, например
>>1449007Ты не понял походу, я хотел анально заставить вернуться питон в начало цикла вхиле, чтоб оно запрашивало ввод с никнейма, нейма и ластнейма по новой.
>>1449011Для этого у тебя инпуты из промта должны быть внутри цикла, иначе как ты введёшь новую информацию? Один раз ввёл и всё, функция твоя раьотает только с уже введёнными данными
>>1448982Нахуя ты везде пробелы перед скобками ставишь? Тебе даже среда говорит, что ты еблан и что-то делаешь не так.
>>1449044Загугли как делать reformat code в твоём редакторе и делай регулярно. Таким образом легко изучишь pep 8
PyQt5 юзал кто-нибудь?Делаю кнопки, и у них коллбек с опциональным аргументом (какие-то кнопки передают его, какие-то нет).Коллбек типа такого:def onClick(self, opt_arg=None):И в общем когда делаю проверку этого optarg внутри функции, то он внезапно возвращает False вместо None, хотя пока никто и не передает туда ничего.В чем косяк? Нормальных доков по кути на питоне не нашел, поэтому хз какая там сигнатура.
>>1449165Бля, там в кликед еще передается чекед зачем-то.https://doc.qt.io/qt-5/qabstractbutton.html#clickedХотя во всех примерах пишут button.clicked.connect(partial(calluser,name)) и в коллбеке не смотрят никакой чекед, хуйня какая-то.
>>1449168Питонач на помощь. У меня есть функция, которая парсит всякое и отправляет их куда мне надо. Как мне сделать так, чтобы все повторялось? Кстати, все это надо отправлять нескольким людям, повтор отправки для всех разный и что отправляется тоже. Как реализовать отправку по времени, нужно ли использовать классы для этого?
>>1449185Сделай циклом.Что-то возможно стоит отдельными тредами сделать. По времени надо таймеры смотреть или системную дату.Задача не понятна нихуя.
>>1449188 крч, поступает запрос от пользователя, тип пропарси сайт и таких пользователей много, у каждого свои хотелки. Но смысл один, прога парсит сайт и повторяет это каждый час, например. Вот первый юзер пишет пропарси хх.ру и это в 14:00, получает результаты и через час бот снова их отправляет. второй пользователь пишет в 16 часов и бот должен в 17 ему снова отправить результат.
>>1449192Ну хз, храни пул ивентов, которые надо обработать. При запросе добавляй в пул инфу. В каком-то треде крути проверку ивентов.Или при запросе тупо на таймер вешай событие, а при отправке снова его засекай.Если это веб-сервис или тг-бот, там мб какие-то свои еще приколы есть.
>>1449185>>1449192Тебе нужны менеджеры задач, типа Celery и проще.Архитектурно: интерфейсный модуль получает от пользователя задачу и складывает в очередь сообщений, например просто в БД в виде строки или объекта"parse sweet-wet-pussy-cats.com 01:08:2020 14:00" одновременно у тебя крутится несколько процессов-воркеров, они сканируют эту очередь задач, забирают, выставляют флаг "выполняю". Как сделают, записывают итоговый результат куда-то, в файл или БД, выставляют флаг "выполнено" и ссылку на результат. Обмен заданиями/сообщениями можно делать через БД, это самое простое. Или использовать специальные брокеры обмена сообщений и/или менеджеры задач, от простых вариантов до энтерпрайз решений. Я бы рекомендовал начать или с обмена через БД, или с максимально простых брокеров, навроде такого: https://huey.readthedocs.io/en/latest/ потом поймёшь, что тебе надо и на каком уровне, нужен ли серьёзный инструмент и какой.
>>1449242Тебе не нужно заниматься программированием. Пойти в охранники, оставь программирования омежкам-задротам, которые понимают, чем имя переменной отличается от её значения. Например чем имя переменной отличается от строки.
>>1449244Не останавливай меня на пол пути! Я такой же сыч как вы!!! Я хочу научиться прогромировать! Так почему не работает?
>>1449242print (pidor % ('pidor', 'huila')) А вообще советую третий питон: 'you are {0} or {1} ? '.format('pidor', 'huila') или ещё проще f'{переменная со строкой №1} or {переменная со строкой №2}'
Анон, я знаю что нужное мне решение существует, но не знаю как его гуглить.Есть пользовательский ввод команды по типуcommand [-flag] [-flag ("attribute")]Как сделать обработку команд красиво? А то единственное что в голову приходит -- разбить в массив строку по пробелам, собрать те части, что с кавычками используя остаток от деления надвое, потом искать все, что начинается с - и проверять на наличие атрибутов (кавычек)
>>1449279>>1449305В смысле "третий питон"? Где его скачать? Я вроде последнюю версию качал, если что.
>>1449237>>1449228Вот же бля, сложновато. Придется доки читать и вникать. Благодарю. Думал сделать быстро, но придется попотеть. кст, а можно будет сделать таски ассинхронными?
>>1443245 (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:] / na = np.arange(20)moving_average(a)
>>1449370Не углублялся в задание, но твоя программа ничего не выдаёт, потому что ты результат работы функции ни сохраняешь, ни вводишь через print.
>>1449412Да, я даун, вроде вторую неделю уже учусь и почему-то подумал, что он щас без принта выведет всё.
>>1449450Вот этот чувак топовыйhttps://www.youtube.com/playlist?list=PLlWXhlUMyoobAlP3mZ0_uuJagsDSg_5YT>>1449433
>>1449470Сначала попробую на RabbitMQ сделатЬ, вроде полегче. Посмотрим. буду обращаться ,если словлю тупняк
Запилил свой первый пет-проект, стоит сюда выкладывать? Боюсь, что меня здесь затроллят и обосрут так, что мне уже не захочется дальше учить питон.
https://repl.it/@RaspberryPie/FortunateNegligibleQueryplanTypeError: put() takes 2 positional arguments but 3 were givenРазве там не 2 аргумента передается?
>>1449629И алсо как вообще понять, что я должен ждать с помощью 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 нет. Где прочитать почему?
>>1449317Правильное форматирование строк в третьем питоне такое:https://docs.python.org/3/library/string.html#format-string-syntaxТо, как делаешь это ты - легаси и ты рискуешь все сломать в в определенный момент. Ну и вообще, конечно, лучше сразу учиться делать по документации а не по старым туториалам от васяна.
>>1449635Бля, ну я хз, я вроде качал самую последнюю версию с сайта.>Ну и вообще, конечно, лучше сразу учиться делать по документации а не по старым туториалам от васяна.По документации я нихуя не понимаю. И учу по книге "питун для дытей", а это книга 2017 года, вроде не такая и старая.
>>1449370. Внутри пандас уже np.ndarray, зачем тебе в него явно переводить я не понимаю. Не надо самому городить математические функции, они есть в scipy или в самом пандас:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html. Не итерируйся без необходимости по нампайным структурам - лучше найди функцию которая сделает это за тебя на си, будет драматически быстрее. Когда работаешь с numpy + scipy + pandas, полезно мыслить вообще не циклами, а потоками данных и редьюсами.
>>1449636Дело не в версии интерпретатора, а в версии синтаксиса, которую ты используешь. Актуальный синтаксис - это 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 = 30000000print(f"Я питонист и зарабатываю {salary:#x}кк/нс")
>>1449640Спасибо, но я к сожалению ничего не понял.В общем-то та версия интерпретатора на которой я сижу не актуальна? Нужно качать формат стринг?
>>1449641Нет, просто вместо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
>>1449647Имею в виду, что некоторые вещи из этой книги могли устареть, даже с учетом того, что ее переиздавали.
Здрасьте. Никогда не работал с GUI, всегда довольствовался просто текстом.Теперь захотел для личных нужд написать кой-че, так что посоветуйте, пожалуйста, модуль для того, чтобы лихо написать программу с графикой (ничего особо фэнси, просто кнопочки, ползунки, чеклисты и поля ввода нужны).
>>1449631В документации всё естьhttps://docs.aiohttp.org/en/stable/client_reference.htmlcoroutine async-with get(url,...get - это корутина, соответственно её ты или вызываешь с await, ну или оформляешь явно в задачу, но это другая история. Если бы метод был обычным, в asyncio таких много, но в aiohttp.ClientSession вроде таких нет, то их уже надо вызывать обычным способом.status - это просто свойство.
>>1449681Хм. А если у меня такого с десяток: скраперы там всякие, утилиты, главное, что с ирл применением, плюс беки для петшопов и имиджборд с хуевым вырвиглазным фронтом, на собеседования есть смысл ходить?алсо я начал вкат в прогу через кресты, и без задней мысли могу хуячить указатели на указатели на указатели
>>1449928ДаИ это не нужно, что нового ты сделал? Ничего! Это можно найти за 2 мин гугления Не показывай это работодателю
>>1449953>И это не нужно, что нового ты сделал? Ничего! Это можно найти за 2 мин гугления >Не показывай это работодателюБольшую часть говна, которое пишут программистишки можно найти за пару минут гугления. Так что пусть показывает, хоть какой-то код лучше, чем ничего.
>>1449953>>1449928Pet-project и не обязан являться чем-то новым, с помощью него ты показываешь потенциальному работодателю свои скилли, сама идея не оценивается (по крайней мере в программировании так).Но показывать данный проект работодателю не стоит, тут я согласен. Во-первых слишком мало кода и проект слишком простой, во-вторых качество кода оставляет желать лучшего, видно что до джуна не дотягиваешь, причём довольно сильно. Есть, конечно, и положительные моменты: наличие readme, requirements и config-файла (правда ini не самый удачный формат), также хорошо, что есть логгирование и комментарии к коду. Судя по гитхабу это твой первый проект, так что вполне нормальный результат.
>>1449953>>1449980В качестве пет-проджекта не годится, понял. Это моя первая программа на питоне, решил для начала запилить что-то более-менее простое, так как еще не уверен в своих силах.
>>1449999Ну для первого проекта очень даже хорошо, я сначала так и подумал, что проект учебный. Но косяки и недочёты, конечно, присутствуют
>>1450017Слишком большая функция 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 например заюзать), плюс ещё по мелочи есть, прогони через линтер какой-нибудь.
Суп питонач. Изучаю celery. Не могу понять из контекста, что такое feed task. Это какой-то тип больших жирных задач или чего?
>>1450063> Решение элегантноеГовно решение. Что так, что эдак, файл все равно прочитается целиком, все строки. Поэтому лучше прочитать строки и явно сделать len(), а не городить неведомо что.
Питона я тупой.В чем разница между тредингом и мультипроцессингом? Можно ли импортировать другой файл в основной чтобы все инструкции импортируемого исполнялись фоном, это делать через мультипроц? И как это сделать мхеКак какие ограничения снимает мультипроц относительно трединга?
>>1450323Ты тормозишь.Если сделатьwith open('file.ext') as f:for line in f:do_somethingто ты читаешь файл построчно, он весь в память не загружается. Если файл небольшой, мегабайт, то иногда проще целиком прочитать. Но файл может быть и в сотню мегабайт и больше.
>>1450324Ты можешь запустить тред, тогда у тебя общий процесс, общая память, общие переменные и т.п. Но есть проблемы с GIL. А можешь запустить отдельный процесс, он не будет связан напрямую с основным. У тебя нет проблемы GIL, у тебя полностью независимое адресное пространство, свои переменные и т.п., но другие способы синхронизации данных, тебе явный обмен надо делать. Плюс перерасход ресурсов, каждый процесс память занимает.В питоне у тредов очень большие ограничения по производительности по сравнению с тредами. В обычном питоне, не PyPy, распараллеливания в этом случае фактически нет. Только если у тебя какие-то ресурсоёмкие операции во внешних модулях, написанных на C, исполняются, тогда есть смысл, и когда с блокирующими операциями ввода-вывода работаешь.Короче, читай теорию, это большая и сложная тема.
>>1450356Проблему я свою решил) В процессе решия оказалось что signal может быть только в мейн треде, если мультипроцессами это делать, то можно?Понял что нельзя в мультипроце жонглировать данными, гораздо сложнее общение одного с другим и вывод общего. Можно ли там же использовать global или все через сторонние места храниэений, бд или файл?Да надо будет почитать, но так сложно себя заставить. Спасибо за ответ.
>>1450399Это сложная область, лучше потратить время и полноценно с ней разобраться, поработать на тестовых примерах, чтобы треш не лепить.Есть разные способы взаимодействия между тредами и процессами. Вот есть shared memory между процессами, но лучше этого механизма избегать. Ты можешь потоки данных из одного процесса в другой слать, или через Queue, то есть очереди. Много разных подходов есть. Нельзя в двух словах объяснить. Это квалифицированная область, требует профессионального подхода. Найди время, чтобы разобраться.
>>1450415Хорошо, у лутца нормально объяснено это? Гуглинг выдаёт куару, по ней и разрешил свою проблему, но вопросов возникает много мелких. Примеры и задачи на эту тему тоже в шапке есть?
>>1450456Почитай в какой-нибудь книге по операционным системам (например в Таненбауме) главу про процессы и потоки для начала
Анон, нужна помощь ньюфагу. Есть часть кода пикрелейтед. Нужно, чтобы "yes" выполнялось и когда юзер вписывает Yes, и yES, и YES - словом, чтобы регистр не учитывался. Головой понимаю, что нужно использовать вот метод string.lower() - его нужно применить к answer, но пока не совсем понимаю синтаксис и не знаю, как его пристроить в этот код. Помоги, пожалуйста.
https://www.last.fm/api/show/user.getFriendsДобрый вечер. Как работать с подобным API в Python? Подскажите хотя бы, в сторону чего смотреть, а то я совсем нуб.
>>1450688Блин. Я был уверен, что метод надо было применить именно к answer. Но спасибо! А вообще, именно к введенной строке его можно применить?
>>1450696А как? Я не понимаю, как синтаксически составить такую конструкцию.answer = answer.lower(str(input('Another question? ')))возвращает ошибку, что answer не определен (кстати почему?)
>>1450704Потому что ты вызываешь метод .lower() для ещё не определённой строки answer, а не для твоего инпута. Правильным вариантом будетanswer = str(input('Another question? ')).lower()
Вкатываюсь в питон. Обьясните почему в шапке настолько старые ссылки? Хабр 2012 года! Гитхаб 15 года! >полезные материалы для начального уровня.2013 год.За это время питон вообще никак не развивался?
>>1450957>Вкатываюсь в питон. А другие вкатывались 5-10 лет назад и просто не следят, что там вышло нового для вкатывальщиков. Ссылки с книжками актуальные, там и 2017 книжки есть и даже новее думаю. Это надо бы как-то систематизировать, проглядеть материалы и рассортировать по каталогам "для вкатывающихся с нуля", "для вкатывающихся с других языков", для продвинутых, по технологиям и т.п. Но всем лень.>>1450957>За это время питон вообще никак не развивался? Сама основа языка почти не изменилась, для начинающих. Да и так почти во всех языках, кроме разных JS и совсем новых, которые только появились. База старая. Из нового только asyncio. Но это сложновато для вкатывальщиков.
Добрый вечер. Есть варианты сделать один атрибут "зависимым" от другого так, чтобы при изменении значения одного менялось значение другого? нуб пытается в ооп
Из A Byte of Python:https://pastebin.com/nrgwUu1WВ интерпретаторе всё работает, как ожидается. Но в jupyter-lab выводит какое-то говно:https://pastebin.com/kMMd0swV1 строка - создается объект2 строка - видно, что вызывается метод __del__ - не известно, по какой причине. В коде объект не удалялся. 4 строка - вызывается метод sayHi(), который возвращает поле объекта. Но при этом ранее сработал метод __del__. WTF?
>>1451058Почитай про сеттеры-геттеры:https://pythonz.net/references/named/property/С помощью этих механизмов можно реализовать то, что тебе надо.
Анон, помоги со словарями.У меня есть словарь, который будет изменять сообщение, введенное пользователем: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), программа возвращает1oneПочему так? Не пойму, откуда берется задвоение.
Пацаны, помогите, а не обосыте!Мне нужно подключаться из питона к опенвпн - запускать селениум и там работать.Я опенвпн запускать научился, но вот как дальше быть, если он не завершается же, а работает. Пробую через subprocess.Popen, но всё равно подключается только к впн, а дальше код не выполняется.import requests, os, sys, subprocess, timepath = '/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)Тут код запуска селениума
>>1451110>>1451058>чтобы при изменении значения одного менялось значение другогоЭто очень ОЧЕНЬ плохой стиль.Не надо делать такое ооп, пожалуйста.Всё должно быть явно.А в питоне - особенно, ибо сказано - explicit is better than implicit.
Я у мамы дурачок, можно мне как в JS?var callback;function setCallback(func){__callback = func}...callback("пизда накрылась")Или как реализовать обратный вызо
>>1451131В этом вашем питоне нет нормальных анонимных функций.(мне, как закоренелому анониму, это особенно неприятно, лол)Поэтому, надо использовать именованные.Гвидо так захотел.Вот так это делается, примерно:https://repl.it/repls/StarkFlatPrinter
>>1451131Конечно можно, ровно так же, как и у твоём примере.callback = Nonedef set_callback(func):____global callback____callback = funcили ты что имел в виду?
Привет. Читаю изучаю питон и вот в книге наткнулся на такое задание.С первыми тремя пунктами проблем нет, но четвертый немного вводит в ступор. Окей, сделал я так: https://pastebin.com/J6mvtVnBНо разве это правильно? Получается я всегда должен буду создавать копию массивов listCopyCopyCopy, это ведь отвратительный код? Про копирование массивов знаю, что делаем это таким образом: listCopied = listOriginal[:]. Но нельзя ли здесь где-нибудь поставить .lower()?Спасибо :3
>>1451145Попробовал вместо четвертой строки поставить это:currentUsersCopy = []for currentUser in currentUsers: currentUsersCopy.append(currentUser.lower())Получилось, практически, тоже самое, но более ебланово.
>>1451148Так они сами просят такое кривое решение, что тут сделаешь.Оно кривое. Я бы проектировал иначе, но это не будет соответствовать ТЗ.Я бы сделал словарь с записями видаusers = {'john' : 'JohN','pavel' : 'Pavel','michael' : 'mICHAel,}вот в таком словаре ты хранишь как ключ имя, приведённое к нижнему регистру, а как значение - оригинальное имя, либо более сложную структуру, если потребуется.Но это не про ТЗ.
>>1451150Мне кажется, что ты не понял задание. Тут данные юзеры будут вносить, а не я сам заполнять. И их может быть как три, так и тысячи. Хз, мб я не догоняю. До словарей ещё не добрался.
>>1451145Не надо копировать массив.Приводить к нижнему регистру надо непосредственно при проверке.Проходишь по new_users, затем, внутри, с каждым new_user проходишь по current_users и сравниваешь (в этот момент и приводишь оба имени к нижнему регистру).Всё.Ещё раз - копировать/преобразовывать массивы не надо.Рассматривать это как реальную задачу и "оптимизировать" - тоже не надо.В реале делают примерно как пишет >>1451150
>>1451103У тебя в словаре две пары ключ-значение. Для каждой пары происходит итерация цикла с принтом в конце. Первая итерация меняет твою строку на "1" и выводит, но другая не делает ничего, потому что в твоей строке нет "two", и выводит тот же самый input. Надеюсь, понятно выразился.
>>1451157Ну так когда я в седьмой строке проверку делаю, как мне currentUsersCopy завернуть в lower? Нельзя ведь метод ко всему массиву применить.
>>1451197Так господи, пройди ручками по всему массиву и проверь, ты вместо того, чтобы написать функцию на три строчки кода теперь всегда будешь искать вариант с сахаром?
>>1451206Покажи, пожалуйста, как это сделать. Я сейчас попробовал loop в loop завернуть, но получилось не то, что я ожидал. Спасибо.
>>1451209Что у тебя не получилось с вложенными циклами?Знаешь, с твоими проблемами тебе бы какой-нибудь курс по алгоритмам пройти. В котором тебе вообще не будут разрешать пользоваться никаким сахаром, чтобы с массивами работать по индексам и всё такое.
>>1451190Хм. Выразился-то понятно, но что мне с этим делать? Я думал, что основная фича for loops - это как раз проход по всему массиве информации.
>>1451197>как мне currentUsersCopy завернуть в lower?Гугли "python map function".Это вообще одна из фундаментальных вещей в программировании.Но, как я уже сказал, именно эту задачу так решать не надо.Это, как правильно заметил анон выше, скорее алгоритмическая задача, обходные пути тут искать не нужно.
>>1451278Переменная output не нужна.Или копируй сразу туда введёную строку, если не хочешь её портить, почему-то.В цикле надо делать encoded_message = encoded_message.replace(...)Выводить результат надо после цикла, а не в цикле.
>>1451291>Или копируй сразу туда введёную строку, если не хочешь её портить, почему-то.Это я хуйню написал, чисто на автомате.В питоне строки иммутабельные. Ну, и replace каждый раз возвращает изменённую копию, естественно.
>>1451291Спасибо за помощь, анон, с этим получилось, но у меня появился какой-то баг в коде, никак не могу понять, в чем дело.Моя программа сейчас переводит английские слова на фонетический алфавит нато (альфа, браво, чарли и т.д.), код на пикрелейтед, при вводе "test" возвращает вот такое:>Enter a message: test>Tango EcHOSierra caRomeo Tango eLiMike a OSierra caRomeo Sierra Tango Хотя должно возвращать Tango Echo Sierra Tango.
>>1451365Включи мозг.В словах, на которые ты меняешь буквы, есть те же самые буквы.Это надо делать по-другому.В цикле надо проходить по буквам строки: (for c in my_string): ...Для каждой буквы находить слово в словаре, и добавлять в список (напр. words).Потом: result = " ".join(words)Алсо - более кошерно будет использовать map вместо цикла:https://repl.it/repls/FriendlyEvergreenFormulas
>>1451380Вот именно поэтому программирование кажется мне таким трудным. Я еще не вкатывался в функции, поэтому особо их не понимаю. Можешь, пожалуйста, объяснить свой код?s = 'ololo'd = {'o': 'Oscar', 'l': 'Lima'}Тут все понятно - исходная строка и словарь с парами ключей и значений.def trans(s): return dОпределяешь функцию (которая зависит от s?), а вот что именно делает вторая строчка, я не совсем понял.res = ' '.join(list(map(trans, s)))Объединяешь что-то.print(res)И выводишь результат объединения
>>1451385s - это _параметр_ функции.Функция должна вернуть значение, используя этот параметр.Вторая строка (7-я в коде на repl.it) - получить слово из словаря по букве (параметр s) и вернуть его из функции.Попробуй там сделать print(trans('o')) - всё станет понятно.Функция map преобразует любой iterable-объект (коллекцию - список, строку и т.п.) в новую коллекцию, преобразуя каждый элемент через функцию (trans в данном случае). Т.е. коллекция букв превращается в коллекцию слов.Функция list преобразует результат именно в список (после map - там не список, а специальная коллекция). Она там НЕ нужна, я просто давно не писал на питоне, и добавил для перестраховки.Т.е. можно просто:res = ' '.join(map(trans, s))" ".join(coll) - это метод строки. Он соединяет элементы коллекции в строку результата, используя данную строку (у которой он вызывается) как соединитель. Т.е. соединить элементы коллекции пробелом, в данном случае.
>>1451395Спасибо большое за подробные ответы, анон, буду изучать. Исходя из нашего диалога, скажи, пожалуйста, в чем у меня основная проблема этого непонимания? Может, порекомендуешь что-нибудь конкретное почитать?
>>1451406Практиковаться надо.Причём, на элементарных вещах.Вещи типа 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/
>>1451126Ну а как здесь иначе? Я без претензии спрашиваю, мне правда интересно. Не создавать же каждый раз новый объект Foo, если хочется изменить нужное мне значение.
>>1451446Новый объект тут ни при чём.И, конечно же, такие вещи можно делать, но, надо чётко понимать, зачем.И стараться избегать этого.Я имел в виду, что изменение _другого_ аттрибута, в результате изменения первого, должно быть _явным_ и _очевидным_.Т.е. лучше сделать отдельный метод, с соответствующим названием, типа change_something(...). Или вообще отдельную функцию.Кроме тех случаев, когда взаимозависимость этих аттрибутов очевидна и естественна - например, изменение полного имени в результате изменения фамилии или отчества. Но, даже это - неоднозначный вопрос.Также, полезно в принципе делить объекты на "данные" и "сервисы".И в объектах "данных" такие вещи строго нежелательны.См. например, книгу "Object Design Style Guide" (она, правда, ещё не вышла, хз есть уже пиратка или нет). Там примеры на псевдокоде.Ну и гуглить такое можно, например.
>>1451451"Явность" и "очевидность" пока для меня выглядят как какие-то крайне субъективные категории, и я не очень понимаю, почему тот способ с сеттерами-геттерами в них не вписывается. Сделать отдельный метод - не проблема, да и вообще первое, что приходит на ум. Было интересно, можно ли обойти необходимость вызывать этот метод "вручную" и вместо этого "автоматически" изменять значение одного атрибута вместе со значением другого. Ну, на "нежелательно" и суда нет.Так или иначе, спасибо. Буду думать и изучать дальше.
>>1451221Ну, тут ты флаг используешь. А я до этого не додумался, хоть и по книге я этого не проходил. Спасибо, интересное решение. А почему у тебя флаг равен флаг ор тру?
>>1451493Ну смотри, на самом деле элегантное решение с флагом это как на пике(1). Я тебе написал с ветвлением, чтобы было нагляднее, но по сути это одно и то же. Что мы тут делаем? мы делаем проверку для каждой пары элементов из двух списков и логически прибавляем к boolean переменной. Таблицу истинности дизъюнкции помнишь? В нашем случае, если хоть один раз условие равно единице, то флаг тоже становится 1. Иначе флаг остается 0.Полезность такого флага в том, что мы можем его влепить в любой уже написанный алгоритм, работающий с какими-то данными и проверить, есть ли в этих данных элемент, удовлетворяющий нашему условию.Вообще, следующим шагом оптимизации будет прекратить проверять условия, если одно уже истинно, в этом нет смысла, потому что так и так нужно выводить, что имя занято.Вот тебе пик2 с применением break(ты же его прошёл?). Как ты можешь видеть, тут мы используем то, что у цикла for есть else-block, он сработает, если цикл прошёл все итерации. Если мы закончили цикл досрочно оператором break, то else не сработает.Дальше мы видим, что флаг, ищущий определённый элемент в списке нам уже не нужен, если мы этот список полностью не проходим, поэтому мы лишнее убираем. Вот тебе пик 3.Хз зачем я это всё расписал так, ну надеюсь, что тебе немного поможет.>>1451529Хз, насколько это правильный выбор, но я после укуса питона начал вот этот курс http://judge.mipt.ru/mipt_cs_on_python3/Там и лекции и практики интересные, вообще годнота, короче. Но я его ещё не закончил, и вообще новичок сам.Кстати, где-то в нюфаг треде есть ещё один анон, который этот курс проходит.
>>1451579В камелкейзе у него было изначально.Код на три строчки нужно заливать на пастебин каждый раз?
>>1451482Если ты только изучаешь всё это - то не обращай внимания.Для поиграться - это нормально.Хороший дизайн - это уже следующий этап.
>>1451571Спасибо, до брейк ещё не дошел, но там нет ничего сложного. Объяснение твое помогло. Ещё раз спасибо, успехов и тебе в обучении :3.
Подскажите книжку для новенького, попробовал "Charles Severance" показалась слишком трудной..и нудной