Прошу ещё раз нормально пояснить за деплоинг ботов. У меня есть бот, который просто постит пикчи раз в час, через time.sleep() Пикч много (15 гигов), что мне это всё на хероку добавлять? Звучит как какая-то глупость. Как правильно сделать?
Вкатываюсь в фулл стакдля начала с Джанго. 1) Как лучше изучать джанго по русскоязычным материалам? Прошел django girl и туториал по 1.9, читаю документацию, но она слишком разрывная, и приходится кидаться от материала который мне пока еще рано или не нужно, к нужному, но так как это всё в отрыве друг от друга, нормального обучения не выходит. Копаю код на гитхабе в обнимку с документацией, но опять же... посоветуйте может какой то целиковый поэтапный мануал или просто годный материал, который поможет с пониманием того, что я пишу и вижу.
2)Как лучше изучать фронт... отдельно html+css+js или сразу Bootstrap? Или может есть какой ни будь подобный фремворк или в обще идея как быстрее вкатится в вёрстку?
Анон, подскажи. Я долго выбирал что из ЯП изучать, сначала C++, потом Java, сейчас начал Python и он мне действительно понравился по сравнению с плюсами и джавой. Только вот подскажи, есть ли фриланс на питоне, чтобы тысяч на 10-15 в месяц? И что вообще в основном разрабатывается на питоне? Сайты и веб не очень интересует. Как я понимаю, питон отлично подходит для вычислений, работы с большими объемами данных, а что еще?
Ребят, подскажите, где можно найти сборник небольших заданий, таких чтоб продвинутый начинающий после Лутца мог за час сделать. Хочется держать себя в форме, пока занимаюсь другими делами.
Написал многопоточный скачивальщик файлов, он работает в 100 потоков, но постоянно количество одновременно работающих потоков падает до 0. В чем проблема?
1. Как мне у пик релейтеда взять среднее по столбцам?
2. Как нарисовать несколько графиков на одном холсте? У меня есть dataset, разделённые на 2 периода. Я хочу по оси абсцисс вывести значения из обоих периодов, то есть из оригинального датасета, а потом нарисовать там прямую по первому периоду и по второму. (периоды на 2 пике)
>>1119644 >1. array[:,col_idx] Traceback (most recent call last): File "rail_0.py", line 36, in <module> ppc = ppc[:,col_idx] NameError: name 'col_idx' is not defined
>>1119377 Ну очевидно же, что твой сервис должен картинки откуда-то брать. Выбери откуда и бери оттуда, бля. >>1119533 Во-первых, фриланс хорош если ты заебато делаешь. Во-вторых, пифон плохо подходит под числодробильные задачи. Всё что есть в пифоне для ебли с числами сделано на си или каких-то других языках.
Почему питонисты так озабочены 80-символьными строками? Писал на 80 символах, постоянно приходится разбивать и собирать строки. Увеличил лимит до 120, забыл про разбиение строк, впоследствии собрал статистику по большой массе своего кода, единицы строк переходят лимит в 100 символов, однако >80 символов встречается не так уж редко. Некоторые языки вообще не ограничивают длину строки никакими стандартами. Почему же тогда именно питон, indentation-based язык (!), так топит за 80 символов? Нет, я понимаю, что в pep8 прямо так строго не написано, там вполне адекватная рекомендация, но вот люди с которыми мне приходилось работать — им-то зачем эти пресловутые 80 символов?
Аргументы о лучшей читаемости™, возможности работать с калькулятора в split screen, о предотвращении излишней вложенности — уже слышал, не убедили, я одинаково хорошо могу читать и на 80 и на 120 символах. Излишнюю нагруженность кода не даст сделать сам синтаксис: ванлайнеры только в перле диды шлёпали, сейчас так никто не делает. И всё-таки зачем и почему это так популярно именно у питонистов?
>>1119605 Спасибо, японский вытаскивает нормально. А вот англ выдает ошибку. Наверное, надо было добавить, что html не отдельный, а уже как найденный кусок.
Ребята, кто писал ботов для телеги, ориентированных на большую аудиторию? Какую обвязку советуете использовать? Сейчас пишу используя Telebot, mongodb, aiohttp
Как правильно сделать асинхронное взаимодействие с ботом? Стоит под каждый коллбэк свой хэндлер выделять, или в одном хэндлере через if определять действие?
>>1119724 Няша, ты пишешь разу не делил экран на два-три окна с кодом на ноуте? Там не 80, там 40 колонок сделать хочется, учитывая, что справа ещё и браузер. А вообще, наследие консольных текстовых редакторов. Особенно в git, в сообщениях коммита.
>>1119738 >Подобное индексирование, с запятой, возможно лишь у numpy'евских массивов, а не обычных списков. Оказалось, что это словарь. Сделал ppc = ppc['accidents'] и всё заработало.
>>1119715 > Ну очевидно же, что твой сервис должен картинки откуда-то брать. Выбери откуда и бери оттуда, бля. Хорошо, очевидно, куда, амазон 5 гигов разрешает, с гугл сторейдж я просидел вчера часа 4 и нихуя не понял как оттуда по апи выкачивать картинки выкачивать. Что выбрать?
Ещё вопрос, по сути я же могу взять впс, скачать туда локально все картинки и просто запустить этот скрипт там и он будет бесконечно их постить за бакс в месяц?
>>1119779 > по сути я же могу взять впс, скачать туда локально все картинки и просто запустить этот скрипт там и он будет бесконечно их постить за бакс в месяц? Ну да, пока трафик не кончится.
Как прогнать beautifulsoup через ссылки в отдельном csv? Еще проблемы возникают из-за множества отдельных тегов. Вот код: https://ideone.com/4RDebh
Не могу понять, в чем проблема. На отдельной ссылке выдает результат, как положено. А вот когда пробую прогнать по списку url, возникает какая-то ерунда типа:
Price: NA Sale: NA Status: NA Sell price: NA Price: NA Sale: NA Status: NA Sell price: NA Price: NA Sale: NA Status: NA Sell price: NA
>>1119761 Но зачем его делить если есть аж целые воркспейсы с хоткеями? Очень редко нужно действительно в двух местах один файл подредактировать, но я считаю это не стоит убитых усилий на постоянный реиндент кода.
>>1119779 >>1119853 Меня твои истории просто доебали уже, я уже не могу их слушать, блядь! Одна история охуительней другой просто! Про картинки, блядь, про какую-то хуйню, амазон, гугл сторейдж... Чё ты несешь-то вообще? Ты можешь заткнуться? «Впс блядь, взять — за бакс в месяц». Чего, блядь? Про что несешь? Вообще охуеть.
>>1119893 Ну два файла в вертикальном сплите-таки часто очень полезны, я бы сказал. Другое дело, что у меня на 15" помещается по 131 символу в кажом из окон.
>не стоит убитых усилий на постоянный реиндент кода. Да не так уж и много усилий требуется. Широкими только логи или вызовы функций с кучей аргументов получаются, но это не так уж часто.
Вроде как, 80 (вообще, чего-то про сотню уже когда-то я видел) это просто рекомендация к чему нужно стремиться, чтобы держать себя в руках, но если ты видишь, что нужно больше и не является кривожопым новичком, то спокойно делай больше (в разумных пределах).
>>1119863 >Вот код: Это не код, это пиздец полнейший. Разбираться в этом никто не будет, уверяю.
>На отдельной ссылке выдает результат, как положено. А вот когда пробую прогнать по списку url, возникает какая-то ерунда Значит ты не так проходишь по списку урлов. В идеале должно быть: for url in urls: data += get_data(url) То есть несколько урлов это просто надстройка над уже имеющимся обработчиком ссылки, и 1 там она или их 20 влиять на, собственно, скачивание данных не должно. Как у тебя сделано я не знаю, смотреть больно. Вот подправил последнюю часть, уж хотя бы так сделай, а не десять раз один и тот же код копируй — https://ideone.com/2K5Pnu
Есть путь к файлам такого вида a/name1 a/name2 b/name1 b/name2 c/name1 и тд. Нужно как-то загрупить это всё по директории, то есть чтобы файлы из кажой директории "а" находились в отдельном списке, как это лучше всего сделать?
Aноны, как это в SQLAlchemy впихнуть(в смысле через её методы полностью код оформить)? Или не выёбываться и продолжать юзать exec ? https://pastebin.com/Zcputfqk
>>1120056 >>1120059 Спасибо за советы. Это такая первая проба с bs. В общем я там поправил в конце и еще понял, почему он неправильно записывал в csv. Теперь все работает нормально хотя выглядит все равно хуево.
Ошибка: Traceback (most recent call last): File "backup_ver2.py", line 21, in <module> os.mkdir(today) # создание каталога FileNotFoundError: [Errno 2] No such file or directory: '~/backup/20180115'
>>1120206 Хотя не тут-то было, все работало и работало, а на 5527 ссылке опять ошибка вылезла. Здесь: status1 = page_soup.findAll("li", {"class": "selling_price"}) Status = status1[-1].text.strip() or 'NA' list index out of range.
Пробовал так заменить: Status = status1[-1].text.strip() except IndexError: Status = "NA" Но тогда он выдает совершенно другой параметр. Хотя статус именно находится в последнем элементе на всех страницах. Очень странно.
Блядь, как загрузить свое говно на ебаный pypi? Я уже охуел, аж жопа вспотела. Регнулся, все везде указал, на гитхабе все подогнал, сетап написал, зависимости указал, конфиг создал, pypirc заполнил, блядь, в dist билд пиздоблядский лежит, делаю python setup.py sdist upload, а он мне говорит:
Submitting dist/govno.tar.gz to https://upload.pypi.org/legacy/ Upload failed (503): Service Unavailable error: Upload failed (503): Service Unavailable
ЧЕГО, БЛЯДЬБ? Какой нахуй легаси, какой нахуй 503? Хуле ему надо, блядь? У меня проект из одного файла без километра зависимостей, почему я должен так страдать? Почему блядь нельзя просто в веб-морде этого говнопипа указать ссылку на гитхаб, чтоб он сам все подхватил и сожрал? Какой-то каменный век, блядь.
>>1120507 Пришлось long_description в setup.py заполнить контентом из ридми, сам файл ловить не хотело, что README что README.rst. Пиздец я напердолился конечно, deb и то легче собирать, особенно порадовала невозможность апдейта/перезаливки версии, даже на тестовом сервере. На каждую попытку запихнуть ридми как мудак создавал новую.
>>1119374 (OP) Ебал вас в рот, питонобляди. Ну вот что за мразь придумала MIXINS i.e MULTIPLE INHERITANCE? Просто охуеть, эти долбоебы даже не подумали, что вместо этой хуйни код реюзать можно с помощью КОМПОЗИЦИИ и ввели ЭТО в язык. Какой же питон жалкая подобия жабы, я ебал. И как только чувакам удаётся писать на этом говне.
Есть список [1,2,3,4,5,6,7,8,9,10,11] Как сделать так, чтобы у меня получился список, в котором будут списке по 10 элементов? Т.е. [ [1,2,3,4,5,6,7,8,9,10] , [11] ] Стоит отметить, что количество всех элементов в списке не ркатно десяти.
>>1119374 (OP) Пацаны-питаны, подкиньте мне, пожалуйста, годную книженцию/тутор по джанге на русском. В данный момент читаю Lightweight django от орли на ангельском, дюже туго заходит. опрос сделал, мне не хватило
Допустим, есть две функции, каждая из которых запускает некоторый бесконечный цикл. Каков простейший способ заставить эти функции выполняться параллельно? Юзать acyncio или есть способы попроще? Спасибо.
>>1120923 Не в гиле дело, там дальше чередоваться они начинают. Просто пока запускается второй тред, первый уже нахуярил много принтов, которые выполняются гораздо быстрее.
Аноны, нужно занести в list функцию с 2 изменяемыми параметрами(параметры берутся из двух различных списков). Как однострочник написать для этого(если вообще можно написать) То есть мне нужно имея: param_first = ('q','w') param_second = ('z','m') def fun(frst, sec): ____ pass Получить: tasks = [ fun('q','z'), fun('q','m'), fun('w','z'), fun('w','m'), ]
Господа питонисты, вопрос может быть больше к математике, но тем не менее. Как бы мне написать такой класс отрезка(в n мерном пространстве), чтобы я в конструкторе задавал две точки(начало и конец), а при вызове какой-нибудь функции типа getLineCoord(float от 0.0 до 1.0) получал координаты точки на линии, относительно коэфициента, который передаю в фунцию т.е. если это 0.5 то вернет координату середины линии, 0.1 - вернет точку на линии, которая отстоит на одну десятую от начала отрезка и т.д. чтобы было удобно "перемещаться" по отрезку. Параметрические уравнения это то что мне нужно? Что-то не очень понимаю как это записать в коде.
>>1121343 Спасибо анон, все оказалось очень просто и очевидно. Вроде что-то знаю в матане, но всегда теряюсь когда увеличиваются размерности. Недавно тупил как найти условный центр набора точек, хотя в 1d мне бы сразу пришло элементарное решение: среднее арифметическое координат. Чувствую себя унтерменшем.
>>1120728 Учи английский, ну ебанарот. Ты с этой русскоязычной литераторой всегда в доме будешь. а так читай перевод доки, там 1.9 версия переведена практически полностью
>>1121448 Все у кого есть желание вместе вкатываться в Django и веб с python разбирая сложные моменте и проекты, делясь актуальными материалами и тд, заходите https://t.me/pythonchick
Поясните за такую проблему. У меня есть файлы, которые должны быть в определенном порядке. На локалхосте всё без проблем можно создать список с правильным порядком и то же самое можно сделать на продакшене, но там это будет делаться через стороннее АПИ, где это делается достаточно долго. Но порядок такой же. Единственный вариант, который я вижу — это тупо захардкодить список из 1500 элементов, но ведь это наверняка тупая затея? Может ты знаешь что-то лучше, анон?
Есть два списка: приходящий свыше список данных в каком-то случайном порядке и хранящийся локально список айдишников в нужном порядке. Список айдишников может содержать как меньше элементов, чем в спиское данных, так и больше. В спиское с данными может не оказаться ни одного из нужных айдишников.
На выходе требуется получить упорядоченный список, в котором сначала будут идти те элементы, которые есть в обоих списках, причём именно в том порядке, что указан в локальном списке, а затем все остальные из списка данных в каком угодно порядке. Лишние элементы из локального списка игнорируются.
Накалякал вот так — https://repl.it/repls/VirtualHotPonyназвание хорошее, но не уверен, оптимальный ли это вариант. Списки мелкие, производительность не особо волнует для практических целей, но правильный подход, если я херню сделал, пригодился бы. Дело не в питоне происходит, если что.
- создаешь множество из списка, приходящего свыше - для каждого элмента локального списка смотришь, есть ли он в множестве см. выше, если да, то 1) добавляешь его в результат 2) извлекаешь его из приходящего свыше списка - к результату приклеиваешь то что осталось от приходящего свыше списка - ??? - пруфит
>>1121548 Насколько мне известно файловые системы не определяют порядок файлов. Там что-то вроде хэш-таблиц. Сортировки делаются уже от полученного списка. Сортируй и складывай в кэш если что-то долго считается, но редко изменяется.
пацаны на vps-ке крутится джанга которая запускает скрипт с телеграм ботом, и короче иногда нужно данные синхронизировать с одним сервисом, поскольку это долго, я сделал их выполнение в бэкграунде с celery, так вот раз в сутки redis-server просто выключается без видимых на то причин. я стал запускать прямо в пистоне ( пик ). два вопроса: это плохая практика ? если да то как исправить?
Описание: Following the trails of your lost master - Λoile - who you inherited your mad programming skills from, you have finally caught a lead and begin your adventure into the dungeon where progress can be made. To pass the first cave, you need to crack the code on the podium sitting in front of the gate, blocking you from moving onwards.
Fortunately, you have access to the internet, make good use of it. To pass, implement the function in your language based on the code as given. Good luck!
>>1121642>>1121575 ну ёба, коммент по поводу out.append(p) там для кого бы? В любом случае, принцип тот же: лупимся по локальному, добавляем что есть, а затем всё остальное. Я, впрочем, даже и не знаю, зачем спрашивал, тут ничего другого-то и не сделать, но немного надеялся на какой-нибудь магической оператор.
Насчёт remove норм идея, но мне, во-первых, эту хрень в actionscript'е накостылять надо, я хз что там с remove и extend, во-вторых, именно элемента из preferred_order в elements лежать никак не будет, а значит ещё один луп на поиск индекса для удаления), ну и в-третьих, затратно эти все удаления будут на больших списках.
>>1121743 >>1121606 сурс не должен тут срабатывать. Если нужно из виртуального окружения интерпретатор вызывать - это нужно делать явно. Как в сервисе, короче.
>>1121748 ну я из глобального питона даже celery не смогу вызвать, gunicorn и все такое запускаю только после source blabla судя по всему все отрабатывает нормально и виртуальное окружение тоже запускается. если бы нет, выдавало ошибки что celery не установлен
>>1121764 Виртуальное окружение по сути это просто папка с симлинком на обычный питон и локально установленными библиотеками. Т.е. celery находится ВНУТРИ виртуального окружения и ее можно запускать (и нужно) прямо оттуда. Однако чтобы постоянно не пользоваться длинными абсолютными путями придумали легкие способы быстро перенастраивать среду - всякие virtualenv специфичные, кстати, для разных шелов. То, что у тебя всё работает - необычно, не факт, что так будет всегда. Я бы запускал так: venv/bin/.../celery При этом сделал бы это отдельным сервайсом, который бы зависел от сервайся реддис. Дергать же всё это из питона - такое себе.
Как поменять у объекта тип? Есть module1.class и module2.class, они одинаковы за исключением наличия некоторых методов, хотелось бы менять поменять тип и использовать их.
>>1121777 > Я бы запускал так: venv/bin/.../celery При этом сделал бы это отдельным сервайсом, который бы зависел от сервайся реддис. Дергать же всё это из питона - такое себе.
Почаны подскажите: 1) tornado же чисто на питоне написан, откуда у него берется эта чудо мощь ? 2) с pscorpg2 можно нормально работать из торнадо или нужен другой драйвер для бд?
>>1121959 1) Что там такого мощного? Те же сисколлы дёргает что и остальные, гринтреды/корутины вместо системных потоков, неблокирующие вызовы — всё стандартно. 2) Нужен другой, https://github.com/FSX/momoko 3) Бери asyncio/aiohttp/aiopg. А ещё лучше подумай ещё раз нахуй тебе это всё надо, успокойся, возьми джангу, сделай и дальше покорять мир, пердолятся пусть другие. Если только тебе не чат вебсокетный нужен.
Аноны, можно ли в aiopg/asyncpg применить выборку данных к уже выбранным? Я сделал селект из базы по значениям трех столбцом, затем, я этот селект хочу еще разбить на два и поработать с ними(update/delete). Дело в том, что записей много -1кк+, первый селект достает около 50к данных, а второй и третий эти данные еще разбивают на две части и происходят основные вычисления. P.s. С sqlalchemy все совсем медленно, хотя логика такая реализуется просто. Посматриваю уже в сторону многопоточности.
Сап, питонщики. Может кто пояснить, как при помощи пакета анаконда получить АЧХ зная диффур? Я нашел решатель, как построить фазовый портрет, но АЧХ нет в руководстве читал какое-то на русском, может оно не полное.
>>1121593 Я не знаю как в кэш что-то складывать, но это посмотрю, кроме всего прочего. Когда я буду доставать через АПИ, то там ещё нужно будет более сложные сортировки проводить, отедять строки, присоединять и тд, а так у меня сразу есть отсортированный список с конечными результатами, всё равно лучше в хэш?
>>1122041 Мультипроцессорность, в смысле. Запилю в каждый процесс по SQLAlchmy сессии и погоняю. >>1121994 Бумп вопросу, неужели никто не юзал асинхронный PG с йобо-логикой?
Сука, я не понимаю, что я не так делаю, ввожу может быть неправильно? Подскажите, а то на месте топчусь, такая же хуйня с другими операторами >>1122016
>>1122066 >через консоль Вот тут поподробнее, а то я совсем всратый в этом плане просто происывая имя файла он говорит, что не видит его, понятия не имею, в какую директорию ему файл нужно деть
>>1122068 ну во-первых, если ты просто в консоли напишешь python, заходит в интерактивный сеанс? Если нет, то нужно добавить в path, гугли как добавить python в путь. Еслиа да, то просто перейди из консоли в папку, где скрипт cd d:\\path\to_folder и там напиши python if.py
>>1119486 Чисто к сведенью, с опытом верстки 15+ лет, я так и не смог осилить bootstrap. Он мне очень нравится, но очень сложно инсталлировать все его инструменты для его работы и, кажется, проще на линуксе.
>>1122072 Да, заходит >то просто перейди из консоли в папку, где скрипт как, при условии, что я еще макоблядь, а скрипт у меня на папке на рабочем столе? после винды пиздец непривычно это все
>>1122080 Блять, спасибо, мил человек, но 2 вопроса 1. Что не так с сублаймом 2. Как в консоли настроить, чтобы постоянно ссылаться на эту папку, а не прыгать в нее каждый раз?
>>1122087 > 1. Что не так с сублаймом без понятия, я сублаймом пользуюсь только если какие-то скрипты нужно навернуть и хз, возможно, там второй питон экзекутиться, а во втором вроде правильно raw_input хз, не уверен. > 2. Как в консоли настроить, чтобы постоянно ссылаться на эту папку, а не прыгать в нее каждый раз? echo "cd ~/Desktop/" >> ~/.bashrc
Подскажите за деплоинг ботов, локально всё работает, отправляю на хероку — нет. Procfile, requirements, runtime — всё есть. В прокфайле написал web: python bot.py Что может быть не так?
Графики пустые, очевидно, потому что массивы, которые ты пытаешься отобразить, пустые. Пустые они по двум причинам: 1. Ужасный названия переменных, за такое убивают. 2. >np.append.Amplituda1 = ... >np.append.Chastota1 = ... Это что, блядь, такое? Откуда ты это взял? Прочитай ещё раз, как элементы в массив/список добавлять.
>>1122229 Это заблуждение. Регэкспы надо использовать, когда это возможно. А вот изобретать велосипеды - ошибка. Другой вопрос, что особо сложные случаи - это отдельные задачи и к ним нужен свой подход, решать всё подряд через регэкспы - вот ошибка. Ну и даже там где регэкспы применимы, нужно придерживаться хорошего стиля, сравни вот это: https://pastebin.com/VwskMCRp вот с этим: https://pastebin.com/d5E2CDyf - одно и то же ведь написано. Да, можно делать хитрожопый сплит и адресоваться к элементам списка, вот только такой подход чреват ошибками - если во входных данных поле будет пропущено, то индексы после сплита сместятся. Плюс код с именованными группами гораздо понятнее чем после сплита с кучей квадратных скобок.
Пишу простенькую программу. В ней консоль с парой команд. Типа add object name='test'. И моя программа должна понять такую команду и выполнить. Вопылнить не сложно, а распарсить введёную строку не знаю как. Не хочу делать велосипед и с форматом ввода не определился. Это значит что не обяхательно должно стоять имя аргумента, равно, а потом значение. Надо просто распарсить строку чтобы в итоге получить имя команды и словарь(а лучше упорядоченые пары) аргумент-значение. Какая библиотек так умеет? Не вожно какой формат входной строки. но лучше что-нибудь более подходящее чем какой нибудь json Я под него подстроюсь.
>>1122509 Просто признай, что окромя озвученных никаких тысяч больше нет. Отсилы еще штук 5 наберется, разработка которыхтеще в прошлом веке была прекращена
>>1119374 (OP) Господа, прощу помощи ибо уже крыша едет у меня совсем. Надо данные сохранить в бд, постгрес, пользуюсь для этого psycopg2 Собственно вопрос: есть словарь и надо его в таблицу засунуть - что я делаю не так? self.cur.execute("""CREATE TABLE IF NOT EXISTS {} ( ID serial NOT NULL PRIMARY KEY, data json NOT NULL )""".format(tag)) self.cur.execute("""INSERT INTO {}(data) VALUES ("{}");""".format(tag, line)) где line это и есть наш словарь который я хочу как жсон запихнуть туда, но чет совсем не выходит
>>1122549 self.cur.execute("""INSERT INTO {}(data) VALUES ('{}');""".format(tag, json.dumps(line))) пробовал вот так, но в словаре есть ' где-то, которая ломает восприятие строки
>>1122569 Эскейпить каждое текстовое поле перед укладкой в базу - это правильно. А для полной правильности нужно еще unescape делать, когда из базы текстовое значение берешь. В приличных фреймворках обычно это предусмотрено и прозрачно для программиста.
Почаны, короче скоро предстоит делать большой проект, в котором будет парситься огромное количество постов из соц сети и анализироваться. Итак какие питон инструменты для этого взять ?
>>1122705 9 асинхронных задач. Каждая фильтрует для себя по 100к строк из БД, проходится по ним, делая вычисления и обновляя данные/удаляя старые. На самом деле код просто не оптимизировал до конца и вначале postgres грузил проц на 100%, а потом пайтон добивал оперативку.
>>1122709 Тестирую под нагрузкой отложенную задачу, которая на сервере периодически запускается и шерстит БД на подходящие друг-другу предложения. В реальности такое кол-во данных не успевает скапливаться, но всё же. Дало повод к размышлениям и оптимизации.
Есть тут люди знакомые с gobject introspection и Gtk3? Хочу запилить фабрику однотипных Gtk виджетов. Описание виджета/ов и главного окна хранятся в файле, сгенерированном glade. Проблема в том, что GtkBuilder на каждый запрос get_object('widget') возвращает один и тот же объект. Можно ли изменить это поведение не вынося этот виджет в отдельный файл и не вызывая на каждое конструирование new_from_file(), или это так и делается?
>>1122877 У нас с ним немного разные цели работы скрипта, мой в асинхронном режиме лососнул и ещё проц/оперативку загрузил, в мультипроцессорном - всё ок. Ну и тут скорее предъява не лишь к БД а к связке + погрешность на мои цели. Наполнение тестовыми данными я тоже делаю через asyncpg + asyncio и доволен скоростью.
Я хочу писать на питоне программки с GUI. В основном для виндоус, но немного для линукса. А еще хочу писать веб-приложения. В основном для линукса. У меня настроена среда разработки питон на виртуалке под линуксом. Можно ли ее использовать для всего этого, или же лучше использовать винду?
Смотрите компилятор cx_freeze говорит, что он многоплатформенный https://pypi.python.org/pypi/cx_Freeze Разве не получится приложение с Qt откомпилить на одноц системе для другой?
Хочу купить сервер на Арубе (тот самый за 1 евро в месяц) для днище телеграм ботов, мб скрапинга, в общем развития в прикладных штуках для питона. Там кучищща всяких пресетов, какой выбрать, анон из списка пикрелейтед?
Я понимаю, что, скорее всего, можно брать просто любой линух, но все же, мб есть подводные камни.
>>1123153 CentOS - старье. Debian поновее + совместим с домашней убунтой. Ubuntu server - максимальная совместимость и свежесть, но в ущерб надежности.
Не подставляет: Точнее открывает в броузере УРЛ выделенной части https://pyside.github.io/docs/pyside/PySide/{module.name}/{class.name}.html#PySide.{module.name}.PySide.{module.name}.{class.name}.{function.name}
Палю годнот. Компилятор pyinstaller сделал из Qt-GUI приложения один компактный exeшник размером 18мб, в то время как >>1123184 cx_Freeze делал 300мб. И приложение работает, проверил на компе без питона и qt. Только иконки не упаковались. Но наверное можно поправить. https://www.youtube.com/watch?v=lOIJIk_maO4
Такая хуйня аноны, разобрался, как PyQt5 в Label выводить текст, но почему то текст выводится по середине окна, а не с его начала. Как поменять месторасположения текста? Что бы он начала идти с самого начала.
>>1123376 Этим управляет менеджер окон, в винде — explorer.exe, в лялихе тот, который выбрал, на макакоосе — файндер. Кьют никак не может повлиять на это.
>>1123376 Сделай self.your_label.move(10, 10) и будет в начале окна. Но это кустарщина. Осваивай QVBoxLayout() и QHBoxLayout(), чтобы все поравнять. А еще лучше инструментом Qt Designer.
>>1123437 Чушь какая-то. Я не верю, что бы Qt не было бы никого способа изменит место расположения текста. >>1123385 Ты кажись не понял. Мне нужно поменять не место расположения самого окна, а место расположения текста внутри окна. Текст, почему то, печатается в центре, а не с самого начала.
Посоветуйте чего заюзать. На хероку постоянно (раз в день) где-то перезапускаются воркеры и это ломает мне приложение, которое начинает постить картинки с самого начала. Сначала, думал заюзать просто текстовый файл, в который записывалось бызначения всего запощенного, но хероку не сохраняет нихуя и файл каждый раз ресетится тоже до начального состояния. Какие варианты? Редис для этого норм? на с3 не хочу заливать?
>>1123753 но зачем мне субд, если мне по сути я так подумал, достаточно хранить имя последней запощенной картинку и всё? Плюс, подключить редис будет гораздо легче, чем любую субд.
>>1123849 Сегодня достаточно, а завтра захочется большего. Тебе нужно хранить каждую запощенную картинку с датой поста и адресом. Только так можно сохранить целостность данных.
>>1123874 > Сегодня достаточно, а завтра захочется большего. Тебе нужно хранить каждую запощенную картинку с датой поста и адресом. лол, но не нужно же. Имя и есть адрес, мне просто нужно находить предыдущую запощенную картинку и постить следующую, если сервер наебнется, или перезапустится
Карочи аноны, такие дела. Есть Label из Qt. Нужно, что бы когда на сервер поступают данные с клиента, эти данные вывелись на мой Label. Как определить момент прихода данных я знаю, каким методом изменить текс на Лейбл тоже знаю. Я не знаю, как обработать это событие, потому что я пока нашёл инфу только о эвентах, связанных с самим интерфейсом Qt, и как связать Лейбл с внешним событием я не знаю. Так вот, как это сделать?
>>1124041 В узкой специфике действительно ускорилось всё. В остально особо разницы не заметил. >говорят распердоливается по скорости быстрее С++ Ну это толстовато.
>>1124041 > NumPy, SciPy, and scikit-learn Это должно кого-то ебать кроме числодробильщиков? Здесь одна половина анонов хеллоувордит а вторая вторая на джанге пишет.
Есть сервер на питоне. Ему идёт клиент шлёт данные. Как определить, что клиент перестал слать данные? При этом соединение с ним ещё не разорвано. У меня есть строка: data = conn.recv(1024) и, вроде как, если клиент ничего не шлёт, то переменной data должен присваиваться пустота. Но нет, условие "if not data" выполняется только после того, как клиент разрывает соединение. Проблема в том, что из за того, что я не могу определить момент, когда клиент перестал слать сообщение, я не могу очистить свой буфер и все сообщения клиента накапливаются в одно большое. P.S. использую сокеты
>>1124297 Или, быть может, нужно перед каждой новой передачей сообщения с клиента открывать новое соединение, а потом, после передачи сообщения его разрывать?
>>1124309 Нахуй такие заёбы? Разве это всё уже не реализовано на уровне каких-нибудь протоколов или модулей питона? Неужели так сложно определить, что тебе ничего не шлют?
>>1124309 Попробовал сделать так, как ты сказал и не вышло. На стороне клиента сначала посылаю размер сообщенияпервым .send()'ом, а потом посылаю второе сообщение. На стороне сервера принимаю сначала размер сообщенияdata = conn.recv(1024), а потом само сообщениетоже с помощью data = conn.recv(1024). Так вот, первый раз всё проходит нормально - сервер сначала принимает размер, а потом принимает сообщение, но почему то когда я пытаюсь послать сообщение второй раз, сервер считывает размер сообщение и само сообщение как одно сообщение, а не как два разных. И когда я пытаюсь преобразовать строку в int, у меня, естественно, выходит ошибка. Чё за нах? Чё я делаю не так?
>>1124344 >Чё я делаю не так? >размер сообщения data = conn.recv(1024 В скольки байтах ты размер высылаешь? Вот столько сначала и принимай, получай свой размер, а потом recv(data_size).
>не реализовано на уровне модулей питона? Думаю, что всё реализовано. Pyro, например, где-то в интернете промелькнул у меня.
>>1124357 Бля, я уже по другому сделал. Я засунул размер и само сообщение в одно сообщение, но разделил их знаком "/size/". На сервере, то, что перед "/size/" я принимаю за размер сообщения, а то, что после "/size/" - за само сообщение. Вроде работает, пока.
Карочи, такая проблема с Qt'шнным Label'ом - текст, которые я в него посылаю, размещается только на одной строке окна, а должен занимать всё свободное окно. Ну и какого хуя это происходит? Как сделать так, что бы текст занимал всё доступное ему пространства окнаа если его не хватает, то появлялась бы полоса прокрутки?
Пытаюсь реализовать реюзабельные дескрипторы для валидации атрибутов. Нашел https://stackoverflow.com/questions/37059815/reusable-validating-class-attributes Разобрался в топовом ответе, валидацию примитивных типов (int/str/bool) запилил. Но как дескриптор для валидации композитных типов запилить? Тот же лист, причём в нём должны лежать итемы только одного типа. Нужно как-то ебаться с __getitem__, но я слишком тупой. Ёбанный рот вашего ООП.
>>1124430 А ведь я всего лишь хочу распарсить xml-дамп одной базы данных. С валидацией хуйни которую я оттуда достаю. Уже третий раз переписываю наверное, потому что прошлые разы получалось говно с тоннами дублирования кода.
Ребят, нужна помощь с api hh.ru Как делать поиск по РЕЗЮМЕ? Мне надо чтоб апишка отдавала набор резюме по ключевым словам, которые я введу. Не нахожу поиска по РЕЗЮМЕ в документации.
использую: [CODE] session = vk_api.VkApi(login='логин', password='пароль', scope='offline') [/CODE] для постинга в группу авторизовываюсь по токену: [CODE] session_group = vk_api.VkApi(token='токен из овер 30 символов') api_group = session_group.get_api() resp = api_group.wall.post(owner_id=group_id, from_group=True, message=text, attachments=media, signed=False) [/CODE] Токен получил в админке группы Получаю: vk_api.exceptions.ApiError: [5] User authorization failed: method is unavailable with group auth.
Никогда не понимал этой ебучей апи вкшечки, что я делаю не так анон?
>>1124557 Отрыл в документации QTextEditor и поставил флаг "Чтение онли". Таки заработалодаже с полосой прокрутки!, но мне всё равно не понятно, нахуй тогда нужен Label?
Антош, хочу хранить неизменно накапливаемую коллекцию id Нужно проверять полученные, на наличие в истории, хранить остальные данные необязательно. Что лучше использовать Redis? CSV? pickle? Просто файл? id можно сортировать, но приходят не по возрастанию
>>1124621 Ну смотри по своим нуждам, я склонился к тому, что мне достаточно хранить одно значение последней запощенной картинки, поэтому мне редис очень подошел.
>>1124625 мне нужно хранить последний id 1-сущности и каждый уже использованный id 2-сущности Вот я и решаю где быстрее будет со временем искать id2, дабы не заносить повтор. К слову, я тут подумал: попытка создания записи с уже существующим id, будет быстрее чем поиск этого id? База со временем станет ооочень огромной
>>1124621 >>1124618 Вы верно тупые и не доучились в школе php. Вам же сказано нужно использовать субд SQLite. Это хранится в файле, проще чем редис и является стандартной библиотекой.
>>1124769 Попробуй сначала его, потом PyQT например. Второе имеет сигналы и прочую более удобную хурму. Используй первое для говноподелок которым вот прямо нужен интерфейс, но их никто не увидит.
В результате незнания языка, и крайне сжатых сроков разработки, получилась такая конструкция:
def get_user_id(user_name) if str(user_name) == str("user1") user_id = int(1) if str(user_name) == str("user2") user_id = int(2) if str(user_name) == str("user3") user_id = int(3) return user_id
Такую-же хрень написал для обратного сопоставления.
Да, str и int тут наверно лишние, пререстраховывался. Но вопрос не в этом, вопрос в том, как убрать из кода имена пользователей и id? Думаю в текстовый файл писать при добавлении новых (сейчас все кто есть прям так в коде и перечислены).
Что применить для чтения логина и id из текстового файла, с поиском по разделителю (пробелу), и перебором этого файла построчно?
питонач, качаю картинку, и если ее на серваке нету, хочу немного поменять юрл ( xxxlarge на xxlarge ) и попробовать качнуть заново, как убрать вложенность ума не приложу
Пацаны, тут такой вопрос назрел, а если по честноку все делать, wxpython вообще можно собрать в один "бинарник" с помощью pyinstaller, это типо будет коммерческая прожка. А то посмотрел, хер поймешь, что там с лицензиями?
>>1125216 Мы тут с аноном обмазываемся PyQt - графическими интерфейсами. Всего пару дней назад начали. Можешь присоединятся. https://youtu.be/e5PBUFrSKgQ
>>1125290 Да я без понятия, думаю в будущем начать тыкать pandas , не я смотрел конференцию на ютьюбе, там мэрлин рассказывал, как они у себя на сайте тонны csv файлов обрабатывают Пандасом, и файлы по 1gb и больше
>>1125346 Справедливости ради, им стоило бы добавить в таблицу пару разделителей, чтобы было очевидно ясно, какие из знаков можно сочетать, а какие взаимоисключающие.
питонач, я обосрался с простой задачкой, поможешь? есть в общем скрипт, который вызывает джанга, который стучится на 5 разных url и берет оттуда данные работает медленно, я запускаю в виде пик1 если я запускаю джангу вот так
то сообщения от логгера приходят и все норм, если же я стартану джангу и выйду из сессии терминала
gunicorn bot.wsgi --log-file=logs/gunicorn_log.txt --bind=127.0.0.1:8000 --workers=3 & exit то логируется [Errno 5] Input/output error кто нибудь может подсказать почему так?
>>1125624 Что это значит, ато я в инглиш не секу?. Когда я качаю либу из pip , то она состоит из одной .dll
>>1125625 В смысле хуй забить, похер пихать в свою коммерческую закрытую прожку? Там хер разберешь с этими лицензиями, чето не хочется, чтобы потом какой-нибудь Столлман , объявил меня вором, хд)
Есть карочи у меня приложение с Qt, и там я с помощью переопределённой функции keyPressEvent() забиндил определённое действие при нажатии одной клавиши. Внимание, вопрос. Как сделать так, что бы в любой момент времени, когда включено моё приложение, даже если оно не взято в фокусокно с этой программой свёрнуто, то нажатие этих кнопок всё равно бы регистрировалось этим приложением и действие выполнялось? Вот, допустим, у меня включено это приложение и я в этот момент играю в игру. Нажал нужную клавишу - и приложение то приложение выполнило свою задачу.
>>1125779 Кейлоггеры пишешь, пидор? В операционках есть всякие registerGlobalHotkey или вроде такого, специально для хоткеев даже когда приложение вне фокуса.
Стоит ли читать Марка Лутца Программирование на Python в двух томах? Или я время потеряю? Прочитал изучаем Python, в принципе все понятно было, только слишком долго, и повторения подза*ли. Посоветуйте может какие лучше есть книги, чтоб также суть объяснить, но побыстрее, или же нужно продолжать читать Лутца?
>>1125878 Нахуй вы эти талмуды читаете, когда есть няшная официальная дока https://docs.python.org/3/tutorial/index.html , которую можно осилить дня за 3? А то и вообще просто начать усиленно практиковаться обращаясь к гуглу/докам/стаковерфлоу когда упёрлись в конкретную проблему?
>>1125906 pass is a null operation — when it is executed, nothing happens. It is useful as a placeholder when a statement is required syntactically, but no code needs to be executed
У меня в программе есть поток-сервер, который слушает свой порт с помощью функции sock.listen(1). Как при выходе из программы мне завершить этот поток, если за время действия программы не было ни одного подключения клиента к серверу? Поток просто застревает на это sock.listen(1) и никуда дальше идти не хочет, что бы проверят другие условия. Можно ли как то сделать так, что бы он через определённый промежуток времени бросал выполнение функции sock.listen?
>>1126056 Я так не умею ещё. А что если я сделаю отдельный поток, который будет слушать клавиши с помощью этого вашего winAPI и в случаи чего генерировать сигнал. Сработает?
анонсы, хз где спрашивать, поскольку пишу на питоне, спрошу тут. есть бот с keyboardButton'ами нужно после заполнения некоторых данных, чтобы пользователь ввел inlineQuery то есть напечатал имя бота @botname но только после определенной стадии, я могу как-то послать из бота сообщение самому себе с таким текстом @botname list_news? то есть мне не нужно чтобы пользователь после нажатия start мог выполнить @botname list_news, а только, после нажатия на кнопку ( не инлайновую ) ввести имя, ввел имя и потом только смог набрать @botname listn_news а желательно вообще, чтобы он не вводил эту строку, то есть после ввода имени в поле сообщения бы само писалось @botname list_news и выдавался бы список новостей?
Если у меня между открытием файла и записью довольно много строк, например, строки для записи создаются в цикле, то это же неудобно, весь этот код будет в отступе после with open..
Есть у кого нормальный задачник для самых маленьких и тупых по питону? С играми, комплексными задачами. Мне бы к синтаксису привыкнуть и начать писать простые программы. Потом уже Лутца наверну. Посоветовали "Выразительный Javascript" в качестве задачника. Выглядит он неплохо. Есть что-нибудь аналогичное для питона? Посмотрел тут вот этот диск. https://yadi.sk/d/tArKKuQu3Kejuq/Python Ничего аналогичного вроде не нашёл. Быстро пролистал и всё. Да, анон, я решил начать кодить. Понятное дело, что мне пока что лучше не соваться во всякие сложные штуки вроде баз данных, сетей и прочего, а то очень быстро забью. Хочется порешать что-то простое для мотивации к дальнейшим действиям. Пикча для привлечения внимания. Заранее благодарствую.>>1126151
СУКА блядь, да почему на ёбанной винде такая блядь проблема установить ебучие блядь пакеты для питона?! Сука, ну что за хуйня, пытаюсь установить PyQt5, и, хуяк, ошибка: Could not find a version that satisfies the requirement sip<4.20,>=4.19.4 (from PyQt5) (from versions: ) No matching distribution found for sip<4.20,>=4.19.4 (from PyQt5) Хули он блядь хочет? Нахуй ему это нужно? Почему в ебучим линуксе я ввёл одну сука ебучию команду в терминал и у меня всё само установилось, а в ёбанной винде я уже полчаса не могу поставить ебаный Qt?
>>1126242 И да, я вообще нихуя не знаю. Начал буквально пару дней назад с абсолютного, как жопа в космосе, нуля. Жру сейчас Python for Everybody, там дядя сказал что очень желательно работать через редактор, т.к. понятней новичку. Атом он посоветовал.
>>1126240 3.7 ещё даже не вышел, там только альфа-превью-ещёнеготово-нетрогайэто. >>1126242 Запускай из терминала/cmd/что там у тебя ещё. Можешь хоть прямо из браузера запускать свои хелловорлды http://pythonfiddle.com/
>>1126250 Это падаван. Ну да,я так и делаю. В атоме пишу код, сейвлю файл .py на раб стол,чтоб было быстрее, и из /cmd запускаю этот файл. Ты это имеешь в виду?
>>1126250 И хули блядь делал? Я когда качал питон, я просто скачал самую последнею версию, что была на сайте, а теперь оказывается я блядь Qt на неё поставить не могу. Чё мне теперь 3.5 как то нужно накатить?
>>1126251 Попробуй открыть cmd, а не щёлкать ярлыки каждый раз. Первый раз придётся набрать python hello.py, но потом можно просто стрелку вверх нажать и набирать заново не надо. Всё достаточно быстро, и не нужно readline в конце программ вставлять чтобы окно cmd не закрывалось раньше времени.
>>1126252 Блядь, а что будет, если я сразу два питона установлю - 3.7 и 3.6.4? Как указывать, какой именно запускать? И как указывать, для какого питона искать модули? Или мне 3.7 тогда вообще к хуям снести надо? У меня тогда все скаченные для него модули перестанут работать и мне всё заново придётся качать для 3.6.4?
Вопрос скорее по ООП. Пишу бота для вк. Получаю последние сообщения и работаю с ними. Как брать участника\участников диалога\беседы, если для этого существуют разные методы? Создал два класса: MessageChat, MessageDialog, которые будут выполнять разные запросы на get_members
Но как правильно разделять сообщения из чата и из диалога? Передавай в конструктор сырой dict? Проверять dict условием?
>>1126278 Это все редакторы типа атома? Быстро прогуглил, мало что понятно. Я,считаю, пока рано, питон совсем почти не освоил. Ну. то есть, у меня реально нулевой уровень, никогда не кодил, и не увлекался.
Сап Аноны. Объясните, почему как не увижу, так Лутца хуесосят? Вроде бы толково объясняет. Слегка нудно и затянуто, зато разжёвывает так, что даже тупень Васян поймет.
Посоны, хочу приделать singletone к чужому классу, если наследовать класс и декорировать его то ругает. Как добавить к существующему классу декорируемую функцию?
>>1126336 блять уже сам запутался. Кароче есть vk_api.VkApi и vk_api.Session вторую я получаю методом auth_from_file() свой-говнокод, потом вызовом session.get_api() получаю объект vk_api.VkApi Как получать посреди кода получать только одну инстанцию, без новых авторизаций? Хотя я понял, ну вот я и получаю этот синглтон когда вызываю session.get_api() . верно ведь? Теперь сделаю session глобальной и посреди кода буду дергать этот метод порой надо попытаться ответить самому себе на вопрос
Если тебе бесплатно предлагают выбрать мерседес и ладу, то что ты выберешь? Хочу узнать, почему многие считают, что Лутц = лада, и что я не пропускаю книгу лучше.
>>1126347 Ну ты совсем прям каждую мелочь хочешь сэкономить. Пока будешь думать какую книгу прочитать уже мог бы взять и прочитать. Другое дело, когда в книге что-то уже устарело или автор пишет хуёво, тогда надо дропать.
>>1126352 Ну не то чтобы хочу сэкономить. Просто у Лутца только "Изучаем Python" 1200 страниц. "Программируем на Python" еще столько же. И может я тупой что вероятнее всего, но я не очень представляю параллельное вкатывание во что-либо, пока не осилю хотя бы эти томики.
>>1126354 Читай и не парься. Я вообще сейчас четыре книги на декстопе открытыми держу и ничего. Ещё на мобиле лежит "Яма" Куприна. Читай и пробуй в этом нет ничего сложного. Если не нравится - дропай, потом всё равно вернешься или найдешь книгу лучше.
Что за говно этот ваш питон? ни документации, ни инструментов разработчика, 3.5 библиотеки и те нерабочие. Нихуя нет. Не язык, а посмешище. Поучились бы у php. Как в Pycharm 2017.2 сделать нормальный вывод дебаггера? Чтобы как в консоли.
Карочи, установил питон 3.6.4, установил на него pywin32, прописал в начале скрипта "import win32api" и теперь при запуске скрипта у меня выдаётся ошибка: ImportError: DLL load failed: Не найден указанный модуль. Как это пофиксить?
>>1125401 >пучарм не пишет в выводе красным, в какой строке и функции ошибка ? Пишет далеко не всегда. Пикрилейтед пример, когда не найдены вызванная функция. Приложение крашится, в консоли белым по черному сказана ошибка >NameError: name 'add_metadata' is not defined а в пичарме - хуй.
>>1126414 Как блядь криво? Я установил через pip install pywin32. Можно как-то менее криво установить? Версии питона и pywin32 совпадают, разрядности тоже. Что ещё может быть не так?
>>1126399 >ImportError: DLL load failed: Не найден указанный модуль. Догадка из далека. Они скомпилены разными версиями компилатора. обрати внимание на версию там например VS9 или Visual Studio 15
>>1126429 >Питон и модуль Например, да. Делать в таких случаях - перекомпилить самому из исходников. Но это вариант для пердоликов на линуксе. На винде это значит ставить MS Visual Studio (~3GB download) и ебаться. Проще тогда уже в Visual Studio начать учить язык поудобнее C# .NET.
>>1126420 Сделай import importlib print(repr(importlib.util.find_spec('pywin32'))) и запости сюда. Если None, то питон тупо не нашёл модуль и ты криворукий мудила, например pip из другой версии питона запустил. Если модуль есть, то капай на голову мейнтейнеру за кривые колёса.
>>1126428 странная догадка >>1126420 надо добавить путь к тому, что ты установил в PATH, чтобы питон смог это найти из любого места, как раз эта >>1126404 ссылка рассказывает о PYTHONPATH и sys.path (список директорий где питон ищет твои модули)
>>1126444 Разве оно не вы автоматически добавляется в PATH при установки через pip? Все остальные модули, которые я ставил ничего кроме установки не требовали
Ребят, кто может накатать прогу на питоне, на сайте каждые 3 часа появляется капча и надо через рукапча ее решить, чтобы в последней версии мозилы работало ? ТГ aadd0007
Помогите!! Подсобите вкатывающемуся. Работаю с Django 1.8(т.к учу по Django By Example). Запоролся. Код весь из учебника 1) вместо названия поста, так как введено в поле в title, в админке выдаёт Post Objects 2) При создания полей в админке для фильтра, его тупо нет 2 скрин как должно быть, 3 скрин как есть. Не выводит ни колонку фильтрации, ни поиск, ни название поста.
>>1119374 (OP) Искал библиотеку для отлова нажатия горячих клавиш. Нашел pyhk, но что то установить ее не выходит, она зависит от PyHook3, а после установки PyHook3, все равно не видит библиотеку и из-за этого отказывается устанавливаться. Помогите пожалуйста.
Свой код кидайте через https://ideone.com/
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Предыдущий тред
Python питон