Это копия, сохраненная 24 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Python 2 или Python 3: 2.4
в ответ консоль меня нахуй шлет
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
что происходит? куда потерялся джанго_кор_менеджмент?
Онли лхмл и суп. Граб - говно, с каждой версией они блядь меняют всё, что хуй проссыш, документация вперемешку ко старым и новым версиям, поддержку блядь не могут нормальную сделать, угадывай сам блядь, макаки ебаные, васяны сука подзалупинские.
Пишешь классу декоратор, который проходится по всем методам и применяет декоратор им.
1) А как принимающей стороне избавиться от этих байтов? (напишите пожалуйста что писать в функцию unpack)
2) При этом как узнать вдруг этот байт (0х08) является частью сообщения?
3) Можно сделать тоже самое только заполнять нулями? Напишите пожалуйста функцию pack, чтоб нулями заполняла.
нужно было изначально java учить, питон это язык джаст фор фан.
Да лол, хотел автоматизировать ПРОСМОТР WEBM
>>693108
>>693147
Спасибо за пояснения!
>>693109
Отлично! Это именно то, что нужно. Большое спасибо!
Только теперь столкнулся с проблемой отсутствия модуля gi. Сижу на семёрке, с анакондой.
Пытаюсь поставить как gi так и эту хуягу https://anaconda.org/KristanArmstrong/pygobject, но ничего не выходит. Pygobject конфликтует с уже якобы установленным pygobject, но он не установлен (пытаюсь получить по нему информацию, но конда не находит такого модуля).
Никто с подобным не сталкивался?
lxml - тру
beautyful soup - не настолько тру (медленнее, на невалидном хтмл может сломать)
grab - вообще поделка какая-то
Сообщение должно быть кратным 8 байтам. Поэтому, если,например, у нас 65 байт сообщения, следующий "крат" - 72. Длина паддинга - 7. Поэтому паддинг будет 7,7,7,7,7,7,7.
На принимающей стороне, после расшифровки, смотрим на последний байт сообщения. Он равен 7. Откусываем 7 байт, получаем только полезное сообщение.
Чтобы эта схема работала без исключений, в случае, если длина сообщения уже кратна 8, добавляем паддинг в виде 8 байт 8,8,8,8,8,8,8,8.
1) ты должен уже понять
2) последний байт всегда является частью паддинга
3) надо по-любому как-то знать, сколько байт в паддинге. В крайнем случае, можно в одном байте (или в 3х битах точнее) указать длину паддинга, остальное забить нулями
на coursera курсы по крипте пройди
>beautyful soup - не настолько тру (медленнее, на невалидном хтмл может сломать)
Суп использует любой из доступных парсеров: lxml, html5lib, etree. Так что не пизди.
Проблема с логгированием и pybrain.
В общем, есть примитивный код: http://pastebin.com/wcEhadUm
И, собственно, какого чёрта импорт pybrain'а влиет не только на существующие, но и вообще на все новые логгеры? Как так-то, блин?!
Там в нём есть напрямую вызовы logging.warn(...), которые, вроде как, и есть проблемные места (в рут логгер, что ли, добавляется дефолтный хендлер, который вызывается всегда, так как является "родителем" всех логгеров полученных через менеджер). Но что это за бред-то, блин? Единственный способ получить чистый, личный логгер - это напрямую l = logging.Logger('mojo'), но тогда он в менеджер не запишется и я из другого модуля не смогу его через getLogger получить никак (создастся новый).
Что я не так делаю-то, как мне быть? Хочу логгер через getLogger, но без "чужого" мусора в нём.
Собственно, вот это можно запустить для иллюстрации проблемы (на идеоне не работает logging) — http://ideone.com/8p6md2
Пока что решил добавлением
>logging.root.handlers = []
после импортов pybrain'а, но это какая-то хуйня, а не решение же.
Не так давно общался в /b/ с земелей Миасс, тот съебал в Ёбург быдлокодить бэкэнд на пистоне. Говорит вакансий для питоностов масса.
Вариант "записать верхнее окно -> активировать нужное -> скриншот экрана -> активировать сохранённое в первом шаге окно", конечно, будет работать, но как-то это не красивенько.
import -window id screen.png
id можно узнать через xwininfo
Однако успех при натравливании на свернутое окно зависит от WM. Про мак хуй знает. Еще man wmctl посмотреть можешь.
А без записи в файл возможно?
>import -window id screen.png
Что-то понять не могу, что этот код вообще должен делать? Откуда дефис? По-моему, тут что-то всё удалилось перед отправкой.
Есть числовая матрица 2 на 100. Считал ее из Excel в dframe.
Как посчитать разницу между каждым 5 элементом (5-1, 10-5, 15-10) и вывести ее в новый столбец?
community/ с оф документации не надо кидать
https://habrahabr.ru/hub/django/
https://www.reddit.com/r/django/
А что ещё? Да хуй знает. Остальное всё разрозненное.
Гугли django tutorial + кейворд и ройся в них
Я не ищу решение какой то проблемы, я говорю о блогах в общем, с интересными решениями каких то вопросов
Туда-сюда такое проскакивает во всяких питон-рассылках:
http://www.pythonweekly.com
http://importpython.com
Сибиряки тоже норм https://pythondigest.ru
спасибо
Каждый пятым элементом в одном столбце? 5-1 != 10- 5, если чо. И не очень понятно, как ты хочешь это вставлять дополнительным столбцом, ведь он будет в 5 раз короче меньше имеющихся.
Вот тебе пример с добавлением нулей в промежуточные клетки - http://ideone.com/jjVNVg (dframe это из pandas, что ли?)
А в вём проблема в том же экселе и посчитать? А то придёшь завтра с вопросом "как dframe в эксель записать", лол.
>>6939>>693990
Чтобы понятней было. Первый столбец время, второй температура, нужно изменение за каждые 5 минут получить.
Нужно я так понимаю цикл запустить и результат записать в новый столбец.
За пример спасибо, погляжу.
Смотря что подразумевать под вебом. Грабить дату с веба - тоже веб? Ну вообще фриланс в погромированнии - 90% веб. Так что как повезет.
Еще добавлю что для консольных джедаев есть смысл сгенерировать и добавить публичный ключ и подключаться по ssh с авторизацией по этому ключу.
Так пуш-пулл значительно проще автоматизируется.
Ну хз, может он старовер какой.
import — это баш? Что-то ты меня запутать хочешь, по-моему.
>$ import
>The program 'import' can be found in the following packages:
> imagemagick
> graphicsmagick-imagemagick-compat
>Try: sudo apt-get install <selected package>
Есть серьёзный вопрос, змейки. Может ли питон отлично работать с файлами? И вообще что для этого лучше подойдет?
О, отлично. Спасибо.
Ржавеет, как всегда.
Как так, почему нампи в полтора раза медленнее?
Под nix на nix, но встречаются упертые ньюфаги-неосиляторы.
А ты считаешь, что есть выбор?
И я смешно шучу
Рисовать только маркеры которые находятся в зоне видимости
Делать более детальную прорисовку толкько при зуме.
и.т.д
Я и так рисую только заданную область. Предлагаешь аппроксимацию? Тогда зум будет еще тяжелее.
>Поставьте звезду, а я на ваш проект поставлю
Это такое тонкое предложение сдеанониться? Иди своей дорогой.
>Я систему автодеплоя сделал.
#!/bin/sh и scp?
Ты тут всех знаешь?
>SSH connection
Ну тащемта я угадал.
Поправь свой ужасный ангельский в README.md и вбрасывай на реддит в /r/linux, /r/opensource, /r/python. 30-50 лойсов получишь.
в Екб полторы вакансии для питонистов
Бамп вопросу.
~52% всё же на винде
Вот вы чё кодите? Не по работе, там ясно что джанго какое-нибудь, а вот вообще, для души там или типа того?
Игру делать - это не круды с парсерами лепить, тут парой недель не отделаешься. Если это не клон Марио конечно, но это не интересно.
Ну, если учесть, что кол-во польхователей СНГ ничтожно мало по сравнению с Европой и США, и отсутствие дикого оверпрайса на маки там, то логично, что их так много. Да и в любом случае винды в сумме гораздо больше, так что кол-во пользователей мака в итоге ближе к кол-ву пользователей линукса.
Ебал я кодить дома помимо работы. И так жизни нет.
str(b'123')
Во втором: '123'
В третьем: "b'123'"
А, понял - надо encoding явно указывать.
>Грабить дату с веба - тоже веб?
Вот это уже норм.
То есть без джанги нехуй делать да во фрилансе?
Нейронные сети пиши.
Пиши имиджборду.
В книжечках все примеры и задания решать.
можешь ещё http://blog.programmersmotivation.com/2014/07/09/list-projects/ пошерстить, особенно рекомендую указанную там секцию на гитхабе
Перед этим попробовал вот этот гайд http://learnpythonthehardway.org/book/ex0.html
Делал всё как написано, кроме того, что третий питон вместо второго устанавливал. Просто не работает.
Уверен, что есть решение этой проблемы, даже в школе, когда на С писали было и то удобнее
Типо надо всегда там писать, а потом копировать код в основной файл и проверять?
или атомобарином
>2016
>передвигаться по коду СТРЕЛОЧКАМИ
>дергать руку до мышки каждые пять секунд
>не держать руки на homerow
Передашь от меня привет туннельному синдрому как до 35 доживешь, любитель мышек и стрелочек.
Вот и приехали. Все годные задачи платно.
Ну разок 20 баксов чего бы и не выделить, а за месяц ты 100% всю хуйню перерешать успеешь
Не знаю, хватит ли этого для начала. Вот по совету Анона решил вкатиться в Питон с изучения кодакадеми + Лутц параллельно, а тут такие дела. Стоят ли они $20 или это очередная наёбка? В последнее время очень скептически отношусь ко всем курсам.
Пилить и продавать.
>стоят ли они $20?
Нет. Этот курс можно за день пройти, я лично не вижу смысла тратить на него деньги. Задачки есть, например, на checkio, codewars и в любой книге для начинающих.
Де брать задачки для чуть-более-чем-начинающих?
Интерес не праздный, если честно. Застопорился, а до джуна один хуй не тяну.
Если тебе главное до джуна дотянуть чтобы найти работу то просто задрачивай нужный фреймворк и пили всякие круды(если ты в веб хочешь податься)
Мне главное что бы по фану было.
Фан от консолеговна, парсеров, всяких машин лёрнингов и пандасов я ловлю, а от джанги (которая для меня состоит из неочевидной "А ЕСЛИ ХОЧЕШЬ ЧТО БЫ ХУИТКА БЫЛА С МЕНЮ - ПРОСТО ДОПИШИ django.model.menu(huyar, ' ', hui)"
И даже работу пока не ищу, просто было бы неплохо в случае возникновения в ней необходимости быть готовым на что-то претендовать.
Бывают вообще питоновакансии вне вебдева?
Спасибо, братик.
>Бывают вообще питоновакансии вне вебдева?
Для невеб вакансий нужно подробно понимать, как и что работает. А тебе с таким подходом только в 1С.
Спасибо, братик.
Нахуя было это советовать в треде?
А теперь вопрос. Как сделать наименее велосипедно запись цвета в файл? Чтобы при прочтении он интерпретировался и этим цветом писался в интерфейсе?
Допустим, есть интерфейс на QT, в виджет лога которого дублируется все из переопределенной обретки stdout. В частности - красным выводятся ошибки, синим кое-какая инфа и тд.
Все это нужно дублировать в файл, чтобы информация сохранялась более, чем на 1 запуск.
Подозреваю в кутях должен быть какой-то класс уже содержащий текст и цвет где надо, а не просто выводящий. Прямо его и пиши. Или не прямо, а сконвертни в какой-нибудь жсон. Какая разница вообще в каком формате писать? Руками ты с ним работать не будешь. Я надеюсь.
Таки, может и буду. Я хочу убить еще одного зайца, и в случае наличия ошибок чтобы все это отсылалось на почту.
Сейчас еще пришла идея, что можно использовать html, и его же загружать прямо в виджет потом. Никакой разницы между тем, что отображается в виджете, и тем, что в файле будет.
Идея такова: django приложение на впсочке с маленьким-маленьким ssd делает к выделенному windows серверу запрос, получает ссылки на файлы и отдает их пользователям по запросу.
Напердолить nginx+tornado? но в обеих поддержка окон для галочки, может их в докер запихнуть? или есть какой-то получше/попроще вариант?
>файл программы, строки - в UTF - 8
>петон упорно пытается кодировать кириллицу черз ASCII при записи в файл
>используешь codecs.open вместо open
Ахах, петон 2.7 что ты делаешь, прекрати! У меня от этого ЯВНОЕ ЛУЧШЕ НЕЯВНОГО.
Сука, животное, блядь. Ну почему работа с юникодом такой адов пиздец?
-> /s/
поцаны, делаем oregon trail. нужно чтобы игра тебя постоянно спрашивала вопрос "Что ты хочешь сделать?" и после того как ты сделал действие-она спросит еще раз,но когда дело доходит до второго действия, программа игнорит то что я ввожу и читает это как первый ввод. Например, я выбрал 1 в начале, игра опять запрашивает номер, выбрал 2- она все равно читает это как один. Как пофиксить?
commands=input("\nYour options are: \n1)Travel \n2) Rest \n3)Hunt \n4)Status \n5) Help \n6)Quit")
while not GAMEOVER:
print (commands)
answer=input("What do you want to do?")
if commands == "1":
update_days(3,7)
if MILES_LEFT<=1:
print (oregon())
else:
print(travel())
elif commands == "2":
update_days (2,5)
print(resting())
все, пофиксил
Например, я хочу, чтобы если файла не существует - он создавался, но не пустой, а с некоторым наполнением.
Есть ли другие способы, кроме try и перехвата исключения?
Если да, то при компиляции компилятор выдаст ошибку, при передаче переменной другого типа?
Вот в 3.3 есть режим 'х', малаца хорошо сделоли.
Ну проверь, ёпте.
exists = os.path.isfile(filename)
with open(filename, 'w+') as f:
if not exists: f.write(BASE_CONTENT)
Или ты надеялся на магический режим открытия файлов "open_for_writing_and_write_data_from_variable_CONTENT_if_file_got_created_with_this_call"?
Спасибо.
Купленная (на совсем, да) ультраднищенская впс на cloudatcost.com
Там иногда io тормозит и вообще качество не оче но зато оплачивать не надо. Взял три года назад за десять баксов, три года она простаивала и хостила мои бекапы, теперь вот пользу приносит.
Код в итоге тоже на серверных линуксах крутится. А кто там с чего контент поглощает - дело десятое.
>print -9 / 4
>3
python 3:
>print -9 / 4
>2.25
пришлось по нраву, что теперь сразу выдает float вместо int? это хорошо сыграло или похуй?
Не хорошо и не плохо. Это правильно и по дзену.
И сразу вопрос возник. Вообще это все можно решить в одну строчку, но мне безумно нравится расписывать как у меня, делать все наглядно, растягивать удовольствие, лол. Это нормально? Или в продакшене это будет непозволительно и надо ебашить коротко? Есть любители расписать как я?
От курсеры до продакшна еще успеешь комфортный себе и коллегам уровень детализации найти. Тем более это ж питон где все просто.
Или как создать обертку, которая будет писать и в питоновскую консоль, и куда-то еще?
Переопределять внутри обертки stdout на __stdout__?
Код мы за тебя выдумывать должны?
В дополнение -- нужно именно сам ивент, возможно как-то через PyWin32 (да, на винде, надо для работы). Есть идеи?
возможно что то типа:
arr = []
arr.append(SomeClass())
ref = arr[-1]
ref.Value = 'Value'
arr[-1].Value
>Value
2. Где он хранит дату первого запуска или как-то зацепку, которая дает отсчет этих 30 дней?
3. Кто-нибудь слушал wireshark (или чем-то подобным) его коммуникации с сервером? Он стучит на юзера своим хозяевам (как 90% софта в 2016)?
ржака, блин
>>696865
укажи сервер лицензий http://idea.lanyus.com/ и ебись он конём
параноики из /крипт/ уверены что да
На торрентах же лежит без ебли с лицензиями.
В питоне всё передаётся только ссылками. Просто есть иммутабельные объекты (строки, числа и т.д.), которые никак нельзя изменить.
a = "abc"
b = a
Что бы ты далее ни сделал с a — b так и останется равным "abc".
Эээ, что?
Они бесплатно лицензии раздают студентам. И вроде даже мелькало, что тем кто на степике зарегестрирован.
pyinstaller
10 секунд в гугле(загуглил исключительно потому что самому интересно стало):
https://code.google.com/archive/p/pytesser/
https://github.com/tmbdev/ocropy
Чё бля?
Что? Не понял.
Прикрутил еще cuneiform, вообще отлично стало. pyocr сразу обоих умеет.
project/app/helpers.py
Или я чего-то не понимаю, или теги с классами порой кривые - но не всегда удается точно выделить какой-то элемент, приходится брать с запасом и вырезать вручную лишнюю инфу.
>но не всегда удается точно выделить какой-то элемент
покажи как выделяешь, какие входные данные, что получаешь и что хочешь получить
и вообще, используй xpath
Не совсем понимаю философию и общий подход.
Есть модель с такими то полями. Я хочу переодически(автоматически) добавлять новые пользуясь информацией из текстового файла.
Вопрос как это оформляется? В самой модели в виде классового метода? Это пока единственное что я сам могу предположить.
И как сделать переодические дейсвия(ну, вот это самое обновление)? Это делается на уроне джанги или сервера?
> И как сделать переодические дейсвия
celery, читаешь файл а асинхронном таске -> ложишь данные в модель
beautifulsoup весьма удобен для навигации и выделения того, что тебе нужно. Там же и замена\заполнение\создание новых тегов есть, в удобном порядке.
Ну и да, вполне норма, почему нет? Самому менять шрифт, цвет, или вообще вырезать ненужные куски.
Ф5 :)
>>697308
Есть страница с таким куском: https://gist.github.com/anonymous/b6ea812e562a46f8fadc
Мне нужно выцепить TARGET_LINK и TAGRET_TEXT.
Использую суп:
element=soup.find_all("div","title")
element[0].get_text()
И оно захватывает кучу мусора. Иначе вообще ничего не находит.
В супе есть нормальный xpath? Раньше юзал селекторы на lxml, но то тоже для меня была магия.
Ну всё, покурил пару часов маны, теперь вроде разобрался. Суп таки понятнее, чем lxml.
в треде анон упоминал, что суп может использовать lxml
если хтмл такой как по ссылке, хпатх будет примерно таким
//div[@class="title"]//a[2] для выбора элемента ссылки,
//div[@class="title"]//a[2]/text() для теста
//div[@class="title"]//a[2]/@href для href
Я сделал вот так:
soup.findAll("a",{"data-ga-click":"text"})[0].get('href')
soup.findAll("a",{"data-ga-click":"text"})[0].text
По-моему, это более читабельно.
А что тут думать? Питон у умных дядек всегда в тренде был. Как у нас в шапке говорится - его используют даже в НАСА!
https://github.com/alexjc/neural-doodle - вот еще смотри какая годнота, порадуй своего енота шедевральным рисунком.
> для обработки входящих звуков и сравнения с уже записанными звуками в реальном времени
Плохой вариан для голосового управления, попробуй гугловскую speech api, на пистоне уже достаточно велосипедов.
Значит ищи offline аналог, их сейчас достаточно развелось, но есть велика вероятность соснуть с русским.
Для таких задач используются системы распознавания голоса, если и найдешь что-то для сравнения аудиозаписей то прокатит в лучшем случае для одного голоса.
Я так понял это всё будет хорошо работать на нейросетях. Вначале пользователь наговаривает (обучает нейросеть), а уже потом программа приходит в режим слушания и работает.
Помню пару лет назад пытался осилить. Использовал биндинг OpenCV для питона, детектил квадратики, кружки. Для нейросетей использовал ffnet. Может ещё какие либы/статьи по тематике посоветуешь?
Я ж его не до конца выучил. По-сути, повторял готовые примеры, из блога этого индуса http://opencvpython.blogspot.ru/
Ну научился линии на капче вырезать, пека-фейс детектить, не более.
На днях куалком выкатили процы с каким-то апи для оффлайн голосовой и пикчераспознавалки на основе моднявых нейронок. Что наверное значит, что на десктоп-процах это уже точно не должно тормозить.
asyncio
Ищет файлы с одинаковым хешем, и если находит такие - проверяет, не одинаковые ли они, после чего выносит все повторы, чтобы оставить только уникальные.
Интересует, что можно было сделать лучше/правильнее.
http://pastebin.com/T9meFC4r
Сложна.
может я не так выразился
> веб-паука
srapy, grab - это немного другой иструментарий. Это crawler - он только скачивает.
может я не так выразился
> веб-паука
Хочу полноценную поисковую машину - скачивание, хранение, обработка.
srapy, grab - это немного другой иструментарий. Это crawler - он только скачивает.
>5 лет в C++
>@
>Сортируешь графы графов
>@
>Моделируешь движение планет
>@
>Алгоритмизируешь эволюцию одноклеточных
>@
>Не написал ни одной прикладной программы
>@
>Полдня в баше
>@
>Автоматизировал все, что делаешь на компьютере
>@
>Баш за тебя двачует капчу, ищет порно и пишет С++ код
>@
>От нехуй делать сел изучать пхп
>@
>К вечеру написал свой Фэйсбук
>@
>К утру стал миллионером и улетел в Лондон
спизжено из соседнего
buttonMenuSlide.connect("clicked", lambda w: self.menuSlideChange(boxButton,buttonMenuSlide)) выползает такая ошибка:
"free variable 'self' referenced before assignment in enclosing scope"
Вот проект: http:// rghost.ru/7YYbcKldP
Что я делаю не так? Работало до создания __init__.py в папках. Добавлял через sys.path.append()
https://github.com
https://github.com/gcampax/gtk-app-generator
https://glade.gnome.org/
http://pep8.ru/doc/pep8/ за chamelCase получаешь отдельную порцию урины
> кросплатформенный тулкит или gnu/linux тулкит
> Кроссплатформенность без ебли важна.
Ну хуй знает.
Я не просто так упомянул, что без ебли. Вдруг там ещё сотню криво портированных зависимостей неофициальным инсталлером пятилетней давности нужно тянуть.
А, не понял тебя сначала. Gtk тащемта кроссплатформенный и уже давно.
Скорее "кроссплатформенный", в gtk3 уже положили хуй на поддержку отличных от gnome3 окружений, а под остальные платформы баги вообще годами висят.
А по делу ничего не скажешь, андерскорышь?
*читал
Почему "только"?, пусть во всяких жабах хоть в жопы ебутся, но тащить этот срам в пистончик тянет на отдельный котел.
Ничем, тащемта. В любом проекте главное - правильно вбросить.
https://habrahabr.ru/company/geekbrains/blog/280169/
листать до параграфа Пробелы в Python
Охуительные у тебя аргументы. По пепу снейк_кейс - значит снейк_кейс, классы КамелКейс - значит классы КамелКейс. Какие паверщели, ты о чем, какая у них связь с питонами? Ой, все.
pep - это рекомендации, а не требования. Что хочу, то и высираю, никто мне не может запретить хоть капсом всё писать.
>>698502
Как что-то плохое.
Придерживаясь общего стиля тебе самому же потом легче будет в чужом коде ориентироваться. А людям - в твоем. Хотя о чем я с хабрабыдлом разговариваю.
>>698216
в scrapy, в отличие от async и прочего, уже есть обход сайта по ссылкам, экстракция данных и т.д.
тебе остается полученные данные куда-то в базу пихать с каким-нибудь elastic search (прототип на коленке) или специализиированным поиском (в перспективе)
Сегодня импортпитон'овской рассылкой прилетело:
https://gist.github.com/dannguyen/a0b69c84ebc00c54c94d
плюсую тессеракт, сам хотел вспоминить его название, но забыл.
Спасибо, за ответ конечно, но я скрапи уже пользовался и он мне не понравился.
Спасибо за еще один вариант. Попробую.
У меня сейчас cuneiform + tesseract, но даже с ними из тысячи русскоязычных картинок 3-4 штуки распознаются ошибочно. Finereader на них тоже фейлится. Видимо русский язык НЕ НУЖОН.
А преобработку не пробовал делать? Увеличить размер, какие нибудь фильтры наложить? Может они у тебя пережатые нахуй?
> Try Google Cloud Platform for free
> Credit Card number is invalid
> Authorization failed: Invalid credit card details
> We use your billing information to verify that you're a real person
За триал на тысячу юзов. Ох уж этот гуголь
appengine скатился, да.
значит я тебя не правильно понял, я думал быстрый - время на развертку приложения.
Бамп
лень скачивать.
try:
except:
else:
finnaly:
норм
test = {frozenset([a,a1]) for a in b for a1 in b}
Почему в test попадают не только комбинации frozenset({'2', '3'}), но и элементы поодиночке, т.е. frozenset({'2'})?
Как сделать свой рекурсивный словарь?
Ну то есть такую штуку:
>>d = RecursiveDict()
>>d['key1'] = 'val1'
>>d['key2']['key2a'] = 'val2'
>>print d # печатает {'key1': 'val1', 'key2': {'key2a': 'val2'}}
Как я понял, надо что-то делать в __getitem__, но что - я хз
notepad++ для начала будет достаточно.
Pycharm, он дефакто стандарт.
Понял, спасибо.
Atom или PyCharm.
Пробовал переопределять getitem, но при двух квадратных скобках оно не работает
вылетает ошибка
ай нид хелп, браза
http://pastebin.com/71SMk99K
это говнокод, за его работу я не ручаюсь. но думаю понятно в какую сторону копать
Питон - язык с открытым исходным кодом, ты можешь посмотреть исходный код любой функции, класса, базового типа и переопределить его. В документации есть ссылки на исходные коды.
Ключевые слова для поиска:
https://www.google.ru/search?q=python+переопределение+методов
https://www.google.ru/search?q=python+магические+методы
На сайте IBM например, есть хорошие статьи:
https://www.ibm.com/developerworks/ru/library/l-python-elegance-2/
https://www.ibm.com/developerworks/ru/library/l-python_part_6/
https://github.com/ahmetkotan/cpbitmapTopng/blob/master/bitmapTopng.py
Переделал его для упрощения в http://ideone.com/OLsIZM
В случае идеона - не могу загрузить и выгрузить пикчу (или могу?). В случае линукса - вот такая ошибка:
http://pastebin.com/G1PgwEMG
Как быть?
>dosya: Нет такого файла или каталога
import os
dosya = os.path.join(os.curdir, os.sep, 'LockBackground.cpbitmap')
Так он по умолчанию же
я вообще никогда не писал на питоне, но итак работает вроде. Только файл-то все равно на идеон не передать
Попробовал, хуй. Изначально там было
dosya = 'LockBackground.cpbitmap'
>>699434
Я вообще не знаю, что это, лол. Прочтите внимательно. Скрипт не работает на идеоне, потому что я туда, на идеон, не могу загрузить файл этот. И скачать результат, соответственно, тоже. А у меня на линуксе, видимо, нет никакого PIL, вот он ее и не загружает.
>А у меня на линуксе, видимо, нет никакого PIL, вот он ее и не загружает.
пиздос, с этого и надо было начинать
попробуй ввести в питоновской консоле import PIL
если пишет "ImportError: No module named PIL"
то загрузи его
>sudo apt-get install python-PIL
это сторонний модуль же
На линуксе он не понимает что ты от него хочешь. Запускай таким образом python script.py
Если ты про CHGK - то это на основе бота Red: https://github.com/anon276/testing/blob/master/Discord_[bot]CHGK/release/README.md
Хуй знает как там устроено - в asyncio не шарю, если шаришь можешь объяснить на пальцах как оно работает?
Какой еще внучаев, ты ебанутый?
Уже. Та же хуйня. А это не может быть из-за того, что аффтар для второго питона писал, например, или для третьего, но какой-нибудь древней версии?
Щас скачал, У меня на шинде работает.
Причем режим "RB" - обязателен, без него функция struct.unpack ругается.
>UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
>f.read()
Автор явно для 2 писал, у вас же в третьем все строки как уникод считаются, вот интерпритатор и ругается. Поставь 2 и попробуй запустить.
>sudo apt-get install python2.7
>python 2.7 test.py LockBackground.cpbitmap
>>699497
Да, у меня с 2.7 работает, с 3.4 - нет. Вот только итоговое изображение, увы, все сине-голубое. Можешь объяснить вкратце, как эти параметры анпака или фромстринга, или чего там еще, можно переделать, чтобы попробовать исправить?
Абсолютно необязательно. Я бы очень хотел исправить результат с синюшной поебени на его ожидаемый жёлтый.
>синюшной поебени
>ожидаемый жёлтый
что? пикрил - конвертированное изображение? Где ты тут синий и желтый увидел?
Ну, я не его пикчу тестирую, а сразу свою. Ее итоговые основные цвета - желтый, черный и коричневый. А у меня получается голубой, синий и черный. Я всю эту хуйню затеял только из-за необходимости восстановить пикчу.
Значит она была закодирована не тем методом, каким ты пытваешься раскодировать. (не RGBA). Попробуй второе 'RGBA' заменить на любой другой метод из представленных здесь:
http://effbot.org/imagingbook/decoder.htm
второй из двух.
А ты не пробовал сделать так?
from PIL import Image
Image.open(inputfile).save(outfile, 'png')
Cannot identify image file
Вкатываюсь в Питон. Решил начать с кодакадеми + книжка (?).
Какую книгу взять, как связку с кодакадеми и куда двигаться дальше?
Алсо, там сейчас урезанный курс с возможностью апгрейда. Стоит ли покупать?
А что тогда? Пробовал читать Think Python - обосрался на первых же упражнениях по рисованию цветков. Пробовал Доусона - хорошо пошло, но в треде сказали, что хуйня. Пробовал Лутца - скучно. Укус питона без упражнений после глав, а для меня это важно.
Ну так продолжай дрочить на доусона, если нормальные книги для тебя слишком скучные.
emacs
Послушал тебя и больше слушать не стал, пошел учить бейсик.
Бамп вопросу
Где?
разобрался, оказывается нельзя было таблицу "index" называть.
> для того, чтобы получить ОСТАТОК от деления мы можем воспользоваться операцией ПРОЦЕНТ
Анон, который советовал, ты серьёзно? Это говно вообще кто-то смотрит?
Может, соберем команду как с Webm-сайтом?
http://pastebin.com/vp6VHpsn
Можно ли сделась по-красивее, более pythonic?
Там дел на двадцать минут. Можно прямо на баше.
А ты уверен, что у тебя та же версия bitmap'а? Может у тебя и альфа-канала нет, или битность другая. Распарси хедер и посмотри, что там написано.
А ещё скинь свою пикчу, чтобы и мы потестить могли.
Взять, к примеру, покер. Есть круглый стол с игроками. Есть дилер, следующий от него игрок должен поставить малый блайнд, второй — большой, а третий будет ходить. Но игроков может быть не четыре, дилером может быть последний игрок в списке, они могу постоянно повышать, поэтому нужно много раз по кругу проходить на одном и том же ходу.
С остатком от деления на длину списка получается вот такая херня — http://pastebin.com/3u4StifY , что не очень красиво. Или вариантов нет?
Как вариант, конечно, засабклассить список/тупл и делать всё это внутри __getitem__'а, чтобы код чуть короче был, но суть та же останется.
Он по индексам уже не даст обращаться ведь. Да и в функции play_round тоже особо не пригодится, так как не понятно, как следить за тем, что каждый хотя бы раз сыграл.
Нормально ващет.
Почому не используешь циклический список и итераторы?
Осторожно, батхерт!
Но нееееет лучше поебаться с инкрементированием индексов. И после такого, кто еще будет кукарекать что СТРУКТУРЫ ДАННЫХ НИНУЖНЫ АЛОГАРИТМЫ ТОЖЕ ВИДЬ ВСЕ УЖЕ РЕАЛИЗВАВНА ДЛЯ НАС ЛУЧШЕ УЧИТЬ ФРЕЙМВОРКИ
Заебись, пришёл за советом, как лучше, а меня обосрали, что я не делаю это самое "лучше". Да ещё и сам не знает, как же это в питоне сделать. Уёбывал-ка ты в свой тред плюсов.
> циклический список
Я знаю как его сделать, вопрос в том, что я незнаю есть ли он в стандартной библиотеке.
>Уёбывал-ка ты в свой тред плюсов.
Nyet. Мне тут хорошо.
А теперь пиздуй читать структуры данных, быдло!
Ну вот допустим, прочитал я это - http://prog-cpp.ru/data-ocs/
Это что же, мне вместо примитивного
>player[i % len(players)]
ебошить сначала собственый класс циклического списка, заполнять его, прописывая в каждый элемент указатель на следующий, так ещё потом и
>player = players[dealer]
>while True:
>....player.make_turn()
>....player = players.next() # тут типа следующий элемент выдаётся
делать?
В чём его преимущества на таких мелких задачах? А то получается хотя и якобы "правильно", но уж чересчур громоздко, а я на магическую функцию какую-нибудь расчитывал.
>циклический список
collections.deque?
Ниче не даст. Лишние расходы на абстракцию.
Рубрика вредные советы
Вам шашечки или ехать?
Есть нормальный, поддерживаемый, и самое главное логичный метод - кольцевой список.
Есть метод с хаком, неочевидный (через месяц попробуй понять что ты написал), ВОЗМОЖНО быстрый, преждевременно оптимизированный метод - ебля с индексами.
Выбирай сам. Я бы список выбрал. Обернул пердолинг с указателями в класс циклического списка, и юзаешь через общепринятый интерфейс.
Ну так запилите в шапку/вики. Как вообще можно что-то понять, если либо пишут без объяснений, либо "я попробовал то и это, мне больше понравилось что-то ещё, а ты используй что нравится тебе"
Но мне же тогда придётся ебаться с тем, как определить, когда я его целиком обошёл, ведь начальная точка всегда разная, а значит перед началом прохода придётся сохранять эту точку для сравнения. Ну а точка эта будет... индексом.
Ради упражнения может и сделаю этот список, конечно, но что-то у меня сомнения, что мне под него придётся переделывать много кода вокруг.
Возможно, но двусторонняя очередь это не кольцевой список. Кольцевой список просто идет по кругу. Голова - ... - жопа - голова - ... - жопа
А тут ты будешь ебаться с rotate.
Другого ответа и быть не может. Это тебе не Tkinter сравнивать с чем угодно, где ответ очевиден.
Добавляешь служебный элемент списка тогда. У него нет логики, он по сути невидим. Просто как маркер обхода.
наверное, лучше сделать так, по крайней мере ОПЕРАТОР ПРОЦЕНТ не надо каждый раз указывать
Помогите разобраться с регулярным выражением.
Есть текст типа:
1. Основной заголовок
1 – Первый пункт
2 – Второй пункт
3 – Третий пункт
он считывается по строкам. Нужно брать строки с пунктами. Выражение для этого:
\d{1,2}\s+(–){1}.
На http://pythex.org оно работает нормально, выделяет все три пункта, но в программе
import re
text1=["1. Heading", "1 – Punkt1", "2 – Punkt2", "3 – Punkt3"]
print type(text1)
text="""
1. Heading
1 – Punkt1
2 – Punkt2
3 – Punkt3
"""
tochka=re.compile ("\d{1,2}\..$")
defis=re.compile("\d{1,2}\s(–){1}.$")
for p in text1:
result=defis.findall(p)
if (result):
for p in result: print p
result=tochka.findall(p)
if (result):
for p in result: print p
после обработки каждой строки с дефисом выдаётся только дефис, хотя строка с точкой распознаётся нормально. Почему ?
1. Heading
–
–
–
Что значат на Pythex в правок окне Match captures эти дефисы
:
Match 1
1.-
Match 2
1.-
Match 3
1.-
Ссылка на Pythex
http://pythex.org/?regex=\d{1,2}\s(-){1}.&test_string=1.%20Heading%0A2.%20Heading%0A1%20-%20Punkt1%0A2%20-%20Punkt2%0A3%20-%20Punkt3&ignorecase=0&multiline=0&dotall=0&verbose=1
Помогите разобраться с регулярным выражением.
Есть текст типа:
1. Основной заголовок
1 – Первый пункт
2 – Второй пункт
3 – Третий пункт
он считывается по строкам. Нужно брать строки с пунктами. Выражение для этого:
\d{1,2}\s+(–){1}.
На http://pythex.org оно работает нормально, выделяет все три пункта, но в программе
import re
text1=["1. Heading", "1 – Punkt1", "2 – Punkt2", "3 – Punkt3"]
print type(text1)
text="""
1. Heading
1 – Punkt1
2 – Punkt2
3 – Punkt3
"""
tochka=re.compile ("\d{1,2}\..$")
defis=re.compile("\d{1,2}\s(–){1}.$")
for p in text1:
result=defis.findall(p)
if (result):
for p in result: print p
result=tochka.findall(p)
if (result):
for p in result: print p
после обработки каждой строки с дефисом выдаётся только дефис, хотя строка с точкой распознаётся нормально. Почему ?
1. Heading
–
–
–
Что значат на Pythex в правок окне Match captures эти дефисы
:
Match 1
1.-
Match 2
1.-
Match 3
1.-
Ссылка на Pythex
http://pythex.org/?regex=\d{1,2}\s(-){1}.&test_string=1.%20Heading%0A2.%20Heading%0A1%20-%20Punkt1%0A2%20-%20Punkt2%0A3%20-%20Punkt3&ignorecase=0&multiline=0&dotall=0&verbose=1
Ну и похуй вообще. Да и то это только по дефолту так, темки уже давным давно прикручивать можно.
Пилю браузерную карточную игру, общение сервера с клиентом через сокеты. Вопрос такой: между действиями игроков нужно вставлять небольшие задержки, чтобы на клиенте успела проиграться анимация и у игроков было время на оценку ситуации. Сейчас реализовал примерно так (сервер асинхронный есличо):
for action in game.act():
sleep(1)
socket.broadcast(action)
Это код контроллера, game.act() - метод модели, который йилдит игровую ситуацию (за один ход игрока она может обновиться несколько раз)
Есть подозрение что я хуй и что-то делаю не так, расскажите мне за это.
Возможно, задержку стоит вставлять на клиенте а не на сервере? Но тогда возникает проблема с тем, что на каждый ход игрока выделено ограниченное время, и это время будет считаться некорректно если клиент будет хакнут.
Кто-нибудь тут писал собственный парсер json файлов?
В json проблем нет, а с json в пайтон-объект - сложновато
он же крашится
>после обработки каждой строки с дефисом выдаётся только дефис
Убери круглые скобки вокруг дефиса.
Спасибо, получилось. Т.е. он его считал как отдельную группу и выдавал только эти группы в результате ?
Ты мне все равно не поверишь. Да и зачем спрашивать тут? Просто посмотри вакансии - поймешь среднюю температуру по больнице.
Ты всё правильно понял.
Бамп, поможите, аноны!
Какой смысл не врать?
Вопросы:
1. считается ли подобное сайтом(любым) как что-то плохое?
2. и если да то могут ли мне запретить доступ к нему, как какому нибудь боту?
ps. я новый в этом деле. не смейтесь надо мной слишком сильно
я, 170к
Лашпед, выкачай оффлайн-вики и ебись.
Не знаю как с Википедией, но обычно небольшие ограничения есть. При частых запросах требуют вводить капчу при каждом запросе. Я бы сделал так: Слал запросы, а при блоке залезал под проксю и продолжал.
А какая писечка у твоей тяночки?
Оно становится оче логично после некоторой степени погружения. Другой вопрос что само "погружение" хуй проработано нормально - это да. В любом случае магии как таковой (ror'овской, например) в питоне нету.
На фрилансе вообще тяжело работу найти по тому, что тебе интересно на самом деле. Зарабаывай бабки, прокачивая скил на том, что не интересно и пили то, что интересно в свободное время, прокачивая скилл. Так большинство делает.
Flask одобряю, но есть мнение что для командной разработки он не очень подходит, слишком гибкий, каждый разраб будет хуячить в своем стиле
class UserSerializer(serializers.HyperlinkedModelSerializer):
posts = serializers.HyperlinkedIdentityField('posts', lookup_field='username')
class Meta:
model = Symbol
fields = ('username', 'email')
Представление:
class UserView(viewsets.ModelViewSet):
queryset = Symbol.objects.all()
model = Symbol
serializer_class = UserSerializer
permission_classes = [permissions.AllowAny]
Потом добавляю в роутер реста:
router = routers.DefaultRouter()
router.register(r'users', UserView)
И роутер реста в обычный роутер:
url(r'^api/', include('rest_framework.urls', namespace='rest_framework'))
И что получается? Нихуя. При заходе на /api/users/ 404, зато предлагает два роутера, которых я не создавал.
>^api/ ^login/$ [name='login']
>^api/ ^logout/$ [name='logout']
Откуда это говно вылезло?
class UserSerializer(serializers.HyperlinkedModelSerializer):
posts = serializers.HyperlinkedIdentityField('posts', lookup_field='username')
class Meta:
model = Symbol
fields = ('username', 'email')
Представление:
class UserView(viewsets.ModelViewSet):
queryset = Symbol.objects.all()
model = Symbol
serializer_class = UserSerializer
permission_classes = [permissions.AllowAny]
Потом добавляю в роутер реста:
router = routers.DefaultRouter()
router.register(r'users', UserView)
И роутер реста в обычный роутер:
url(r'^api/', include('rest_framework.urls', namespace='rest_framework'))
И что получается? Нихуя. При заходе на /api/users/ 404, зато предлагает два роутера, которых я не создавал.
>^api/ ^login/$ [name='login']
>^api/ ^logout/$ [name='logout']
Откуда это говно вылезло?
Где там магия, бля?
Два чаю. Вкатываются какие-то школьники, осилившие 4 урока на codecademy и 4 главы Лутца. Думаете этого достаточно? Да хуй вам в жопы, неосиляторы. Пока не будете знать всю поднаготную дескрипторов, объектной модели и метаклассов, вам в любой библиотеке сложнее request всюду будет чудиться магия. Сука, горит с вас.
fix: requests
В installed apps добавляются джанговские приложения. Для pandas это не нужно. Просто импортируй модуль и используй.
Устроился без опыта, чуть больше полугода работал за среднюю_по_городу_минимально_достойную_зарплату. Недавно прошел аттестацию, подняли зарплату на 75%. Если через полгода не буду получать 250% от той самой минимально достойной, буду искать новое место и найду
прогроммист что ты делаешь в пр ты ведь не можеь тут дышать
На хабре была статья, там чувак пилил карточную игру на торнадо. Курил ее?
80k ДС2, 5 лет знаком с пифоном.
Есть один Линукс. Нужно написать скрипт, который будет писать определенную команду в командную строку и выполнять её (аки алиас).
Например, есть mpv плеер. Его нужно запускать с определенными параметрами по алиасу:
movie /path/to/file
А на самом деле выполняется mpv -ab /path/to/file -param >> /param &
Это можно сделать на питоне? Куда копать в таком случае?
Питон же тоже, по-моему, может посылать в командную строку значения. Интересно реализовать на питоне.
Ну ты напишешь на питоне скрипт, который будет выполнять написанную на баше команду... и зачем?
(a and b) (or) (not a) (and) (not b)
if ( dvach == (Ваш код здесь) ):
Спасибо.
Эта хуйня выдаст ошибку синтаксиса, операторы нельзя заключать в скобки. По приоритету: not наивысший, потом and, потом or, слева направо
В задании написано:
#Расставьте скобки в выражении
в соответствии с порядком вычисления выражения (приоритетом операций). Всего потребуется 5 пар скобок (внешние скобки входят в их число).
Обеими за, вкат в прогромирование с интерпретируемых языков будет начинать только даун, чем меньше даунов в комьюнити тем лучше.
Можно первым языком взять Pure C, который до задач уровня laba1.c прокачивается за неделю-другую, а потом дрочить интерпретируемые языки, тоже вариант для даунов? Или норм посаны презирают все языки где не надо писать Hui hui = new Hui?
pycharm ругает это:
values = tuple(0 for i in range(n))
если переменная цикла не используется, её принято именовать "_"
не помогло
values = (0,) * 100500
ошибся, помогло
> Можно первым языком взять Pure C
Да хоть нелюбимый школьниками паскаль, зато потом будет не "Hui hui = new Hui" а статическая типизация.
Я о том что выражения с хуями приобретет значение соответствующего словосочетания.
Схема тебе чем не угодила, а?
>>702321
Питон не годится для первого языка из-за не совсем логичных и очевидных скоупинга и приведения типов (типа 1 == True, all([1, 0, 2]), etc), а не из-за интерпретируемости или динамической типизации.
Я про то, что 0 == False. И bool(x) возвращает False для 0, None, [], () и даже {} и "". Нахуя?
Так повелось.
> bool(x) возвращает False для 0, None, [], () и даже {} и "". Нахуя?
Очень удобно писать что-то типа
x=[]
if not x: print("not empty")
Можешь делать явно сравнение типа
if 0 == "":
В отличие от языков со слабой типизаций будет работать как надо
А где 0 не False-то, кроме руби?
А остальное — вот так задумано языком. Если контейнер/итерабл пустой, то зачем он нужен? Считай и нет его, пусть false будет.
>men = [student for student in students if student.has_brain]
>if men:
>....print("There are several men in the class, namely: ", men)
Реально если бы хотел доебаться то вот http://www.b-list.org/weblog/2015/nov/15/real-python-wat/ более актуально, но актуально только для питон2
Остальное в большинстве своем высосано из пальца, как, например https://github.com/cosmologicon/pywat - если знаешь язык - почти всё это имеет смысл. В отличие от многих приколов в javascript
Извини, но твой пикрелейтед вообще не релейтед. bool в C99 определен как
# define _Bool signed char
#define false 0
#define true 1
Для C, как для кроссплатформенного ассемблера, это нормально, в питоне, где типы вообще не связаны с железом, такое поведение -- атавизм.
>>702824
>А где 0 не False-то, кроме руби?
Посмотри, как в схеме, например. Есть #t и #f, причем, в условиях, любое значение, кроме #f считается за #t, это логично и интуитивно.
>Если контейнер/итерабл пустой, то зачем он нужен? Считай и нет его, пусть false будет.
Пустой контейнер != отсутствие контейнера.
https://www.python.org/dev/peps/pep-0020/
>Explicit is better than implicit.
>There should be one-- and preferably only one --obvious way to do it.
У тебя может быть функция, которая, к примеру, парсит строку со списком значений, при этом она может вернуть и пустой список, либо None, если строка синтаксически невалидна. Чтобы она работала корректно, придется явно сравнивать с None, те же all/any использовать не получится, в результате, нихуя не удобно. Да, в питоне для обработки фейлов принято использовать эксепшены, скажешь ты, но оборачивать каждую функцию в try/except некрасиво и бьет по производительности (если "фейл" ожидаем и не является исключительным случаем, для которых, собственно, эксепшены и нужны), механизма рестартов тоже не завезли, first class continuations? Не, не слышали.
>>702826
>если бы хотел доебаться
Да какое доебаться, я как бы понимаю, что такое поведение оправдано для задач, для которых питон предназначен (утилитки там небольшие, скриптики, прототипирование), как первый язык он не подходит, слишком много подводных камней.
> в питоне, где типы вообще не связаны с железом
True и False появились точно так же в питоне как константы, они были int изначально, в те времена, когда в питоне и классов то не было. Кстати, иногда, эта особенность бывает полезна например можно делать sum(some_function_which_returns_true_or_false(z) for z in something)
> либо None, если строка синтаксически невалидна
Нихуя, она должна поднять исключение и поэтому твой пример высосан из пальца.
> слишком много подводных камней.
То о чем ты говоришь не подводные камни вообще. Вполне разумное поведение. В других языках камней не меньше.
Схема это прикольно, но это экзотика, даже MIT(единственные кто её использовал) перешли с неё на питон - deal with it.
> утилитки там небольшие, скриптики
На питоне пишится дохуя больших проектов.
Дальше прочитай, что написано.
>>702875
>sum(some_function_which_returns_true_or_false(z) for z in something)
sum(1 if somefunc(z) else 0 for z in something)
Чуть-чуть длиннее, зато понятнее.
>>702875
>они были int изначально, в те времена, когда в питоне и классов то не было
https://docs.python.org/2.3/whatsnew/section-bool.html
Лол, и правда ведь. Не знал.
>>702877
>Схема это прикольно, но это экзотика, даже MIT(единственные кто её использовал) перешли с неё на питон - deal with it.
Guile много где в GNUтом софте используется, как скриптовый язык, гимп, guix, например.
>На питоне пишится дохуя больших проектов.
И да, я не про популярность и распространенность, а про конкретные недоработки в дизайне языка, то, что большинство dealt with them и считает, что так надо, не превращает их в достоинства.
> про конкретные недоработки в дизайне языка
Я их не вижу. Некоторые вещи исторически сложились, всё-таки языку 25 лет.
Завтра ищешь в интернете книжку Dive into python...
Люди, которые в совке жили, тоже недостатков не видели. Некоторые и до сих пор ностальгируют.
>25 лет
А что, 25 лет назад люди не могли в логику и не отличали котлеты от мух? Схема почти в два раза старше, тем не менее, сделана правильно, насколько это возможно для динамики.
>Пустой контейнер != отсутствие контейнера.
Ну это я так своими словами выразился, т.е. с точки зрения использования. Если я хочу съесть яблоко, мне не так важно, просто у меня нет яблок. или стоит пустая коробка от яблок — яблоко я съесть не могу.
>при этом она может вернуть и пустой список, либо None, если строка синтаксически невалидна. Чтобы она работала корректно, придется явно сравнивать с None, те же all/any использовать не получится, в результате, нихуя не удобно.
Я правильно понимаю, что ты хочешь, чтобы в
l = parse_string(txt)
if l:
for e in l:
do_something_with_each_element()
И условие выполнить даже при отсутствии элементов в списке? Но ведь do_something_with_each_element() всё равно ни разу не вызовется, так и зачем было в эту ветку залезать? А вот all на пустых списках всегда выдают True, что, по-моему, может привести к нежелательным результатам. А any, наоборот, False. Что ещё хуже, ведь если all выдал True, то any никак не должен выдавать противоположное значение, ведь это считай подмножество.
>в питоне для обработки фейлов принято использовать эксепшены, скажешь ты
Не скажу. Никогда не нравилось это, и использую их только в тех случаях, где действительно что-то не так может пойти.
Возможно, конечно, что это именно поведение питона и привело к такому стилю написания кода/мышления, но мне это никогда не казалось чем-то неправильным, непривычным или неинтуитивным. Разве что путаться начинаю, когда на JS пишу.
Чем бы ты ни занимался, в любом случае потребуется GIT, юнит-тесты, базы данных. Не лишним будет понимание концепций ООП и ФП и умение их применять. Вдобавок можно почитать что-то о программировании в общем (Макконел, Брукс, Спольски).
>Если я хочу съесть яблоко, мне не так важно, просто у меня нет яблок. или стоит пустая коробка от яблок — яблоко я съесть не могу.
Если я хочу съесть яблоко, я загляну в коробку, если их нет -- пойду в магазин, если нет самой коробки, это уже другая ситуация, теперь мне в магазин идти не с чем.
>Я правильно понимаю
Нет.
[1, 2, 3]
[]
1 2 3
Первые две строки -- валидны, третья -- нет. Можно возвращать None для невалидной строки, тогда в условных выражениях вторая и третья будут приводиться к False, нужно делать явное сравнение (if x is None: ...). Можно еще возвращать два значения кортежом, список и True/False, но, спрашивается, нахуя тогда нужна динамическая типизация?
>А вот all на пустых списках всегда выдают True, что, по-моему, может привести к нежелательным результатам. А any, наоборот, False. Что ещё хуже, ведь если all выдал True, то any никак не должен выдавать противоположное значение, ведь это считай подмножество.
https://en.wikipedia.org/wiki/Empty_set
>For every element of \emptyset the property holds (vacuous truth);
>There is no element of \emptyset for which the property holds.
>Первые две строки
>третья -- нет
В первый двух строках у тебя список, а в третьей - циферки через пробел. Это что, входные или выходные данные? Опиши по-нормальному, что происходить-то должно.
Про any/all уже и так почитал.
>если их нет -- пойду в магазин, если нет самой коробки, это уже другая ситуация, теперь мне в магазин идти не с чем.
Мне тоже дедушка с бабушкой постоянно говорили со своим пакетом идти, но я избалован каждый раз новый покупать.
Какие тулзы есть для проверки кода?
А, кажется, понял.
func('[1,2,3]') # -> [1,2,3]
func('[]') # -> []
func('1 2 3') # -> None
А в чём проблема со сравнением с None или if type == list?
Это как ж и с поиском индекса элемента. Нулевой индекс валиден, хотя почти везде Схема это явно не то, что большинство знает/учило/использует 0 это False, поэтому мучаются с проверками > -1.
Короче, ситуаций, где [] == False удобнее, по-моему, больше, чем где нет. Считаешь ли ты иначе?
>>702970-кун
linter-flake8
Поясните за PyQt. Это же тупо лепилка интерфеса? Т.е. в нем я набрасываю все кнопочки, потом открываю свой .py в блокнотике и там все прописываю?
И поясните за питон в целом, в частности за 1 вещь: можно ли сделать "экзешник" или питон работает только как сервер? Ну вы понели ну или не понели.
> Это же тупо лепилка интерфеса?
Нет, это пистоновская обвязка к графическому тулкиту не знаю как сейчас, но раньше была ещё й урезаная по фунционалу, лепилка интерфейса есть в qtcreator, но он только для крестов енджой ер гавнокуте.
> можно ли сделать "экзешник"
Можно.
хах, заработал бакс на том что пиздил конкурсы с других сайтов скриптом
>Нет, это пистоновская обвязка к графическому тулкиту
Не пони
>Можно.
Можешь вкратце описать процесс?
>Можешь вкратце описать процесс?
Это будет не полноценный экзешник, а просто упакованный твой код + интерпретатор, гугли например py2exe, в гугле же найдешь и другие способы. Есть так же экспериментальные трансляторы питоно-кода в плюсовый, но с кучей ограничений, гуглить Nuitka
дефолтное поведение же - у тебя в settings.py указан либо django.template.loaders.app_directories.Loader в списке TEMPLATE_LOADERS (в старых версиях фреймворка) либо установлен флаг APP_DIRS = True в структуре с названием TEMPLATES (в последних версиях). Оба этих действия приводят к тому, что в ходе рендеринга шаблона django производит поиск в дирикториях с приложениями (app) в поддиректориях с названием templates и только после в директориях, указанных в TEMPLATE_DIRS. Давно не колупал новую джангу, поправьте, если что то упустил.
def on_mouse_move(x,y):
if button.left_x < x < button.right_x and button.bottom_y < y < button.top_y:
button.highlight()
Или есть какие-то другие способы? В pyglet'е, вроде, только так все и пишут, но во всяких кутях и т.д., там внутри то же самое происходит? Не считая каких-либо возможных оптимизаций с проходом лишь по ближайшей группе кнопок, а не всем сразу.
Поток наверное.
Хз как в tkinter, в pygtk можно дергать в этом цикле просто gtk.main_iteration() и тогда всё ок будет.
А этот обрубок консоли вообще в цвета умеет? Если умеет - значит можно, гугл в помощь.
Умеет, есть winapi-функция для изменения цвета. Самого тошнит от этой недооси, но возникла необходимость написать скрипт.
Вроде нет.
> Какой оптимальный подход к изучению джанги
tutorial почитай на оф сайте и есть хорошая книжка 2 scoops of django.
> Что следует знать помимо
http, основы html/css/js/jquery/и т.п., иметь представление о wsgi, настройке вебсервера и всякого деплоя, mq/celery, redis и подобное, ну git ес-но. Возможно REST и всякие django rest framework.
торнадо знать не обязательно, тем более сейчас более в моде больше aiohttp/asyncio.
Вообще дохуя всего надо знать, стек технологий большой, но ничего прям такого уж сложного нет, просто много всего.
Фуллстак востребованней.
Всё равно основы какие-то знать надо.
Трансляторы нинужны, если мне код на ++ понадобится, то я на нём сразу и напишу.
colorama
Так пиши сразу машинный код (байткод питоновской вм), хуле ты.
Я в очередной раз сажусь учить питон по заброшенной книжке Доусона. Забросил из-за лени. Это уже третий раз такое и третий раз я начинаю всё сначала, хотя, всё понимаю, что там рассказывается, но опять всё гоняю по кругу.
Я написал просто так, чтобы выговориться. Меня здесь не закидают ссаными тряпками, если я буду с идиотскими вопросами обращаться, если вдруг что-то будет непонятно в нубских упражнениях по книге?
Доусон - такое себе, если тебе игровой формат нравится, как тем детям-даунам например
Имхо кодекадеми + чтение Лутца по изучаемым в данный момент времени на кодекадеми темам - пока лучшее комбо для самого старта
TypeError: emit() takes no keyword arguments
Дублировать там значения аргументов, которые по-умолчанию стоят и не требуют переопределения - лишняя работа. + последовательность из True, False, False, 5 и тд выглядит пиздецово и нечитабельно, в отличии от count=5.
На ум приходит только переопределение класса сигнала, или оборачивание слота в обертку, которая будет распаковывать кортеж с именованными аргументами уровня (count=5,) и передавать слоту.
Передавай словарь, ёпту.
Это копия, сохраненная 24 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.