Это копия, сохраненная 26 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1443245 (OP)
ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat - по идее с этого надо начинать, прежде чем вопросы задавать, но аноны бугуртят, что это говно мамонта.
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Очень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLK
Анон, вместо того, чтобы без разметки постить код, лучше шарь код через специальные ресурсы:
https://ideone.com/
https://pastebin.com/
https://pyfiddle.io/
https://www.codepile.net/
> но аноны бугуртят
Аноны такие аноны.
> что это говно мамонта
Это не так, уверяю.
Платиновые вопросы:
А стоит ли читать Лутца, том номер N? - Мнения в треде разделены. Кто-то за(очень неплохая база даётся), кто-то против(слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.
А стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х.
А стоит ли читать %книга_нейм%, если там питон версии 3.х, но <3.6? - Да стоит, если альтернатив свежее нет, данная книга даст базу, с помощью которой ты сможешь дальше продолжить вкат и актуализацию своих знаний.
А как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей.
Как-то так. Ещё куча вопросов с пометкой платина, но ебать мой хуй, на них из раза в раз отвечают.
Дополню. В большинстве не по теме ЧАВО, а от себя
> в ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
> не умею читать/воспринимать литературу
Дальше с такими качествами будет довольно сложно, но есть множество интерактивных курсов / лекций и тд
Гугли: coursera, stepik, metanit, Яндекс.Практикум РЯЯЯЯЯ, ОНИ ПЛАТНЫЕ (Ответ: сертификат тебе не нужен, изучай бесплатную часть)
> уже много раз начинал, но забрасывал, а теперь не могу читать книги с нуля, куда двигаться?
Пробегись по этому списку https://tproger.ru/curriculum/python-how-to-learn-2/, изучи то, чего не знаешь и то, что осталось непонятным, потом начинай делать проекты попутно залезая в гугл. Также можешь полистать книгу intermediate python, она есть на русском
> знаю питон от корки до корки, что делать дальше?
Выбирать web, ML, DS, ИБ, изучать и делать пет-проекты
> вот вы говорите про проекты, а что делать то?
пикрил + https://www.random.org
>>51757
Для тех, кто более-менее умеет программировать, очень хорошая вводная документация на самом сайте питона:
https://docs.python.org/3/tutorial/index.html
Правда на английском языке. Чётко и красиво изложено, с упором на специфику питона. Документация обновляется, актуальная, но всегда можно переключиться на старые версии.
Для тех, кто более-менее умеет программировать, я бы рекомендовал именно с официальной документации начать, с этого раздела.
Точнее, вот с этого подраздела:
https://docs.python.org/3/tutorial/introduction.html
Тут введение шаг за шагом.
Годно, спасибо, антош.
Случайно не знаешь, там есть возможность переключения языка
Это кто-то специально отобранный переводит? Потому что если нет, то почему бы рядовому анону не перевести всю доку на русский, там нет ничего сложного, даже я со своим intermediate справлюсь
Выбор языка сверху слева. Переводят комъюнити.
Но зойчем переводить на русский, если куча доков на остальные либы на инглише?
Центось7. Поставил python36 + pip
При установке пакета, пип предложил обновиться до версии 19х (или 16х, не помню). Обновил пип через сам пип и он почему-то проебался. pip -V pip3 -V нихуя не отдают.
Качественный перевод довольно сложно делать, и этим надо постоянно заниматься, актуализировать по мере обновления англоязычного оригинала. Мне кажется, что сейчас меньше переводят серьёзной документации, чем раньше, всем надоело просто. Очень большой объём, много времени надо, за это не платят.
Я уже привык читать на английском языке, хотя иногда хочется и по-русски что-нибудь почитать. Но чтобы это был нормальный перевод, а не чуть лучше гугл-переводчика.
Да, так и сделал.
Правда, теперь у меня почему-то две папки с пиповскими модулями
>/usr/local/lib/python3.6/site-packages/
>/usr/lib/python3.6/site-packages/
И при установки через пип, он лепит модуль в /usr/lib/python3.6/site-packages/
А питон ищет модули в /usr/local/lib/python3.6/site-packages/
Срань.
Насчет гугл переводчика прямо в точку написал. Только что редактировал статьи на MDN'е, потому что глаза режет что-то вроде "веб-обзорщик"
А насчет либы, то я уже говорил, что там нет чего-то прям сложного в плане английского, за вечер можно пару страниц перевести. Тот же самый плюс в ЧСВ и помощь ньюфагам в освоении технологии
Читаю байт оф питон, а в ней задачек нет.
ХЗ, что-то как-то не так встало. Я в эти дебри никогда не лез, работало всегда без проблем.
ПИП должен лепить модули в /usr/lib/python3.X/
У меня там все, в том числе и штатные системные, я правда глобально сейчас почти не ставлю, ставлю локально в virtualenv.
Каталога /usr/lib/python3.6/site-packages вообще нет, там dist-packages есть (у меня на разных убунтах)
Что-то не так встало, pip видимо не так встал.
Попробуй codewars (там есть возможность просматривать чужие решения с комментариями и пояснениями), задания разделены по уровням сложности и все такое
Codingames, множество задач разного уровня, решения возможны на разных. Решения гуглятся по условию
Я +-разобрался в питоне(на нужном мне уровне) и возник вопрос, что еще изучить, чтобы иметь хорошую базу?
Как я понял, то для веба можно взять js, а потом html+css, чтобы можно было полностью понимать как сделать и мочь сделать сайт.
Или же это бесполезно и лучше взять C/C++?
Вообще главное не язык, а технологии, технологии программирования и построения приложений.
Если ты владеешь ООП, параллельным программированием, асинхронным, программированием БД, сетей, и т.п. на одном языке, то освоишь и на другом, а вот с самими методами и практиками надо долго разбираться и осмысливать их.
На чём бы веб-приложения хочешь делать и какого рода?
Для веб, база:
1) HTML+CSS, даже понимать и что-то уметь необходимо, даже если ты на бэке специализируешься.
2) JS аналогично, но JS сам по себе большая тема. Сильно зависит от того, что бы будешь реализовывать. От этого зависит и выбор бэка. Но как минимум надо понимать, как работают приложения на JS.
3) Тебе необходимо понимать, как работает веб, HTTP протокол. Как устроены запросы GET/POST, как данные туда-сюда пересываются, куки, современные технологии ajax и вебсокетов.
4) Вся база по построению сайтов, работа со всякими сессиями во фреймворках, работа с разными видами БД и т.п.
То есть надо понимать, как устроен data flow для каждого типа сайтов, что в какой момент куда пересылается, откуда берутся данные и как преобразуются и т.п.
Это какая-то общая база для всего веб программирования.
Ты просто подумай со стороны задачи. Есть задача полезная, которую надо сделать, которая работает через веб. И подумай, как именно её делать, как именно эта задача работает.
Окей, спасибо большое.
В таком случае попробую разобраться в них и попробую свой сайт запилить.
Сейчас как раз разбираюсь с БД и как работать с ajax
при попытки вызвать pool.map(self.method,list) выдает ошибку, map() takes from to positional arguments but were given. Сам кусок кода находится в методе класса. Как можно решить проблемму?
Нет, не одинаковые.
В первом случае у тебя в текущем пространстве имён появляется имя tkinter. Дальше - tkinter.zalupa().
Во втором - появляются все экспортируемые имена из модуля tkinter. Дальше - просто zalupa().
Разные. В первом ты просто подключаешь модуль, после чего можешь использовать, наприме
tkinter.Button()
но явно указываешь модуль при вызове функций оттуда.
Во втором случае ты импортируешь всё из модуля в основное пространство имён, и уже используешь
Button()
без указания модуля. Могут быть конфликты имён из-за этого и не очень понятно, откуда какая функция или класс берётся.
Он и есть стэндалон. Либы нужные просто можно подкачать из интернета при необходимости. Если параноик - на флешке таскай.
понял в чем ошибка, там каким то образом оказался вопрос в названии файла
Sql это язык запросов к соответствующим БД.
Если совсем с нуля, возьми sqlite3, штатный модуль питона, одна база = один файл. С ним принцип работы примерно тот же, что и с полноценными базами.
Да совсем с нуля собираюсь, спасибо
Я уже не знаю, куда обратиться с этой проблемой. Делаю небольшого бота и столкнулся с какой-то непонятной хуйней. С некоторой вероятностью программа зависает без сообщения об ошибке, во время выполнения следующего
1) Запрашиваю к серверу через http.client.HTTPSConnection
Если возникает ошибка:
2) Ловлю исключение
3) Через print вывожу в консоль текущее время и исключение, и отправляю себе вк то же самое лишь с той разницей, что для вк получается новое время
В 22:59 обнаружил, что программа не работает, нажал ctrl-с, программа вместо того, что вырубиться, печатает пойманное исключение socket.timeout: the read operation timed out и время - 10:12, отправляет мне исключение вк со временем 22:59 и продолжает работать как ни в чем не бывало
Может ли себя вести функция print???
У тебя проблема с сокетом. Ты установил соединение, но потом оно молча обрывается и ты об этом не знаешь. Твой сокет слушает, то ему никто ничего не высывает и не собирается.
Тебе необходимо контролировать, что сокет жив, либо таймауты как-нибудь настроить, несколько разных способов для этого есть.
У меня в http.client.HTTPSConnection установлен параметр timeout = 20, это разве не то?
Ку. Когда-то давно юзал питон для парсинга сайтов, язык понравился. Сейчас хочу немного поботоводить в онлине-гамесах типа wow и poe. Насколько хорошо питон подходит для данных задач? Имеет смысл пытаться юзать его в таких целях, или не выёбываться и задрочить какую-нибудь сишку?
По идее это таймаут на коннект. Но у тебя может быть ситуация, когда соединение установлено, а потом молча оборвалось. Это довольно штатная ситуация и её надо отлавливать.
Есть разные способы, или надо выставлять KEEP ALIVE на сокет, это почти не задокументированная магия, или жёстко контролировать таймауты через сигналы, например, это если у тебя обычная синхронная задача. Для этого надо разобраться в логике твоей задачи, когда данные уходят, приходят и т.п., как долго ты можешь без данных быть и т.п.
На позицию мидла взяли через год, даже в проебалтику релокейтнули (я писал тут давно об этом), на старте было 30к в миллионике, сейчас 2200 евро.
А во сколько годгов вкатывался? И сколько по времени уделял на обучение? Сам уже 7 лет подряд начинаю каждую весну учить питон, уже наизусть знаю вводные главы, могу простенькие программы писать, но стоит только на следующий уровень переходить так что-нибудь случается в жизни. А сейчас уже серьезно к этому вопросу подошел, ибо хочу кое-какой проект замутить веселья ради. Но устроиться погромистом уже возраст свой не позволит. И не надо мне тут что и в 45 берут на джуна, это все сказки.
Можешь попробовать, все равно много времени не займет (+- 3 вечера, если шаришь), если будет долго "думать", то попробуй отдельные части, которые больше всего обрабатываются переписать на Cython'е.
Вкотился в 20, неспешно читал книжки по питону с 11 класса до 2 курса (2 штуки, лутц и флюент пайтон), потом приперло найти работу и за месяц прочитал django by example делая примеры оттуда. Уделял по часу не каждый день, потом по 1-2 регулярно в самом конце.
Недавно читал пост на хабре, как чувак в Германии в 40 в java-программисты вкатился, до этого коммерческим программированием не занимаясь. Но он реально серьёзно к обучению подходил, мало кто на такое способен, и всё-таки как-то с ИТ был связан.
За зачем спрашиваешь тогда?
У тебя метод сколько аргументов принимает?
Learn English! Это помогает. Там всё написано.
Индекс должен быть или целым числом, или None. А ты зачем-то явно приводишь к строке.
Тебе компилятор пишет, что индексы среза должны быть целыми числами. Не приводи их к строкам
>получаю 2 целых числа
И нахуя ты потом применяешь к ним str()?
Просто интересно, что происходит у тебя в голове.
> что происходит у тебя в голове
Представляю как тебя циклом пускаю по кругу. Я разобрался - я затупил, спасибо.
Есть синхронная программа, в которой происходит много блокировок из-за подгрузки файлов через FTP. Как наиболее оперативно переписать ее через async/await?
С асинхронками раньше дела не имел, где подскажут за годный рефакторинг прог?
Не используй длинные пути файлов, либо те, в которых встречается кириллица в названиях папок, если не хочешь ебаться
правой кнопкой ткнуть блядь
options = webdriver.ChromeOptions()
options.add_argument("download.default_directory=C:/Downloads")
driver = webdriver.Chrome(chrome_options=options)
Позволяет менять дефолтную папку загрузки у вебдрайвера при создании объекта. Мне нужно проделывать ту же самую процедуру многократно для уже созданного. То есть, что-то вроде такого:
options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
###bla-bla-bal
options.add_argument("download.default_directory=C:/Downloads")
webdriver.set_options(options)
А зачем тебе это надо, какую задачу ты решаешь? Одно дело сериализация, другое дело расход памяти, ты должен учитывать, что в объект не хранится целиком, в нём ссылки на другие объекты и т.п.
Если расход памяти интересен, то глянь сюда:
https://docs.python.org/3/library/tracemalloc.html
По-хорошему надо сначала разобраться с асинхронкой, как это в питоне работает. На первом этапе не без магии. Иначе ты не сможешь мало-мальски нормально такую задачу реализовать.
Твоя задача непростая. Тебе надо или использовать асинхронные библиотеки для работы с FTP, я с ними тебе ничего не подскажу, никогда не делал ничего с ftp, или запускать синхронный блокирующий код в отдельном треде, это поддерживается asyncio. Но попутно тебе надо разобраться с тем, как делать асинхронные программы.
Возможно тебе проще не переводить на asyncio, а запустить эти операции в отдельных тредах.
Для отладки, проверить сколько памяти жрут конкретные объекты в конкретные промежутки времени
sys.getsizeof()
Не стоит срать пипом в системные папки, делай все через --user хотя бы. А то что в глобальное окружение устанавливается - контролируется пакетным менеджером. Соответственно, обновив пип самим собой, а не центосквским пакетным менеджером, ты все сломал
my_dict[aaa][bbb][ccc][ddd] = val
Как бы я знаю сигнатуру словаря: вложенные словари, но я не знаю имена ключей на втором, третьем уровне вложенности, поэтому не могу, например, определить сразу.
defaultdict не особо помогает: можно задать только один уровень вложенности. По свей индусской сущности делаю лесенки, что с defaultdict, что на обычном dict. Типа:
if my_dict.get(aaa, False):
if my_dict.get(bbb, False):
...
else:
my_dict[aaa] = dict()
и в else ветке такая же вложенность. Даже если в функцию с рекурсией запихну, все равно пиздец будет какой-то.
почему может не работать?
тот же самый URL в браузере выдает нужные данные
Python 3.7.3
библиотека requests
Нужна помощь с примером из книги "Укус Питона".
13.1-13.2 там где задача с архивацией, для винды нужно установить штуку из GnuWin32 для того, чтобы можно было из CMD архивировать вот она http://gnuwin32.sourceforge.net/packages/zip.htm
Но что-то нефига не получается. Как решить данную проблему, хелп плиз?
Ты можешь написать сам или использовать библиотеку какую-нибудь для работы по принципу xpath
Пример либы, не использовал:
https://pypi.org/project/dpath/
суть такая, что ты создаёшь пару функций:
set_value(dict, path, value)
get_value(dict, path, default_value)
например set_value(my_dict, '/aaa/bbb/ccc/ddd', val)
эта функция сама пройдёт по дереву и создаст необходимые подсловари, это неслжно реализовать.
Но есть и продвинутые решения с большим функционалом, смотри ссылку.
xpath - это аналогичный метод по обработке xml, поиску там данных. Он поддерживает и значительно более сложный условный поиск.
Ну можешь написать свою функцию для данного извращения.
Но складывается впечатление, что тебе лучше выбрать другой контейнер для хранения своих данных.
И вообще если подумать. У тебя структура подразумевает для данные лежат на нижнем уровне? Те my_dict[aaa][bbb][ccc][ddd] = val, но при этом в my_dict[aaa], my_dict[aaa][bbb] и тд это могут быть только словари? Если да, то не используй несколько ключей, а кортежи, например, не my_dict[aaa][bbb][ccc][ddd] = val, а my_dict(aaa,bbb,ccc,ddd) = val
Условия задач и мои к ним решения https://pastebin.com/fixcVPuk
Меня смущает в задаче 6-10, что каждый элемент списка выходит на новой строке, было бы приятнее чтобы числа шли после <...>there are numbers: <элементы массива через запятую>. Такая же ситуация в 6-9. Понимаю, что у меня такая конструкция, но как бы вы решили данную задачу?
Сама книга - http://www.allitebooks.org/python-crash-course-2nd-edition/
Спасибо.
for name, numbers in favoriteNumbers.items():
print(f"This is {name} and there are numbers:", end=" ")
print(*numbers, sep=", ", end=".\n")
Не могу найти ответ, по-этому снова прошу помощи:
У меня 2 функции в скрипте одна выполняется без каких либо параметров типа foo(), для второй нужно задать 2 параметра типа bar(1, 15). Как мне в этом argparse настроить вывод скрипта так, чтобы при запуске скрипта я мог сам ввести: foo() либо bar() с любыми параметрами.
Говорил жеж, ведь говорил! Нахуя этот автоматический перенос строк нужон вообще? Напомните как от этой хуйни избавиться?
О, тоже сейчас по ней питона осваиваю. Отличная книга комплексная, для бомжей типа меня
lines = file_object.read().splitlines() и никакого цикола
или
lines = [line.rstrip('\r\n') for line in file_object]
# Можно просто .rstrip(), если на пробелы на концах похуй, или даже вообще .strip().
Не знаю, насколько это рационально, но можно добавлять к списку не line, а line[:-1].
Ну а вообще, этот перенос бесит, да
Как чето плохое
У меня нет, может здесь все таки?
Минимальный фласк-проект в 3 строчки и 1 файл, джанго в 300 и 10, зато там гораздо меньше своего
надо изобретать, все уже придумано и реализовано за тебя.
Сегодня был первый мой опыт(кода меня ревьюили). Желание разбить ебало мудаку зашкаливает.
Одинарные кавычки нада, патамуша
Ф-стринги плоха(нет, не из-за обратной совместимости)
Коментов Нада па-минимуму
Знач смотри братан, советую две книги
Ирвин искусство правильно мыслить
Бочаров введение в логику
Когда осилишь, будешь разъебывать этих лохов тупа по аргументам и фактам, хуй кто тебе скажет ПАТАМУШТА Я ТАК КОЗАЛ, но тут есть одно но, ты тоже должен будешь аргументированно обосновывать свои решения, а для этого нужны знания в предметной области.
Смотрел кто, есть результаты?
> Аноны, как вы переживаете код-ревью?
Объясняю, почему ревьювер мудак.
> Одинарные кавычки нада, патамуша
Одинарные для технических строк, двойные для человекочитаемых. Если в строке есть какая-то кавычка - противоположные ей.
> Ф-стринги плоха
Лолшто?
> Коментов
Если описывают очевидное или если можно было вынести кусок кода в функцию с docstring-ом, то да, такого по минимуму.
>Одинарные для технических строк, двойные для человекочитаемых.
Нет, как договорились в проекте, так и будет
Ну так если есть кодстайл, разговоры обо всем перечисленном бессмысленны.
> тоже должен будешь аргументированно обосновывать свои решения
Это понятно, но нечего противопоставить неаргументированному наезду.
>>54175
> Если описывают очевидное
Угу, очевидно то пофиксил (уровня коменты на действия со стандартной либой). Но я люблю коментить и писать док-стринги к методам/функциям(соответственно кроме описания ещё и назначение переменных + примеры).
> Одинарные для технических строк, двойные для человекочитаемых
Вот честно, первый раз слышу. Мне как бы и не принципиально что ставить, но я уже привык к ".
Проект новый, попенсорсный, но код-стайл есть. Правда он принимался без обсуждения, а, опять таки, "патамушта".
>>54178
Ни по чему. Ф-стринги это ок, по крайней мере для меня, форматирование с ними выглядит гораздо логичней и проще, даже если внутри её вставить какую-то операцию небольшую.
Ладно, спасибо, аноны.
> Почему это говно считают хорошим?
N тредов назад было обсуждение, пришли к выводу что алхимия немного говно с такой же документацией.
Так же пришли к выводу что ДажнгоОРМ одна из лучших(правда скорость огорчает).
Так же не стоит забывать про относительно новую орм - PonyORM. В ней куча ещё недостатков, но её пилят активно.
Это по синхронным.
С асинхронщиной всё хуже и скуднее.
> стоит ли вообще этим заниматься
Определённо стоит, как минимум для себя, а как максимум - твой взгляд на орм может кому-то понравиться и "зайти", будут юзать и благодарить.
Глянул минут 15 первую и ещё пару лекций в случайных местах.
Лекции не для начинающих программировать. В первой начинается с каких-то абстракций тяжеловатых, где-то ещё упор на непривычные термины, всякие тернарные операции и т.п.
Короче для тех, кто хоть немного умеет писать и в состоянии математические лекции слушать. Дальше может быть и содержательно, там какие-то техники программирования показаны, может много полезного есть, но это надо смотреть и вникать.
Для начала разберись с тем КАК это делается, а затем ты поймёшь как это можно сделать и какими инструментами.
Спойлер: нельзя.
Подумал, что можно при запуске сделать корутину с инициализацией всего, дождаться ее исполнения, а потом приступить к обработке клиентских запросов, я правильно поступлю?
Не понял, что у тебя за init, откуда ты что вызываешь.
Если у тебя функция init синхронная, то ты не можешь из неё вызвать асинхронную функцию и дождаться результата. Ну кроме как совсем через жопу.
И ещё, корутина - это функция, которую можно запустить асинхронно, оформив её в задачу для эвентлупа. Задачу ты можешь оформить синхронно
loop.create_task(my_coro(param1, param2))
либо
asyncio.create_task(my_coro ....), но это для 3.7
После того, как ты сделаешь, твоя задача улетит в цикл и будет там обрабатываться. Единственная проблема, ты не сможешь дождаться её завершения.
У меня есть инициализация класса, в атрибуты класса нужно засунуть асинхронный клиент, который вызывается только через await и начинать последующую работу только после установки соединения.
Думаю просто вынести установку соединения в отдельный асинхронный метод и вызывать его после инициализации класса.
И есть ещё вариант сделать, как в этом клиенте. Асинхронная функция, которая возвращает объект, после установления конекта.
Ты учти, что делать await ты можешь только внутри асинхронной функции или асинхронного, определённой через async def.
await нужен, если тебе надо получить какой-то результат от асинхронной функции, например объект с коннектом.
Надо как-то внимательнее твою задачу разбирать, в частности как клиента реализовывать. У тебя какой-то готовый функционал для этого, или сам пишешь? Если сам, то в asyncio поддерживается несколько разных способов, просто соединение, и реализации через классы Protocol. Возможно тебе надо именно свой протокол реализовать.
>Ты учти, что делать await ты можешь только внутри асинхронной функции или асинхронного, определённой через async def.
Я знаю это, но видел примеры синхронного запуска через run_until_complete в синхронной функции.
>Надо как-то внимательнее твою задачу разбирать, в частности как клиента реализовывать. У тебя какой-то готовый функционал для этого, или сам пишешь? Если сам, то в asyncio поддерживается несколько разных способов, просто соединение, и реализации через классы Protocol. Возможно тебе надо именно свой протокол реализовать.
Просто соединение, есть готовая библиотека.
Первый вариант на пике был бы идеален, если бы инициализацию удалось бы провести в __init__, но он не работает.
Кажется, у тебя тут дерево, а ты используешь словари. Просто напиши соответствующий класс, да и все. Ну или реши - действительно ли тебе нужен такой уровень вложенности.
Либо тренируйся терпеть мудаков и выуживать только ценные замечания, либо ищи коллектив, в котором нет таких ьоксиков. Ну еще стоит разобраться в стиле кода компании и писать как все, потому что твой код потом поддерживать другим людям.
Хотя нападки на двойные кавычки и ф-стринги не понимаю.
Спрашиваю чтобы еще раз подтвердить это. Что после 25 жизни нет.
Такой вопрос, кроме kivy и qpython есть что-нибудь чтобы для андроида писать?
Проблема решена. Помимо системных переменных (как написано в книге), нужно добавить ещё и в переменные среды пользователя.
Кстати, сам когда делал эти упражнения с зип архивами, то использовал архиватор которым пользовался. Попробуй так же сделать, во первых немного отойдешь в сторону от шаблона, плюс чтение сторонней документации и хоть какое-то разнообразие, что тоже плюс.
>Это понятно, но нечего противопоставить неаргументированному наезду.
Есть. Скажи ему, что он пидор без аргументов, хули пасть открываешь? Пусть доказывает обратное и он пук среньк сделает и умрет.
Я смотрю сейчас, нравится. Не уверен насчёт результатов, но алгоритмы уровня квадратичных сортировок стали казаться хуйней на две строчки, а не чем-то сложным.
Бездумно копирую всякую хуйню из учебника в редактор, пытаюсь разобраться или не пытаюсь, пишу свой пример, лезу обратно в учебник читать текущую главу.
И вообще, осталось освоить json, тестирование, и дальше пойдут главы с проектами! Скоро очень скоро кровь польется морем я смогу говнячкать свои говнопроекты!
Желательно что б вы написали почему жа или нет
данные берут из внешнего источника когда они меняются
иначе их можно захардкодить
короче надо в твой файл сто первую строку, всяко проще её добавить в файл чем править код скрипта
Лучше рефлексируй хоть немного когда копируешь. Например, что ты ожидаешь получить от выражения "5 / 0"
Нихуя я не ожидал, хотел заканчивать вообще - до этой части дошел порядком заебанный, уже нихуя не соображал думал, что за хуйня заместо кода, но хотелось таки разобраться перед тем как идти саморазвиваться в сериальчиках.
Хардкодить с точки зрения кодирования всегда дурной стиль. С точки зрения построения гибкого приложения программист должен думать о возможности настройки, адаптации и т.п., для этого константы должны быть вынесены в отдельное места, по-возможности вне кода.
Иногда может быть разумно обратное, когда ты не хочешь, чтобы данные менялись, у тебя, например, код жёстко завязан на какую-то логику данных, нужна защита без лишних проверок от исключительных ситуаций, что данные испорчены и т.п.
Но в целом всё-таки лучше максимально разделять логику и данные, нужно обоснование, чтобы это не делать.
Посмотрел другие проекты, почти все делаеют второй вариант. Ну и хуй с ним.
Первый скорее неправильный. Это совершенно синхронный вариант программы, когда ты в своём полностью синхронном коде хочешь вызвать какой-то асинхронный код синхронным способом. Возможно именно это тебе и нужно, конечно, но не уверен.
Главный вопрос в том, что ты будешь делать со своим коннектом дальше. Если у тебя асинхронная библиотека, то и как минимум получение данных там будет асинхронным, скорее всего. Обработка этих данных должна быть выстроена соответственно.
Самым разумным выглядит второй вариант. При этом ты можешь вызов в одну строчку укоротить, сделать
client = await MyClass().create_connect()
надо только чтобы create_connect возвращал self
Как в python вызвать документацию к модулю/команде?
Почему turtle.tracer(0,0) съедает последние несколько шагов в рисунке? Он же должен только скрывать прорисовку.
Никогда не копируй текст из книги (форума, статьи и проч.) копипастом.
ВСЕГДА переписывай вручную. Серьёзно, анон. Заведи себе такую привычку. Это избавит тебе от МНОГИХ проблем в будущем.
Код надо самому писать, а не переписывать. Ну точнее понять идею, а дальше уже самому писать.
Копипастнуть из док нормально для теста, вот когда тебе надо самый первый пример получить, чтобы запустить и посмотреть, что это работает. Надо, чтобы было что-то, что руками можно почувствовать, потрогать, поломать после этого.
Вот как поймёшь, уже потом полезно всё удалить и самому написать, причём не переписывая из доки, а по памяти, по своему пониманию, может быть заглядывая в доку. И даже свой код стоит не копипастить, а заново написать, на этапе обучения. Несколько раз так проделаешь, и потом лучше чувствовать и помнить всё будешь, легче будет.
>Нихуя я не ожидал, хотел заканчивать вообще - до этой части дошел порядком заебанный, уже нихуя не соображал
А вот это зря. Не способен разобраться от усталости, так проспись и потом разберёшься, и совсем последнее в таком случае других вопросами долбить.
Based mipt
В 4 и в 2, к примеру.
Делаю блюром, но это немного не то и уродует результат.
Так сначала код потирибонькать надо немного, потом уже выдумывать себе задачу и руками свою парашу говнякать, затем лезть обратно в учебник и дочитывать главу, после прочтения в конце главы задачки от автора решать или не решать, ведь я еще на первом этапе сам все сделол, ха!, тем более что в первом издании Эрика Мэттиса во всех примерах пробелы полностью проёбаны - нужно перелопачиать все копипасты с учебника
А еще, что там на рынке с программистами на питоне происходит?
если графический калькулятор то лучше джаваскрипт лол
ну там правда не все так просто если брать серии операций, переполнения экрана, большие и маленькие числа и все такое
Ты вопрос задал в 3 ночи. Сейчас уже 3 дня.
Ты можешь просто взять, потратить день и сам понять, простой язык или не очень, можешь ли ты за день калькулятор сделать. Или тебе просто потрепаться хочется?
>>54941
>А еще, что там на рынке с программистами на питоне происходит?
Программистом ты станешь через несколько лет но на самом деле не станешь
Ну, qpython.
Я просто первую неделю только занимаюсь,потому не пойму где допустил ошибку,вроде табуляцию всю соблюдаю
Посмотри на условие выхода из цикла. бля, переводи слова гуглом хотя бы и переменные на английском называй
бля,я долбаеб
Нарисуйте «бабочку» из окружностей. Используйте функцию, рисующую окружность.
Похоже я совсем даун. Код прикрепил.
То должен был свою функцию для рисования окружности написать
Я сам ответил на свой вопрос
Чувствую себя ужасно тупым, сижу три часа и никак не могу решить задачу. Даже не знаю как подступиться.
Помогите решить, пожалуйста!
Установил питончик, но винда не обращается к нему через python
Забыл написать, желательно на Python решить.
Собственно, сами задачи, https://pastebin.com/L5AmVkag
Задача с пиццерией, с тремя путями решения:
https://pastebin.com/yD5gtJF4
Задача с билетами:
https://pastebin.com/ZZ4vmnvD
Посмотрите, пожалуйста, оцените своим профессиональным взглядом, что улучшили бы, изменили? При этом использовать я могу только минимальные средства. Показывал знакомому, он советовал использовать isdigit, но пока про это в книге ни слова.
Спасибо.
Тебе достаточно было просто y=0 за пределы цикла вынести
Странные ты, однако, выводы делаешь. Если к калькулятору так прицепился, то про него вообще образно написал
Я нуб, совсем.
Направьте, плес, мысль в правильную сторону.
Мне нужно для лабыотсортировать список с помощью одного из видов сортировок, но не просто отсортировать, а так, чтобы элементы списка начинающиеся на определенный символ не попадали в общую сортировку.
Алгоритм сортировки запилил самый простой - пузырьком.
Идея была в том, чтобы из общего списка сделать второй список. Отсортировать каждый список, а затем соединить в один.
Но как это сделать - не понимаю. Если делать срез, чтобы разбить общий список, то срез делается по элементу, а не первому символу элемента. Халп.
А в чём проблема просто добавить в логику сравнений элементов пузырька обмен значений, если один из одной категории, а второй из другой?
>enumerate
>>55658
Тащемта от q действительно никакого толку не оказалось.
Добился целей лабы так писал выше - append'om. Так не разобрался как можно удалить из основного списка элементы начинающиеся не с 'p', то сделал второй список, в который вошли элементы, начинающиеся не с 'p'. Ну и объединил два списка: 'pidor', 'porebrik','aa','dd','dvach','grob'
Вот такой я говнокодер.
https://habr.com/ru/post/193242/
задавайте любые вопросы как ответ к этому посту, пока кушаю супчик, буду отвечать по мере знаний (можно даже очень тупые на ваш взгляд)
В Джава треде слишком сложно объявить о том, что ты насрал
В Си-Сялп-треде можно насрать только с винды
В СПП-треде забыл очистить прошлую кучу говна и теперь негде срать
В ДЖС треде неправильно преобразовался тип и вместо того чтобы насрать, обоссался
В других тредах все настолько мертво, что срать там нет смысла
Удивлен как ты насрал в этом треде без конфликтов с прошлым говном и средой для сранья, поздравляю...
Этот курс под питон 2.7 и фласк 0.9. Это не устарело? На 3 питоне можно будет это всё пройти?
PyCharm. Сам я новичок, но даже для себя нахожу много удобных фич и не вижу причин его не использовать.
jupyter notebook
Вот скажи мне брат саблимщик ты код как запускаешь? Сейчас сам через плагин repl в новой вкладке, ибо необходимо ручками значения передавать, а через стандартный билд код не дает, но этот репл жутко не нравится тем что вкладке генерит. Может ты мне какую альтернативу подскажешь, а то вскод пока приходится использовать, но там тоже не все радужно.
А как трассировку делаешь? Через print лол?
Если просто спираль нарисовать легко, то вот чтобы черепаха при движении еще и поворачивалась на заданный угол... ух, бля... пиздец.
У меня тоже нормально не получилось, сделал с goto. Зато с goto это даже лучшее решение, потому что так чисто качественный проход по функции в полярных координатах. На розеттакоде тоже с гоуту сделано
Так питон же, можно насрать всего одной командой!
Спасибо, анон
Я еще math использовал с тригонометрией. А ты через goto делал с поворотом черепашки?
Хуя ништяк, щас заботаю всю хуйню и на прямиком в гугл работать!
Я тоже math использовал, да. Ну а как тригонометрию без него считать, свои функции для синуса и косинуса совсем не в тему писать при рисовании черепахой. Нет, goto никаких поворотов не делает и не должен, я же говорю, через поворот+форвард у меня тоже плохо получилось. Ну то есть какую-то спираль оно рисовало, но точно такую как через гото нет. А через гото на самом деле максимально правильно по логике вообще отрисовывания графиков функций.
По одной хорошей книжке решил попробовать импортировать модуль командой import
Сначала попробовал встроенный модуль подрубить - math - всё нормально, без ошибок. Затем решил свой подключить и бах, выдаёт вот такую ошибку:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
exec(open("module.py").read())
FileNotFoundError: [Errno 2] No such file or directory: 'module.py'
Не пойму, почему не работает. Окружение PATH я настраивал, каталог нужный добавлял и модуль открывал так же оттуда.
Антуаны, есть предположения, что может быть не так?
Спасибо большое. Теперь другая проблема. Нагуглить не удалось, потому что я очень сонный сейчас
SyntaxError: EOL while scanning string literal
Уже слеши экранировать до тройных пытался. Моразм начался какой-то, а ему хоть бы хны
Ты ждёшь, что я по ошибке просто угадаю что ты делал в своей программе?
Тебе придётся научиться гуглить или хотя бы нормально вопросы задавать
Блин, прости. Вот так сделал, как было указано на пике 2
На пике 1 то, что сделал я
Кавычки закрой. И лучше возьми путь без кириллических символов и пробелов в названиях папок
Вот же я тупой. Рассматривал путь и заметил незакрытые кавычки аккурат, как ты ответил. Но всё равно спасибо
Посмотри в сторону defaultdict в модуле collections. Там можно создать словарь, который по любому не содержащемуся в нем ключу возвращает пустой список.
Будь повнимательнее и не беги сразу на форум с картинками жаловаться на ошибку. Стыдно же.
>Будь повнимательнее и не беги сразу на форум с картинками жаловаться на ошибку. Стыдно же.
Да, ты прав. Еще раз спасибо
Эрик Мэттис хорош - комплексно, доступно, заебись
-Малинка будет сервером MQTT и обработки запросов - на малинке запилю голосовой ассистанс как в видосе хаудихо с изменениями для управления умными-релейками голосом
-Умные релейки и датчики запилю на ESP8266 при помощи MicroPython, будут обмениваться данными с малинкой по MQTT
-Управление с девайсов в ручную запилю в виде Python-программы на Kivy скомпилированой под Windows, Android и Macos, которая будет общаться с малинкой опять же по MQTT веб интерфейс не хочу - ненавижу веб технологии
Всё верно запланировал?
Это как аналог MQTT? Я просто пока плаваю в теме, не так давно начал вникать, и информации пока слишком много. Просто если я верно понял - готовые датчики всяких сяомь используют MQTT, и потому я думал чтобы в будущем иметь возможность работать с ними - пробовать MQTT не пинайте если я что-то не так понял или сказал, луше объясните
Я хз что используют датчики сяом твоих, но ZerroMQ это MQ, только на сокетах(или типа того, давно читал).
ладно, спасибо, поинтересуюсь что это такое.
Ты имеешь в виду ограничение, выплывающее уже после ввода и нажатия Enter или же не дающее возможность ввести больше N символов ещё до нажатия?
Двач, подскажи, не устанавливается pyinstaller
Переустановка и добавление в ass не помогает
Вот человек не удосужился даже вопрос сформулировать, и ты своим желанием помочь как бы показываешь этим пидорасам, что они все делают правильно.
рекомендовано ставить пайтон в директорию без кирилицы. Переделывай. Это раз. Два - в пайшарме потом в настройках проекта выберешь путь к интерпретатору
Не очень понял, о чём и к чему ты это. Я сам в первую очередь подумал о заранее ограниченном поле для ввода текста. Это задача всё же поинтереснее, чем написать банальные if и else в нужном месте кода.
Есть класс структуры типа:
class Foo(object):
a = 10
b = 20
c = 10
def get_a(self):
return self.a
def get_b(self):
return self.b
def get_a(self):
return self.a
Нужно как-то переписать эту срань, чтоб интерфейс геттеров остался прежним, но на каждый новый атрибут не пришлось создавать новый геттер. Два дня ебусь, даже в метаклассы полез, но это какой-то спидорак, есть у кого идеи?
*думал?
Объясни нубасу поподробнее что ты хочешь рили тупо подумать, а то я нихуя не понял, чего ты хочешь.
У тебя класс с 3 статик-переменными, тремя геттерами для инстансев и что тут переписывать
>на каждый новый атрибут не пришлось создавать новый геттер.
Ну ебни через __dict__ чтоле
Перевожу на русский: у тебя был словарь, потом его как-то изменили. Нужно вывести только изменения. Не совсем понятно, то ли нужно сравнивать именно два разных словаря (задание), то ли нужно написать нечто, ведущее себя как словарь, но запоминающее изменения (примеры). В любом случае пишется за 20 минут без тестов. Тесты там в хуй не вперлись.
А хуй знает, я, наверное не буду делать, т.к. с ходу не смог придумать решение для первого, а ебать мозги ради галеры обоссаной? Нахуй надо.
>>56584
> то ли нужно сравнивать именно два разных словаря (задание)
This
> В любом случае пишется за 20 минут
Нихуясебе. Ссылочку на вакансию дать? Зааплаешься.
Ну вот теме метаклассик (но такое лучше сделать просто в init класса, зачем тут мета?)
https://ideone.com/OcU8Uu
> This
Никак не понять из текста. Есть пример, в нем есть только data, который модифицируют и res, в котором должен быть результат. Что с чем диффать?
> с ходу не смог придумать решение для первого
Могут появиться новые ключи (можно set(dict2) - set(dict1)), могут удалиться, могут измениться значения для ключей. Для каждого общего ключа: если типы различны, то и значения однозначно различны; если тип словарь, рекурсивно сверяем; иначе тупо сверяем значения. Плюс-минус придумывем, что делать удаленными ключами. Десять строк, нахуй там юнит-тесты и КЛАСС, я понять никогда не смогу.
> Никак не понять из текста
Согласен, я написал, переспросил.
> Десять строк, нахуй там юнит-тесты и КЛАСС, я понять никогда не смогу.
Звучит неплохо идея. Тут тестовое для проверки того, как человек пишет код.
Но суки ебаные блять, нахуя я вам везде даю ссылку на свой гит? Вы блять зайдите и посмотрите, дауны. Извиняюсь, накипело.
Возвращаемые значения позволяют тебе засунуть большую часть грязной работы в функции, тем самым упростив основную часть программы.
https://skillfactory.ru/python-for-web-developers
Эти предлагают фулстак пайтон
https://geekbrains.ru/geek_university/python
а здесь вроде того же самого, только ?глубже?
Расскажите, насколько это рабочая схема? Основная работа у меня даже не на компьютерея работяга, это не шутка, поэтому не стоит брызгать слюной, мол ну я и долбоёб, я понимаю, что я просто не смогу на каких-то волевых сам приходить, искать и учить какую-то инфу и решать задания, здесь будет программа, которую компетентные(компетентнее меня) люди собрали. Ну, собстна, задавайте ваши ответы
Перепостил из ньюфаг-треда, он мертв
Хотел запилить голосового ассистента, сделал так:
sudo apt-get install
pip install pyttsx3
pip install speechRecognition
sudo apt-get install python-pyaudio espeak python-espeak
В результате при попытке воспроизвести - устройство не найдено (куча ошибок, пикрил).
Если делать через терминал, командой
espeak "Hello-world" - высыпает те же ошибки
espeak "Hello-world" 2>/dev/null - ошибок нет - это должен быть рабочий вариант, с указанием на устройство вывода - но звука ннет
В пайтон3 модуль espeak не видит - видит только в пайтон2.
ЧЯДНТ? Как в pyttsx3 указать устройство вывода? Я не вижу этого в документации
А, забыл пикрил фото, потому что стандартный файлменеджер расбиана не имеет доступа к флешке, и разбираться с этим я не хочу сейчас, а удалённый рабочий стол пока не настраивал
Ну зачем так-то, мог был по-человечески сказать.
Я вот заводо быдло за 30. Пытаюсь выучить питон уже не первый год (7-8 лет время от времени читаю книжки по нему), но в этот раз основательно взялся и последний месяц стабильно трачу понемногу времени на него.
В начале года ушел с завода. А дальше начался пиздец. Сейчас вот не могу обратно устроиться в туже компанию.
За это время прошел курсы парикмахера за те же 60к. Скажу что это была самая бесполезная трата в моей жизни и лучше бы на курсы питона пошел. В итоге собираюсь как накоплю денег пройти какие-нибудь дешманские, но когда это будет не известно, чую что минимум через год.
Это не троллинг тупостью, это то что основы я знаю, но читать начинал книги для тех кто 0 в этом и теорию быстро пробегал и решал задачки, чтобы просто не забыть язык. И да, у меня были перерывы большие, плюс пхп пробовал по совету, но на него быстро забил, ибо кроме того что он меня люто бесил, ничего мне не дал, легче на питоне что-то написать. Да и вообще, яп я использовал для конкретных целей и базы было выше крыши, плюс регулярные выражения покрывали все мои потребности. А тут прям захотелось до уровня джуна выучить, вот и взялся. Сейчас потихоньку фласк начал тыркать.
Я задачу в пример привёл просто, там методы сильно сложнее геттеров на самом деле. Зря слово это использовал в формулировке, сбил с толку видимо.
>>56659
Спасибо, думаю сработает. Метакласс в отличие от конструктора можно будет в нескольких классах использовать, что мне и надо.
>>56569
Нужно механизм, который будет создавать однотипные методы на каждый статический атрибут класса.
> Метакласс в отличие от конструктора можно будет в нескольких классах использовать
А можно просто декоратор запилить с тем же самым содержимым.
print (3 + 'how')
Ну Степа, активируй винду уже
> сильную типизацию
'хуй' * 3, ага.
float(1) + int(1), ага.
Не существует никакой сильной типизации в чистом виде. Нигде. То, что оно у >>56806 не работает, означает лишь то, что так задумано, потому что приводит к путаниец. Была бы возможность переопределять методы у встроенных классов - можно было бы "починить" сломать?.
print (str(3) + " how")
Всё-таки это достаточно сильная. На языке с совсем сильной типизацией просто невозможно будет писать, слишком много лишних преобразований.
В питоне практически всегда надо делать явное преобразование типов, но для ряда случаев определены преобразования.
Например, ты определишь класс MyClass и в нём есть метод __str__, приведение типа к строке. Но даже в этом случае ты не можешь написать
my_class = MyClass()
" " + my_class
тебе надо делать явное приведение типов
' ' + str(my_class)
и сделать прозначное преобразование, как в C++, нельзя.
'хуй' * 3 - это не изменение типов, это специально определённая орерация умножения для строки. В принципе ты можешь переопределять операторы для класса, чтобы "my_class + 3" имело смысл. Но тут всё-таки явное определение оператора, это согласуется с принципами "сильной типизации".
cur = con.cursor()
login = 'igor'
cur.execute('Select name from Students where login = ?', [login])
code = str(cur.fetchone())
print (code)
Почему я получаю данные вот в таком виде:
('2RKH2KOGVQS3RDCVQB3W76KRQPYZRV6K7TRK3ZNKRP7GK5FWLB7A',)
КОГДА МНЕ НУЖНО ПРОСТО БЛЯДЬ:
2RKH2KOGVQS3RDCVQB3W76KRQPYZRV6K7TRK3ZNKRP7GK5FWLB7A
И В БД Именно такая запись.
Блядь, не понимаю как правильно погуглить даже, пиздос уже час ебусь!
Помогите
Похоже, cur.fetchone() возвращает кортеж, что, в принципе, логично. Как вариант - присваивать str(cur.fetchone()[0]) вместо str(cur.fetchone()).
Снимай портки, доставай хуй, я у тебя отсосу. Спасибо анончик, выручил пиздец как.
> достаточно сильная
Лол. Давай в децибелах измерять?
> Но тут всё-таки явное определение оператора, это согласуется с принципами "сильной типизации".
В питоне везде и всегда явное определение оператора. По крайней мере, так оно выглядит "снаружи" интерпретатора. И ты никак не можешь запретить делать каст магическому методу, реализующему оператор. Поэтому, несмотря на заявления в документации, в питоне нет сильной типизации.
a, b = Type1(), Type2(); a + b может сработать, явные преобразования видишь? - и я не вижу, типы разные мало того, в Type1.__add__ может быть return Type3(), язык опять же не запрещает, значит типизация никаким местом не сильная.
> ты не можешь написать " " + my_class
Это манипуляция. Я мог бы, если бы встроенные типы в питоне не были бы запечатаны не для усиления типизации, а просто чтобы не замедлить и так медленный язык еще раз в пять. Я все еще могу написать my_class + " ". И даже код анона >>56806 я почти могу написать (обойдя проблему с переопределением int.__add__): http://ideone.com/x4vjeF
> В питоне практически всегда надо делать явное преобразование типов
Потому что встроенные типы недописаны (намеренно, да). Но это проблема касается встроенных типов, а не языка.
я иногда в результате получаю числа с огромным количеством знаков после запятой?
Пример:
b = 0.001
for a in range (0,100)
c = a*b
print(c)
и в результате я получаю:
0.001 / 0.002/..../0.036/0.037000000000001/0.038/...
Потому что флоат какая-то хуита с непонятной точность. Я так понял чтоб таких проблем не иметь - проще использовать:
from decimal import Decimal
для не целых чисел.
Ну не хуета, а способ хранения вещественных чисел.
Про идею можешь почитать https://neerc.ifmo.ru/wiki/index.php?title=Представление_вещественных_чисел
Вообще эта информация может пригодиться только на интервью и байтоебам, так что не ебись и используй round
>Вообще эта информация может пригодиться только на интервью и байтоебам, так что не ебись и используй round
Когда работаешь с деньгами, то это очень важно, у нас float почти не используется, все числа либо в int или обернуты в Decimal
Потому что числа в компьютере хранятся в двоичной системе исчисления, аллё. Неужели это для тебя новость? Наверняка нет.
Тогда тебе будет просто понять ответ: в двоичной системе все float'ы должны иметь конечно представление, типа "1101.1101010010011". Но не всякое число, имеющее конечное десятичное представление, имеет и конечное двоичное представление. Например, "0.2" в десятично системе - это бесконечная циклическая дробь "0.00110011001..." ("0.(0011)"), которая, разумеется, округляется компьютером до конечного числа знаков после запятой. И если это округлённое число потом ты пытаешься записать в десятичной форме, то выйдет "0.200000000000000011102230246251565404236316680908203125".
Так происходит не со всеми числами, конечно. Например, "0.5" в двоичном виде это просто "0.1", и преобразование туда-обратно происходит без округлений.
Можешь сам поиграться вот тут https://www.exploringbinary.com/floating-point-converter/
тоже думал поучиться на скилфактори,
не могу переступить порог "джуна", на работе делаю что-то с текстовыми данными ,
но написать что-то серьезное вроде вебприложения не могу
1. Нахуй такое требование? Чем табы не угодили?
2. Всегда пользовался табуляцией равной 4 пробелам. Сейчас одну табуляцию заменил на четыре пробела (саблайм автоматом меняет). Всё правильно сделал?
Не, ты не понял. Выделение блоками понятно, но почему в PEP 8 рекомендуют пользоваться богомерзкими пробелами для выделения этих блоков, а не православными табулярами?
>Нужно механизм, который будет создавать однотипные методы на каждый статический атрибут класса
Ну статические переменные, как я предложил можно высосать из __dict__, а "однотипные методы" - какая-нибудь хуйня с замыканием, ленивые лямбды не подойдут.
Можешь ещё написать декоратор для класса. Метаклассы лучше использовать, когда декоратора недостаточно
Блять, ты тралишь? Я так и сделал. Вопрос не во мне, а в том почему по PEP 8 именно пробелы рекомендуются.
ПОЧЕМУ во стором случае переменная i внезапно стала 5?
Что значит изменялась внутри функции?
Что такое локальная и что такое глобальная переменная я знаю.
Помогите, пожалуйста.
Чтобы у всех было одинаково. В зависимости от машин и редакторов табы могут быть разные.
Читай внимательно, баран. "Если бы". Глобальная переменная видна во всём коде, локальная - только в теле функции (совпадающее название перекрывает глобальную).
сначала базу почитай. у тебя в голове так нихуя не структурируются знания. открвай литературу и читай, блять
Не слушай анонов свыше. Это просто херовый пример, который к тому же неверен.
Получается, автор учебника просто облажался и рандомно написал значение? Офигенно. Пол часа мучаюсь, пытаюсь разобраться.
Если так, то спасибо.
В функции последнее значение i будет равно пяти, после чего функция завершится.
Ну разберём по частям автором написанное.
>"Если бы"
Ну обойдём это ограничение c помощью массива
https://repl.it/repls/GrossVerticalBrace
Ой, нихуя не сломалось.... как же так. Автор не знает как range работает или что?
И да, можно снять комментирование и убедиться, что это один массив.
На пример получше.
https://repl.it/repls/LightgrayTintedTrigger
Пример действительно некорректный и ошибочный, так как в этом случае даже если бы глобальная переменная изменялась бы ВНУТРИ функции, результат был бы аналогичным, то есть:
1!=1
2!=2
3!=6
...
итд, так как значения глобальной и локальной i тут совпадают.
На скрине я сделал i global, автор лох.
Да, автор очевидно облажался. Может он сам пару лет назад в программирование с нуля вкатывался.
При желании можно проверить, просто объявить i как global. Но и так очевидно.
> Пытаюсь выучить питон уже не первый год (7-8 лет время от времени читаю книжки по нему)
Тьфу, блядь, я этот ёбаный Пихон за 2 часа выучил, прочитав документацию, этот дебил за 8 лет не смог.
Я тут разные сортировки реализовываю, и мне нужно передавать в функцию список и индекс последнего элемента, самое простое(#1), передать аргументом по умолчанию какое-то левое число, с которым функция потом точно не вызовется рекурсивно, это работает.
Но препод показывал фишку(#2), когда по умолчанию мы даём None, а потом, ну вы поняли: https://ideone.com/y3wk3e
Вот второй способ у меня вызывает превышение глубины рекурсии, что я делаю не так?
Вот весь код со вторым способом:
https://ideone.com/Us9fv4
Бля, я понял, спасибо.
Я не молодой гений, который с 15 ковыряется, у нас на информатике делали в штмл хелоу ворд.
Поговорите, пожалуйста, со мной
Я готов учиться так же сильно, как я ненавижу сейчас то, чем занимаюсь.
>молодой гений, который с 15 ковыряется
Не сыы, у них на олимпиадах горит с тех кто занимается с <=10.
Читаешь книги, сначала по пистону, потом по жс, потом по джанге + какой-нибудь асинхронный фреймворк и наконец реакт.
Книг дохуища, курсы нахуй не нужны.
Представь, что ты хочешь пойти переводчиком работать, переводить какие-то документы на немецкий язык. А сам ты пока только шайсе, ханде хох и гитлер капут знаешь. Цель реальна, но путь долог.
import RussianIvan as kukhold
import RussianTyan as blyad
from asia import Ahmed
Ahmed.moved(kukhold, to=PARASHA)
Ahmed.fuck(blyad, to=ANAL)
Ahmed.solved_voprosik.make_money()
Runtime error: your Ivan broken while running from Ahmed. Please repair your Ivan.
Что делать?
Что делать? Объявить их классметодами или просто отключить их детект в инспекторе пайчарма?
Выглядит это так:
st = 0,0,0
a = np.column_stack([a, [ st ]])
Пытался и через format, выдает ошибку. При этом если вручную забить 0,0,0 то никаких проблем нет.
> которые не изменяют и не дергают данные из self
> Что делать?
Значит это не методы. Убери свои функции нахуй из класса, это тебе не жаба.
Они вне контекста класса юзаться никогда не будут, я просто разделил большую функцию и вынес для удобства
И, тем не менее - зачем им быть в классе?
Это же питон - сделай просто функции в этом файле, рядом с классом.
Сделай статическими, почему нет?
А вот так >>57276 делать скорее всего не надо. Логика построения кода страдает, читаемость страдает.
Тупо, вот два класса есть,
ClassA:
@staticmethod
do_some_work()
ClassB:
@staticmethod
do_some_work()
два разных класса с одинаковым по имени статическим методом, который реализован может быть по-разному, это специфика класса. Это совсем грубый пример.
Физически статики всё-таки чуть другие, это не декоратор в привычном понимании, там своя реализация в интерпретаторе для них.
Сап
Ни написал ни строчки кода в жизни.
Но нужно срочно блять учить какой то язык погромирования, желательно связанный с анализом данных.
Что то где то слышал про питон.
Также что то где то слышал что его не прекращают поддерживать и что это плохой сигнал.
Напишите стоит ли его учить в моем случае и почему?
В твоём случае не стоит. В анализе данных всего два наиболее употребимых языка (ну ещё для первичного анализа часто бывает удобен Excel/Power BI) это R и Python. Эту информацию ты бы смог извлечь за 20 минут гугления. Далее легко можно было бы почитать характеристики каждого из них и выбрать тот который тебе больше подходит.
Долбоеб тупой. Хуистики может еще почитать?
Р насколько я понял он какой то ущербный, типа полуязык.
А Питон уже якобы прекратили поддерживать.
Стоит ли учить Питон и в чем подводные прекращения поддержки?
если ты долбает то можешь не отвечать
>Р насколько я понял он какой то ущербный, типа полуязык.
>А Питон уже якобы прекратили поддерживать.
Знаешь что, а наверняка ты говна, тупая жирная зелень.
Тебе наверное кажется что это очень остроумно и смешно, но это не так
Ты конечно прав, я подразумевал, что вопрос не касается коммерческой разработки. Если ты занимаешься коммерческой разработкой и задаешь подобные вопросы здесь, то у меня очень плохие новости для твоего работодателя.
Я вообще мимо проходил
> А вот так >>57276 делать скорее всего не надо.
Почитай, например, код стандартной библиотеки. Открываем случайный: zipfile.py. Видим: def _strip_extra, def _EndRecData, def _EndRecData64, которые используются классом ZipFile. Как же так? Почему они не статические методы? Правильно, потому что это писали на питоне, а ООП-шизики, набижавшие из Java, до них еще не добрались.
Есть ли риск, что меня пидорнут с подачи какого-нибудь Санька из айти отдела, который задетектит работу скрипта? Мол, мутный софт, может быть я корпоративный шпион-диверсант, хуё-моё
Какие подводные при использовании smtplib с почтовым сервером компании?
Есть ли реальные угрозы безопасности рабочей почты?
Если ты локально на своем компе будешь рассылать письма через скрипт на питоне - заметить это будет невозможно, так как отправка не будет отличаться от отправки вручную. Если совсем параноик - сделай паузу между отправкой писем на случайное время.
Подводных нет, опять же отправка через библиотеку и через почтовый клиент (который так же использует кем-то написанную библиотеку, а может даже smtplib но не думаю что ты его используешь).
Угроз нет, если ты случайно в список почт на отправки, не добавишь почту шпиона или там у кого-то не появится доступа к твоему компьютеру, но это проблема не скрипта, это может произойти и без него.
> Есть ли реальные угрозы безопасности рабочей почты?
Будешь рассылать без вызова starttls() - будут тебе реальные угрозы безопасности.
>А Питон уже якобы прекратили поддерживать.
Не используй питон, тебе не нужно, ты даже элементарную информацию найти не в состоянии. Попробуй себя в специальности продавец-консультант. Или менеджер по продажам. Там как раз важно уметь поболтать.
>Видим: def _strip_extra, def _EndRecData, def _EndRecData64, которые используются классом ZipFile. Как же так? Почему они не статические методы?
Потому что эти функции используются в нескольких классах и в других функциях, которые вне классов.
Код должен быть в первую очередь корректно офомлен с точки зрения логики. То есть если у тебя метод явно по логике связан с классом, то его и надо оставлять в классе и делать статическим, если не привязан к контексту. Если же он делает какую-то общую операцию, не связанную с классом, то разумно выносить из класса.
Ты можешь привести пример операции, "связанной с классом", которая была бы достаточно целостной для вынесения в отдельный кусок кода, но при этом не требовала бы для выполнения значений экземпляров класса?
А то общие слова, не понятно, о чём конкретно речь.
https://docs.python.org/3/faq/programming.html#how-do-i-create-static-class-data-and-static-class-methods Крайне рекомендуется не кричать "аааа, @staticmethod", а дочитать до конца.
В ней использую модуль numexp и один свой
В чем проблема?
Если тебе надо сконвертить софтину или софтину с PyQt в exe - используй nuitka.
nuitka --standalone --windows-disable-console --plugin-enable=qt-plugins --windows-icon="c:\icon.ico" --remove-output "c:\test.py"
gtts:
https://gtts.readthedocs.io/en/latest/module.html#examples
______________________________________
Playing sound directly:
from gtts import gTTS
from io import BytesIO
mp3_fp = BytesIO()
tts = gTTS('hello', 'en')
tts.write_to_fp(mp3_fp)
# Load `mp3_fp` as an mp3 file in
# the audio library of your choice
_____________________________________
Каким модулем можно воспроизвести этот 'file like object'?
Пробовал Pygame.mixer - не хочет. Видел пример с использованием musicplayer - этот модуль у меня даже не устанавливается. Есть какие-то ещё варианты?
Нашел решение. В начале кода необходимо добавить
import numpy.random.common
import numpy.random.bounded_integers
import numpy.random.entropy
Это баг numpy, говорят в следующей версии исправят
Пошел нахуй русак ебаный. Чтоб тебя и твою семью менты изнасиловали
>Но нужно срочно блять учить какой то язык погромирования
Очередной колхозник подумал, что будет спустя месяц получать миллиарды в наносекунду. Кинул тебе за щеку манька, ты не то кодить, ты писать без "блять" как междометие не можешь. Теперь открывай рот, разрешаю.
У меня все работает. Что конкретно тебе надо? Если добавить именно строку, а не столбец, то нужен row_stack, а не column_stack, и в любом случае должны быть подходящие друг другу размерности аргументов.
Тупая шлюха кто тебе сказал что я работать буду прогреем???
Мне это нужно чтоб в США приняли в магистратуру на бизнес аналитика.
Там одно из требований - знание ЛЮБОГО языка программирования на НАЧАЛЬНОМ уровне.
Да кто тебя туда примет, манька. Ты с таким отношением к людям будешь нахуй послан в самое, что ни на есть ближайшее время. Приказываю гавкать дальше, чмоха.
>Python'ом могу пользоваться только версии 3.4.2
А что мешает поставить свежий?
> Есть вариант установить старые версии библиотек?
Конечно. Можно прямо указывать версию пакета в форме <имя_пакета>==<номер_версии>, например, pip install MySQL_python==1.2.2. У pip есть много команд и ключей к ним, в том числе, например, --python-version для, внезпно, версии питона, для которого надо искать пакеты. Кроме того, на сайтах проектов обычно доступны и предыдущие версии проекта.
> определить положение окна этого приложения на экране
Ты можешь дергать Windows API через ctypes. EnumThreadWindows/FindWindow, GetWindowPos, вот это все.
хуиту написал. У меня есть json
то есть надо сделать как-то так a = s.json()
print (a["response"]....) итд. Помогите анону
a = sizes[5]['url']
Этот тот самый шизик-мелкобуква, который срёт в каждом треде, расходимся.
Учи, он простой, справишься быстро, раз уж тебе не нужны глубокие знания.
https://pastebin.com/PcXuF8YK
Какую ситуацию? У тебя меняется переменная класса, все логично. Объясни подробнее, чего ты хочешь долбиться?
У меня получается два экземпляра класса, но при смене в одном из экземпляров значения в словаре, значение меняется и во втором. Мне нужно чтобы такого не было.
Вроде как такое происходит потому что оба словаря ссылаются на одну область со значением
Так это потому, что ты объявил "переменную класса", няша. То есть, она общая как для объекта new1, так и для объекта new2.
Не знаю твою задачу и почему тебе важно определять словарик в отдельном классе, но предположу, что так надо.
Что бы словарик создавался каждый раз новый, определи его не как переменную класса, а как переменную объекта, используя конструктор (__init__), тогда каждый раз, когда ты будешь создавать объект new1, new2, new3 класса Test_main у тебя будет создаваться новый объект test_ класса Test, с доступом свеженькому, только созданному специально для этого объекта, словарю.
https://pastebin.com/e0a0dJEn
Или для тебя принципиально важно, что бы создавался один объект класса Test, на который ссылались разные объекты класса Test_main, но при этом, каждому из них был доступен отдельный атрибут test_dict?
> Не знаю твою задачу и почему тебе важно определять словарик в отдельном классе, но предположу, что так надо.
Просто пишу текстовую рпг и решил для инвентаря сделать отдельный класс, в котором в разных словарях хранятся отдельные типы предметов.
А у меня получается что для двух разных существ инвентарь общий
> Что бы словарик создавался каждый раз новый, определи его не как переменную класса, а как переменную объекта, используя конструктор (__init__), тогда каждый раз, когда ты будешь создавать объект new1, new2, new3 класса Test_main у тебя будет создаваться новый объект test_ класса Test, с доступом свеженькому, только созданному специально для этого объекта, словарю.
Вернусь с обеда попробую так переписать, вроде как это именно то что нужно.
> Или для тебя принципиально важно, что бы создавался один объект класса Test, на который ссылались разные объекты класса Test_main, но при этом, каждому из них был доступен отдельный атрибут test_dict?
Мне наоборот нужно чтобы для каждого класса Test_main создавался свой Test, так как в моем говнокоде он представляет собой инвентарь.
Должно работать. Удачи тебе с твоим начинанием.
Я и сам думаю начать на pygame пилить что-нибудь.
Я больше с целью нормально понять ООП, чем получить готовую игру.
А что думаешь? Если время есть пили, чому нет, может годное что выйдет.
Потому, что очень много заморочки. Во-первых, я смутно знаком с PyGame'ом, во-вторых, с игростроем вообще не знаком, ну и в-третьих, я не умею рисовать. При этом, никакой коммерческой выгодны (прокачки особых скиллов, умения пользоваться нужными при работе библиотеками и т.п.) нет, разве что строчка в резюме "сделал игру", лол.
Вот и получается, что цель как-то не оправдывает средства.
Думаю строчка в резюме "сделал игру" не такая уж и плохая вещь, тем более если код хороший будет
Так а чё крутовато? На малинке потом умный дом сообразишь, а elm8266 стоит 200 рублей - заодно майкропайтон поковырять можно
Приехали. Оно так и сделано, но один хуй моб дает мне пизды мечом, который я только что выдал игроку
Тут код, который я смог написать - https://pastebin.com/0BqkZ5yE
Проблема только в одном, когда тесты запускаю, если последнюю клетку надо закрасить, то фейл. Робот тупа доходит и не красит. Не понимаю какое условие надо ебануть, чтоб все ништяк было.
Задача отсюда - http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html#o9-task-8-2
Помогите
Помогите решить проблему, благородные доны. Я пытаюсь наладить простую программу для шифрования. Нужно просто запросить у пользователя обычную строку текста, зашифровать её, записать в текстовый файл (к которому могут иметь доступ третьи лица, от которых и нужно защитить данные), а потом другая программа могла бы вытаскивать всё
то, расшифровывать и использовать. Ничего толкового придумать не смог
На предпоследней клетке твой робот делает проверку, надо ли закрашивать, а потом шагает вправо и функция волл из он де райт начинает отдавать True, поэтому цикл с проверкой на последней клетке не выполняется.
Подумай как сделать программу так, чтобы оно сначала проверяло, надо ли закрасить, а потом делало шаг, если справа нет стены.
>Ничего толкового придумать не смог
Начни с того, что разберись с понятиями "блочный шифр", "потоковый шифр", со словами ECB, CBC и тому подобными. Это базовая теория.
Потом смотри на библиотеки, которые имеются в наличии.
Если ты не школьник, у кого банально нет своей карточки, чтобы с неё за хостинг заплатить, я бы рекомендовал всё-таки найти 5 долларов в месяц на VPS. У тебя масса других возможностей появляется, когда свой виртуальный сервер есть.
С бесплатными вариантами тяжело. Тут даже не потому, что всем жалко, а вопросы безопасности, слишком много опций для злонамеренного использования таких сервисов, никто с этим связываться не хочет.
Но поищи, может что есть.
Что я делаю не так
Вот так вызываю:
driver = CustomDriver(student)
Вот такую ошибку получаю:
TypeError: __init__() takes 1 positional argument but 2 were given
Вот такой код:
import os
from sqlalchemy.orm import Session
from studtool.models import Student
from .utils import AttachmentUploadException
from cached_property import cached_property
from selenium import webdriver
__all__ = (
'CustomDriver',
)
class CustomDriver(object):
def __init__(self):
self._is_initialized = False
@cached_property
def driver(self):
# type: () -> webdriver.Chrome
self._is_initialized = True
return webdriver.Chrome()
def logout(self):
if self._is_initialized:
self.driver.close()
def sign_up(self, student, session):
print ('signup')
def sing_in(self, student):
pass
def upload_attachment(self, student, attachment):
print ('upload')
def update_info(self, student):
pass
def getkey(self, student):
pass
def logout(self):
if self._is_initialized:
self.driver.close()
Что я делаю не так
Вот так вызываю:
driver = CustomDriver(student)
Вот такую ошибку получаю:
TypeError: __init__() takes 1 positional argument but 2 were given
Вот такой код:
import os
from sqlalchemy.orm import Session
from studtool.models import Student
from .utils import AttachmentUploadException
from cached_property import cached_property
from selenium import webdriver
__all__ = (
'CustomDriver',
)
class CustomDriver(object):
def __init__(self):
self._is_initialized = False
@cached_property
def driver(self):
# type: () -> webdriver.Chrome
self._is_initialized = True
return webdriver.Chrome()
def logout(self):
if self._is_initialized:
self.driver.close()
def sign_up(self, student, session):
print ('signup')
def sing_in(self, student):
pass
def upload_attachment(self, student, attachment):
print ('upload')
def update_info(self, student):
pass
def getkey(self, student):
pass
def logout(self):
if self._is_initialized:
self.driver.close()
Спасибо!
class CustomDriver(object):
def __init__(self):
self._is_initialized = False
у тебя инит принимает self(он передается неявно) и все
А ты ему тычешь self и student
Как я вижу, __init__ в твоём классе не принимает никаких аргументов, кроме self. Как вариант - добавить в качестве второго аргумента student, сделать его атрибутом класса и потом уже использовать в твоих методах.
я нуб, отсасывать не надо
Пока что запилил регистрацию и логин у меня аж привстал когда всё заработало как надо, ага, завтра сделаю два класса: юзер и наследуемый от юзера админ.
Так вооот, будет ли правильным то, что я вкорячу дополнительным аргументом класса статус, который и будет различать юзера от админа когда пользователь будет логиниться, не? или как это всё провернуть?
И это, проверьте текущий http://ideone.com/0fnl4C код, подробно обоссыте если что не так, ага. никаких дополнительных проверок, безопасности и прочей хуйни пока что нет, потом допилю, если не лень будет
мимо >>54354
Базы еще не проходил, думаю меня в последующих главах этому научат, а пока пользую json.
Пилю это говно только для того чтоб ООП подтянуть
Только вкатываюсь в питон. Может кто построчно объяснить что тут делается такое?
Какая-то жуткая ебанина просто.
>class CustomDriver(object):
>def __init__(self):
>self._is_initialized = False
>
>@cached_property
>def driver(self):
># type: () -> webdriver.Chrome
>self._is_initialized = True
>return webdriver.Chrome()
>
>def logout(self):
>if self._is_initialized:
>self.driver.close()
У тебя там есть декоратор cached_property, который не описан в твоем куске. И уважай других прикрепляй ссылку на пастбин, а не срань гринтекстом
Надо качать файл и запускать у себя в консоли - на идеоне интерактив не работает, как я понял
Спасибо за декоратор, но я не тот анон, что выложил этот кусок.
>>58446 -кун
Мне наставник дал такой комментарий:
>обратите внимание на эту конструкцию
>is_initialized флаг хранящий состояние обёртки над selenium.
>driver инициализируется лениво (при обращении к нему). нет обращения - не инициализируется, окно не создаётся.
Я вот так открываю Хром – self.driver = webdriver.Chrome(executable_path=path + '/chromedriver', chrome_options=options, )
Вот куда мне поставить вызов Хрома, чтобы всё работало как задумано?
Пиздец, я уже методом тыка куда только не вставлял.
Настолько все плохо, что готов сотку отдать за то, что вполне можно нагуглить? Был бы за компом, бесплатно обучил бы тебя, как строить запросы в Гугл, чтобы найти нужные тебе ответы, но увы.
Тихо ты, он курсы пойдет покупать за 50к, а потом жаловаться, что вкатится не получается
>>58560
Это я сделал, но столкнулся со следующей проблемой.
https://pastebin.com/4TuGHa6C
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cached_property.py", line 35, in __get__
value = obj.__dict__[self.func.__name__] = self.func(obj)
TypeError: driver() missing 1 required positional argument: 'student'
35 строка это @cached_property
Нихуя не понял, но твой метод драйвер запрашивает обязательный аргумент "student", который ты ему, видимо, не передаешь. А вообще, зачем тебе "student"? Ты ж его вообще нигде не используешь, кроме как в принимаемых аргументах методов.
я делаю str(2.4e-05) и получаю '2.4e-05', но мне нужно получить '0.000024'?
Не понял. Как это работает?
а теперь нужно чтобы 2 вернуло как '2', a не как '2.000000'
спасибо, добавил еще '{:f}'.format(2.4e-5).rstrip('0').rstrip('.')
чтобы на других числах нормально было
https://pastebin.com/UuCkErtJ
Вылезает OSError: exception: access violation writing 0x0036F13C. ЧЯДНТ?
Забыл добавить, что user32.GetWindowRect работает как надо.
Лучше функции передавать сам список, а не его копию, потому что для создания копии требуется время и память и со списком больших размеров можно обосраться
Выше (>>58886), в общем, правильно написано.
Но, есть нюанс - опущена мотивация.
На самом деле, там написано:
Хотя вы можете предохранить содержимое списка [от нежелательного изменения], передавая в ваши функции его копию, но ...
Т.е. копировать это хорошо, это повышает безопасность, но, делать это бездумно не нужно, лучше не писать кривых функций, мутирующих данные без нужды.
Но, т.к. функции могут быть и не твоими, и обстоятельства бывают разными, то на этот случай есть вот такая конструкция - [:], которая позволяет скопировать список.
Выходит новая книга, называется Отсос Питона, предзаказ в личку.
Да, упустил это. Вообще в курсе мфти по алгоритмам на питоне про это часто говорят.
Мне 29, начинаю учить программирование с питона. Какие подводные кроме
> 29
> Учить питон
Я дурак, проблема вообще была не в этом. Герой, который получал урон, атаковал себя своим же оружием
Есть Один Метод и в нём три ветки условия, которые отличаются только одним названием словаря, название зависит от item_type. Можно это переписать в одну ветку, чтоб название словаря бралось из item_type.
Вот код: https://pastebin.com/Ptf9JEfx
Как во фласке/джанге параллелить вычисления/не блочить сервер? Я с потоками, мультипроцессингом сталкивался на уровне запустить потоки с именами, посмотреть че они творят, как расхуячивают общую переменную и т.д.
Не понимаю как этим пользоваться здесь: вьюха должна вернуть http. Если я внутри вьюхи кусок кода кину в отдельный поток, она вернет хуевый http без нужных данных. Если сюда добавить join, тогда все тупо заблочиться, пока все клиенты не будут готовы. Нужно как бы на каждого клиента запускать свою вьюху, но для этого нужен какой-то общий цикл, который чекает готова ли вьюха. Куда приделать этот цикл во фласке? Как я понимаю, с таким циклом и событиями я подхожу к принципу ассинхронных фреймворков? Вот с yield-ами я не дружу, воспринимаю их тупо как способ сгенерировать еба-лист. Вроде их используют в таких случаях?
Подскажи, где лучше всего тренироваться? Пишу в Sublime, но хотелось бы, чтобы сразу можно было запустить программу, не из командной строки. Попробовал PyCharm, но какая-то громоздкая программа, тормозит и грузится долго
Во, у меня такие же впечатления от PyCharm'a осталось. Слишком все громоздко. Пока пишу в саблайме, запускаю из консоли.
мимо нуб
Не знаю, это какое-то говно говна мамонта.
Судя по тому что есть командаутпат, то как-то можно. Гугли хоткейсы
Поставь пакет sublimeREPL, можешь даже бинд на него поставить
не забудь версию питона в нем сменить
Генераторы (yield).
Подробности - в интернетах.
Можешь загуглить "python twisted generators", например.
https://packagecontrol.io/installation я вот этот здоровый код вставляю в консолю, но ошибку выдаёт
Для обучения как раз нафиг не надо лезущие отовсюду окна с якобы подсказками, а на самом деле просто отвлекающий мусор. Когда учишься, нужно понимать что происходит, а не подсказки читать.
мимо с любовью вспоминаю студенчество с турбо паскалем 7.0
Алсо по твоей ссылке еще один способ есть:
>If for some reason the console installation instructions do not work for you (such as having a proxy on your network), perform the following steps to manually install Package Control:
Справа, под Manual
У меня винда 10
А руками найти директорию не сможешь?
Какие окна с подсказками? Какой мусор?
Ты вообще понимаешь, о чём речь, клоун?
> с турбо паскалем 7.0
Понятно.
Для написания хелловорлдов и решения задачек на алгортмы - да.
Для промышленного программирования - нет.
>Для промышленного программирования - нет.
>PyCharm
>Для промышленного программирования
>PyCharm
Оукей. Улыбаемся и машем.
Ставь sublimeREPL, потом в конфиге версию правь гугли. Запуск либо через бинд гугли, либо как на пикриле
Отклеилося
Для этого есть относительно лёгкий VS code
Эта хуйня нужна только для того чтоб запускать интерактивные программы, пока можешь пользоваться просто ctrl+B - результат будет выволиться ниже в сосноле
Есть варианты сделать все эти условные выражения компактнее?
Возможно, я не очень понятно выразился.
Я имел в виду, что "херня" в pycharm может быть "ненужной" для хелловорлдов, но не для промышленного программирования.
Так тебе и говорят что все эти подсказки ебаные только мешать будут если ты промышленным программированием занимаешься.
Хуя агрессивный какой. Таблетки забыл принять?
Code Runner, Python
> Написать две строчки конфига
> Ух, сложна, блять!! Никогда такого нее было!!
Зумерок не палиться...
Прыщавый сгорел, спешите видеть.
Старый говоришь? Сублиме прекрасно идет на пикриле, например.
> в коде есть input()
Так удоли его оттуда. Зачем он тебе? Данные вводить во время обучения? Лучше записать их в файл или в список и читать оттуда, а не набирать одно и то же в *цатый раз, снова и снова узнавая, что у тебя баг в коде. Можно даже сделать простейшую реализацию для input(), которая будет прозрачно читать из файла или списка. Вот серьезно, не могу придумать ни одного юзкейса для input(). Интерактивный блокирующий ввод в скриптовом языке абсолютно без задач.
Так обучение подразумевает, что у тебя скрипт падать будет, что у тебя будут баги, что ты будешь его запускать стопицот раз. Какой смысл писать:
x = input('first number: '))
y = input('second number: '))
print(z)
z = x * y
и нихуя не понимать, почему оно не работает, если можно положить числа сразу в переменные, без инпутов? Что от этого изменится кроме того, что станет удобнее?
Это моя ошибка. Нужно было указать, что в каждом if-е у меня по функции, плавно двигающей курсор в нужном направлении в соответствии с положением old и new относительно друг друга, и простым присваиванием здесь не обойтись.
>и нихуя не понимать, почему оно не работает
В этом то и вся писечка же - думой, почему оно не работает.
А изменится то, что это будет интерактивной, и не такой очевидной хуйней как удобненькая переменная в твоем коде.
[Running] python -u "d:\Python\helloworld.py"
File "d:\Python\helloworld.py", line 1
x = input('first number: '))
^
SyntaxError: invalid syntax
[Done] exited with code=1 in 0.142 seconds
Ошибка у тебя какая-то
Сынок, ты вообще видел все эти иде от джетбрейнс?
А программировать что-нибудь пробовал?
Не на турбо-паскале?
first number: 1
second number: 5
Traceback (most recent call last):
File "d:/Python/helloworld.py", line 3, in <module>
z = x * y
TypeError: can't multiply sequence by non-int of type 'str'
Всё равно ошибка
Не понял, а любые задачи в интернете, где входные данные промтом подаются?
Красава!
>Не работает, я так и сделал
Квадратные скобки сверху и снизу добавь
>Add bellow lines to the opened file between brackets:
[
{ "keys": ["ctrl+alt+b"], "command": "run_existing_window_command", "args":
{
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}}
]
>Нет
Да
import sys
print(sys.version)
Запускай в репле жеж
Гугли как поменять на третью, тыж программист, ну - гугл твой лучший друг
Я по этой инструкции делал. ТАм написано, что если показывает версию 3 как у меня, то все ок.
Я не качал другие версии
А, у тебя же шиндошс, сорян. Я хлебушек прост
А на чем писать? Я как новичок решил с него начать.
Какая-то анальная эта твоя аргументация в стиле "упрощённый синтаксис == плохой и ненужный язык". Нахуй тебя слушать вообще?
Без скобочек, двоеточечек циркумфлексиков, долларив, ковычечек некрасиво! потому что код не выглядит кодом!
Говнокнижка по питону, пикрил - единственначя полезная хуйня которая там есть
Необходим какой-то стек или просто наработанный опыт джуном? Если да, то сколько месяцев?
Единственное, что тебе нужно знать про tkinter - это то, что это ненужное, устаревшее говно. Бери PyQt5.
А по PyQt5 есть книги?
Мне нужно каким-то хуем управлять сраной разбивкой пакета на уровне протокола IP средствами питона.
Как это удобнее сделать?
Короч, котятки, супервопрос.
Мне нужно каким-то хуем управлять сраной разбивкой пакета на уровне протокола IP средствами питона.
Как это удобнее сделать?
Неужели в питоне нет метода для множественной замены символов? Допустим есть кортеж символов, которых надо удалить из строки
Привет двач, есть задача: нужно произвести поиск из списка знаков по строке. Например есть строка "abcd" и нужно проверить на вхождение каждый из символов этого списка в заданной строку, допустим "2chsosach".
Вот что я придумал
letter = "abcd"
name = '"2chsosach"
for i in name:
for j in letter:
if i == j:
print(i)
И оно работает, но сдается мне есть решение поэлегантней
Ещё компилятор начал тупить,
на код
for ch in letter
if letter in name
print(name)
выдаёт ch - не определенно, а спустя некоторое время, этот же код закомпилился
- строка letter содержит разные символы?
- нужно только принт делать?
- на какую сложность рассчитываешь?
Это копия, сохраненная 26 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.