Это копия, сохраненная 26 сентября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый: >>525512 (OP)
Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/
А вот и некрофил объявился.
Ретрограды из прошлого треда так и не смогли ответить что собираются делать после 2020 со своим вторым говном.
Только мычали что-то невразумительное.
К 2020 появится четвертый - такой же как второй, только лучше. А что будут делать люди с третьим решать уже им потому, что вливаться в четвертый смогут только второпитоногоспода.
Маняфантазии пошли. Гвидо только на последнем пайконе отвечал что выпуска версии с обратной совместимостью к 2.7 Н-Е Б-У-Д-Е-Т.
А что они должны делать? Ты так говоришь, будто первого января 2020го все интерпретаторы второго пистона перестанут работать.
ЛЕГАСИ
Е
Г
А
С
И
Братишка, если технология в айти перестает развиваться - она начинает умирать. Будет тебе второй перл.
Ребята привет! Я тут начал читать за питон, и не могу въехать в задание подключиться к базе данных. Есть в наличие собственно python, postgresql. И ещё я понимаю что нужно юзать драйвер для подключения. А что мне со всем этим делать, в инете ничего понятного найти не удалось, хочу спросить у вас тут
Ну бля, как можно задавать такие вопросы? первые ссылки в гугле - python postgresql
https://wiki.postgresql.org/wiki/Python
Выбираешь драйвер, например как написано самый популярный Psycopg2
Идешь на офсайт, там все расписано.
установка pip install psycopg2
пример http://initd.org/psycopg/docs/usage.html
print u"Это текст"
print "Это текст".decode('utf-8')
Системную кодировку можно узнать через sys.stdout.encoding
Не. Проблема в интерактиве:
Python 2.7.9 (default, Jun 16 2015, 20:34:36)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u'лол'
u'\u043b\u043e\u043b'
Да похуй, по картинке понятно.
pyglet самый шустрый из всех что я тыкал
>Неужели придется менять язык для разработки высоконагруженных игр
У меня для тебя плохие новости.
Такие, что графонистей какого-нибудь раймана или braid ты на скриптоте не напишешь.
>Python developer
>500$
>Опыт, навыки, технологии: 1,5 года опыта
>куча фронтендопараши
до слёз
Сам задавался этим вопросом и моё исследование показало:
pygame - самое годное, хоть и медленное. Если руки не совсем крюки, то можно оптимизировать небо и аллаха за счёт грязных спрайтов в большинстве ситуаций, реальные проблемы только когда плавную прокрутку в фулХД запилить требуется. Твой выбор если ты сам хочешь сделать свою игру на питоне.
pyglet - быстра как понос относительно пайгейма (за счёт ускорения железом), но не может быстро в сотни слоёв. С одной стороны за тебя уже запилили часть скелета игры, который может тебе и не подойти, а с другой тебе придётся ебаться с опнглом на низком уровне частенько. Твой выбор если тебе не нужны сотни слоёв, твоя игра вписывается в их шаблоны и тебе норм ещё и опнгл паралельно учить.
cocos2d - надстройка над пайглетом, за тебя запилили ещё большую часть игры. При этом там замыливают твои пиксели и я не смог найти как это отключить. Можно быстро сваять казуалку, но если твоя игра не вписывается в их шаблон то тебя ждут весёлые баги, типа чёрных полос на стыках тайлов, или ненужного мыльца из за координат спрайтов с плавающей точкой, найти решение которых будет затруднительно, тк поиск насмерть засран кокосом2д для гейфонов на всяких сишарпах.
>И что там с пигеймом, будет ли развитие?
А чего тебе в нём сейчас не хватает?
>>532559
>pyglet самый шустрый
Не всегда. Там сортировка по высоте только через группы, а если у меня карта в 100 тайлов по высоте и нужно, чтобы деревце с Y верхушкой кроны закрывало корень деревца Y-1 b и при этом это не между ними мог влезть персонаж, так чтобы он закрывал головой деревце выше его, а деревце ниже его закрывало его, то тогда нужно пилить 200 групп, что по скорости будет тормознутее пайгейма. Но если у тебя вся игра помещается в 5-10 слоёв, то он самый быстрый да.
Поставь виртуалку с линуксом, половина пакето-проблем уйдет.
Алсо, учитывай, что через то время, что ты запилишь игру производительность процессоров скакнёт и пайгейм станет в 2-4 раза быстрее за счёт этого на десктопах.
Питоновский кокос разве еще живой? По их сайту создается впечатление трупа.
>>А чего тебе в нём сейчас не хватает?
sdl2, pythonic, python3
>>532596
Не думаю что процессоры в ближайшие годы станут сильно производительней, особенно учитывая тот факт что амд умирает.
>>532600
Ты взгляни на сайт того же pygame.org, зеленый пиздец из 2000. Так они еще несколько дней назад поставили переадресацию на новый сайт, где дизайн еще хуже. Весь сайт на большом дашборде, который еще проматывать вправо нужно, при это все лагает. Пиздец короче.
Даже не знаю что делать. Лучше пережду пару годков, а там надеюсь станет понятней что выбирать для разработки, глядишь выйдет новый движок или тот же пигейм обновят для работы с вулканом.
Пока смотрю в сторону godot engine, но с кастомным языком не сильно хочу работать.
>новый сайт
Феерический пиздец. Даже с музякой и плеером на главной. Давно я так не проигрывал.
Например?
Ты же не баба, чтобы моде следовать и бездумно брать то что новее типа третьего питона. Аргументы давай.
>sdl2
И зачем он нужен? Алсо:
>Tom Rothamel has announced that Pygame_sdl2 development is underway. Pygame_sdl2 uses SDL2 and implements a large portion of the pygame API. For now, Pygame_sdl2 is available at https://github.com/renpy/pygame_sdl2.
>pythonic
Чито?
>python3
Есть, хоть и не нужен.
Аргументы против использования мертвой поделки? Ты серьезно? Ну ладно.
Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить.
Отсутствие новых фич. Опять таки идеальных фреймворков не существует, даже лучшие развиваются до сих пор.
Отсутствие новых платформ. Один пека в 2015 не катит.
Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же.
Отсутствие улучшений производительности. Никто не будет вылизывать алгоритмы для хуйни, которой никто не пользуется. Очень актуально.
Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет.
Мне продолжать?
Ты дебил какой-то. Или зеленый. Иди нахуй на коболе под os/2 пиши.
Нахуй иди, сказали же тебе.
> Отсутствие багфиксов. Никто не пишет идеальный код, всего есть что чинить.
В старых и мёртвых либах все критические вещи уже пофикшены.
> Отсутствие новых фич. Опять таки идеальных фреймворков не существует, даже лучшие развиваются до сих пор.
1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть.
2) Новые фичи - новые баги.
> Отсутствие новых платформ. Один пека в 2015 не катит.
И какие платформы там не работают?
> Отсутствие секурити фиксов. Для игровой библиотеки не актуально, но все же.
Сам сказал, что неактуально.
> Неизбежное снижение пользовательской и кодовой базы. Больше не сделаешь import new_cool_module, потому что никто его не напишет.
Если у самого руки прямые, то несущественно, тк решаешь задачи сам и так как именно тебе нужно, а не тащишь чужие баги.
> Мне продолжать?
Может хоть 1 валидный пункт придумаешь.
>Пост про то что петушок смотрит на дизайн сайта, а не на функционал либы.
>ПОК-ПОК-ПОК РАЗВИТИЕ НИНУЖНО
Ты у мамы особенный как я погляжу.
result = xy
print "%d в степени %d = %d" % (x, y, result)
square(x, y) # А это уже аргументы! Чувствуете?
А нахуя ты это всё пишешь сюда, да ещё и в отдельнх постах?
>>532647
>1) Ты в любом случае пишешь игру сейчас и не можешь ориентироваться не некоторые неопределённые фичи, что могут быть.
Но ведь он игру не забросит после написания, а будет её, наверное, развивать, не? Да, в первой версии никаких "будущих" фич модуля не будет, а через полгода раз и свистелку добавят, которая будет ему как раз. А используя мёртвый модуль и сама игра получается мёртвой изначально. Это как начинать писать игру на заброшенном движке, далеко не в графоне же разница. Конечно, ты в состоянии сам всё реализовать, если что-то конкретное нужно, но в таком случае отстаивается позиция "модули не нужны", и "современные и поддерживаемые модули не нужны" лишь одна из её частей.
И разбирались в терминах, а то интерфейс от класса не могут отличить, блядь.
>Но ведь он игру не забросит после написания, а будет её, наверное, развивать, не?
С 99,9% вероятности, не будет даже если напишет.
Я вообще игру не пишу, а тот чувак видимо только спросил и сразу нахуй послал. Ну и правильно сделал.
Я только говорил что писать новый код используя дохлые библиотеки - говноедство. Хотя у тебя похоже легаси ЫНТЫРПРАЙЗ головного мозга и использовать то, что еще не разложилось и не завоняло ты считаешь зашкваром и детскими шалостями.
Я считаю, что нужно смотреть на возможности либы, а не на дату.
Например:
"В этой конкретной библиотеке нет такой-то критичной для меня возможности." - аргумент.
"Библиотека не обновлялась пару лет и только поэтому я не буду даже смотреть, что она может." - подход дегенератов без мозга.
"Библиотека не обновлялась пару лет поэтому древние версии системных либ с которыми она работает можно найти разве что в четвертом редхате."
>2015
>не использовать божественный четвертый редхат
Туда ли ты зашел, петушок? У нас тут клуб любителей питона 2.6
Таких не бывает, все пишут под 2.6, это продакшн.
При всем при этом им делали макеты нормальных сайтов, хотели помочь, а они в итоге сделали сайт не из 2015, а из 2006
Т.е. подстраиваться под устаревшую либу, вместо того, чтобы просто новую взять? Что-то это беседа уже скатилсь хер знает куда.
Спасибо, я просто совсем нуб, дочитываю только Луца
Это просто зеленый. У него и питон 3 не нужен. Не кормите.
Потому что как нам пояснили эксперты - мертвое - значит стабильное, значит надежное и можно наконец использовать в продакшыне.
В производительность и многопоточность.
Всякое мелкое говно можно написать практически в любом языке, а вот тот же клон террарии сделать, чтобы он не лагал, уже очень проблематично сделать. Попробуй godot engine, синтаксис похож на питоновский, либо ебись с пигеймом без экспорта на мобилки. Выбор невелик.
Еще есть kivEnt.
http://kivent.org/
На нем запилили прикольную игруху для андроида.
https://play.google.com/store/apps/details?id=org.chozabu.boardzfree
Возможно хорошая штука чтобы делать всякие приложения с киви, но думаю для серьезных игр для пк это не пойдет, особенно если учесть что сам киви основан на пигейме. Там даже третий питон не работает на андройде. Стоит ждать перенос киви на сдл2, который сейчас и происходит. Возможно в будущем это станет такой же платформой для разработки игр как и пигейм.
Я уже сомневаюсь что они осилят sdl2 и питон3 для андроида. И пигейм кстати выкидывают, меняют на свое. Там какой-то адский замок из костылей, абсолютно непереносимый.
>>532421 (OP)
Мудак блядь.
Ну да я только пришел. Блядь ну тред хоть Python можно назвать нет? Олдфаги хуевы блядь.
Ну проебался я немношк, извиняй. Хуле дерзкий то такой?
Раздел все равно полудохлый, и все живые треды на первой странице висят. А ссылки в FAQ'е никто не правит. На рубитред там вообще 404.
Да что то я переборщил извини. Уф я думал хули там никого нет думал Python - ВСЁ лол, мой мир рухнул.
Опять ты?
Тебе красивая циферка версии нужна или чтобы программа ТЗ выполняла?
Если ты из той либы ничего, что есть только в обновлениях не используешь, то всё норм. А ты этого не делаешь в 99,99% случаев.
Куда я попал? Доска не программистов, а модниц каких-то, которые берут новинку только потому, что это новинка.
Можно и оче просто. Pygame, например, оче хорош для обучения, тк не городит за тебя структуры игры, а просто даёт тебе возможность вывести картинку, звук, получить нажатие клавиши или положение мышки и ты сам разбираешься, как всё нужно устраивать. Можно писать и сложные игры.
Питон не может в скорость исполнения, но при текущей производительности процессоров это не критично, если ты не собрался цикл в миллионы элементов 60 раз в секунду обрабатывать. Но при необходимости даже это решается заменой этого места модулем на С или перекатом на PyPy какой-нибудь.
А чем тебе пайгем не простой и не удобный?
А какие игры на нем написаны?
Накати его и pylint, вылезает кучу ошибок. Ну, большую часть я пофиксил, но вот например есть "D103 Docstring missing in public function" и я не знаю как его пофиксить.
Докстринги вроде всюду есть, но может я оформляю как-то не так?
Может кто-то привести пример правильной функции с докстрингом который не вызывает ошибку?
Впизду. Вставляю примеры с документации PEP257 и всё равно получаю ошибку D103. Вставил код в другой редактор - написало что всё ОК. В итоге просто заигнорил ошибку.
атомопроблемы
<td width=470 colspan=3 align=center valign=middle bgcolor=#eeeeee><font color=#00008f>блаблабла</font></td></tr>
Мне нужно отсюда вывести "блаблабла". Т.е. вот этот текст задан конкретными специфичными параметрами, как к нему подобраться? Пишу разную хуйню с findAll, но пока не могу по-нормальному все сделать.
в wxpython функции ВсёВотТак
40к рублей. Если в ДС то 50, может даже 60.
Питон это язык для обучения, типа бейсика.
Никаких зарплат там нет и никаких синьеров.
Если хочешь найти работу учи java или php. Это энтерпрайз.
Можно стать главным и диктовать свои условия, например.
>Если хочешь найти работу учи java или php. Это энтерпрайз.
Если хочешь развиваться учи Python. Это highload и не только.
Ебать вы науч.
>Никаких зарплат там нет и никаких синьеров.
Но у меня есть друг, пишет на питоне, тимлид.
И вообще видел немало мидлов и сеньоров.
>Никаких зарплат там нет и никаких синьеров.
>учи java или php
> Это энтерпрайз.
>php
>энтерпрайз
Ты долбон или еблон?
С соседнего треда. https://mathrioshka.atlassian.net/wiki/display/VAC/Back-end+Python+Developer
Зарплата от 100 до 160к. Нууу, даже не знаю, лол.
>Базовые знания статистических алгоритмов
>Хорошая математическая подготовка
>Знание библиотек (Pandas) и языков (R)
Это не про сосачера из этого треда. Тут задают настолько дебильные вопросы, которые гуглятся за 2 секунды, ну ты сам видишь.
Какая математическая подготовка.
Сложные вопросы нет смысла задавать, мала вероятность, что кто-то знаком с предметом твоего вопроса, ибо аудитория невелика.
Сижу на лоре там в development иногда задают довольно непростые вопросы и по python в т.ч. и находятся ответы.
Просто аудитория повзрослее и поумнее.
Ну, с этим никто не спорит. Тут в целом соотношение 5% сениоров к 95% студентоты и всяких посетителей из б, которые узнали "как легко зарабатывать 25 баксов в час на удаленке и дать пососать всем своим одноклассниками которые тебя травили". Ничего удивительного.
И да, многие реально гуглом пользоваться не умеют, вводишь их вопрос в гугл и первая же ссылка ответом, копипастишь им и они такие "ОГО, СПАСИБО!". Безумие какое-то.
> аудитория невелика.
Потому что моча неадекватная. Бан на бане, половина тредов закрыты, только дженерал треды имеют право жить. Скоро тут вообще поланона будет. Тащемта я в #python на фриноде и на лор перекатываюсь.
В чем же суть pr? Ни одного годного проекта за всю историю. Вообще нихуя.
Предлагай.
Никакой нормальный человек не будет свой годный проект тут палить. Его потом еще в резюме пихать, а двачеры все зашкварят. Не говоря уже про деанон.
Попроще и повеселее что-нибудь давайте. Чтобы желающих поучаствовать было побольше.
Не в идеях дело, а в зашкваре. Мы даже ОПа на гитхабе переименоваться заставили. Он изначально назвался 2chPythonThread или как-то так. Пиздос. И еще удивлялся почему никто не коммитит. Да, сейчас, побегу я коммитить в двачетред со своим настоящим именем. Да хоть и не двачетред, все равно понятно откуда я этот репозиторий нашел.
Это какие-нибудь безобидные ычаньки могут скооперироваться, сдеанониться и запилить очередное бесконечное лето. А тут петухи одни.
Хотя ты прав, идей то все равно нет.
Нету да.
Лично я сижу в треде потому что мне нехуй делать и могу какому-нить совсем нубу что-то объяснить, хоть какая-то польза от меня человека-говна.
Там пишется бот, который за тебя потом играет.
Соответственно это требует сервера, соответственно поэтому оно платное (ибо могут нарегать тысячи левых акков и уронить всю игру).
Хотелось бы видеть это в p2p варианте. То есть запускаем у себя на компе и оно там считает. Выключили - наши боты остановились.
Мир большой и разреженный, боты определённого игрока находятся обычно в очень ограниченной части мира. То есть можно использовать локальную когерентность позиций чтобы не учитывать всех-всех-всех для просчёта каждой точки мира.
> локальную когерентность позиций
Я не понял что это значит. Что если у нескольких игроков карта мира одинаковая, а у ещё одного другая - то типа верна карта большинства? А что если они все виртуалы читера?
Нет p2p игры это проблема большая в плане наеба. Поэтому почти все игры централизованные.
Используем принцип биткоина. Просим других проверить наши рассчёты.
Это значит что боты не могут двинуться дальше чем одна клетка за один такт. Резко перенестись из одной части мира в другую.
Можно сделать это как распределенные системы контроля версий.
У каждого копия репозитория, ты делаешь один коммит и делаешь push другим. У них проверяется подходит ли этот коммит под правила и если да то принимается.
Как-то так да?
Именно так, да. Но здесь будет не совсем коммит, а скорее массив ботов с направлениями и типами действий (идти, атаковать, добывать). Проверяющий код будет супер тривиальный.
Соответственно если читаны начинают ломать клиент, произойдёт форк игрового мира и читаны будут играть сами с собой.
Суть pr постебаться и пообсирать что-нибудь. Ну, максимум видос или либу вбросить.
import re
match=re.match('/(.)/(.)/(.)', 'Hello/Python/world')
далее по книге надо ввести
match.groups()
чтобы получилось разделение, но в интерпретаторе у меня чомуто нихуя не выходит и выскакивает ошибка:
)/(.)/(.)', 'Hello/Python/world')>>> match=re.match('/(.
>>> match.groups()
Traceback (most recent call last):
File "<pyshell#87>", line 1, in <module>
match.groups()
AttributeError: 'NoneType' object has no attribute 'groups'
>>>
Шта делать?
Если match не находит нихуя то возвращает None вместо объекта match
Конкертно у тебя должно быть
re.match('(.)/(.)/(.)', 'Hello/Python/world')
или
re.match('/(.)/(.)/(.)', '/Hello/Python/world')
Иначе оно нихуя не подподает под шаблон
c=1
def Test(c):
a=c
b=2
return a,b
def Test2(a,b):
print(a,b)
Test2(Test(c))
TypeError: Test2() missing 1 required positional argument: 'b'?
Я быстрее.
Это не оно. Тут задача другая совсем. Например тут всё белое - это неразрывная область. И в каждой клетке обязательно есть место.
ПОЛ ГОДА УЧИЛ ПХП
@
НЕ ПОНИМАЛ КАК ТАМ РАБОТАЮТ ЦИКЛЫ
@
НАЧАЛ ИЗУЧАТЬ ПИТОН
@
МАНИПУЛИРУЕШЬ ЦИКЛАМИ КАК ШЛЮХА ДЕЛАЕТ МИНЕТ С 10-ТИ ЛЕТНИМ СТАЖЕМ
Утилита дает выхлоп в stdout. Если сделать response = os.system('/bin/zalupka') то в response остается pid, а не выхлоп. Мне нужен выхлоп чтобы распарсить. Как это сделать?
Эта хуита годится разве что ls дергать. Оно не может нормально передать параметры к /bin/zalupka
Пример чего она не может или не было.
Если бы ты хоть немного читал документацию, то увидел бы что os.system это как раз дёргать ls, а что посложнее - проследуйте в subprocess. Конкретно тебе нужен subprocess.POpen
Тебя не учили не использовать system()? Или ты думаешь что идеально знаешь синтаксис sh? Сколько таких по весне на пробелах и кавычках оттаяло. subprocess.check_output(['/bin/zalupka'])
https://github.com/micropython/micropython
>MicroPython is an implementation of a subset of Python 3.5 which is optimised for systems with minimal resources, including microcontrollers and embedded/IoT systems.
Харкнул в рот всем питон3-нинужна питухам и зеленым.
питон на микроконтроллерах ненужен.
> Попытка админить на пистоне это хуёвая попытка.
Вообще у всех этих облачных сервисов и суперкомпьютеров скрипты управления на питоне.
гугл, амазон.
>Попытка админить на пистоне это хуёвая попытка.
Тащемта не считая баша питон язык номер один для админа. Что для шиндового, что для юниксового. Раньше перл был.
Ничем, это такой сублайм 2.0. Лучше вима только неовим.
Не таким уебишьным или еще более убишьным? Атом - наглядный пример уебанства жабоскрипта и ноды с вебкитом в частности.
Да я тока плагин написал.
Пустослов.
Сап, котаны.
Хочу запилить ГТД систему с интегрированным миндмэпом и экселем. Хз почему никто еще не додумался до такой вещи. Дико угораю по гтд.
Сам ниразу не программист, первый раз зашел в раздел. В универе как бог решал задачки и делал лабы на бейсике. Есть по 2 часа свободного времени в будни и по 6 часов в выходные.
Нужно чтобы можно было работать с ноута и мобильного, поэтому скорее всего это должно быть что то типо сайта.
Что мне учить, чтобы максимально быстро, учитывая время освоения новой для меня технологии запилить мою йобу и начать с ней работать? И сколько это займет по времени?
Если это важно то на ноуте у меня стоит Линукс Минт, а смартфон андроид.
Добавлю, что после 2х дней курения программача и гугла решил, что это лучше сделать на пайтоне, ибо по отзывам самый простой язык. Уже читаю Марка Лутца.
Дадите ли каких-нибудь советов мудрых, как мою мечту быстрее воплотить в жизнь?
>Что нового?
>Работает плохо!
Проиграл.
А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!
>>534757
pyqt/pyside/pygobject наверни с соответствующими конструкторами гуйца. Покроет 98% нужных функций.
>Хз почему никто еще не додумался до такой вещи.
Потому что на самом деле их никто не использует. Только саморазвиванцы вроде тебя.
Это каким нужно быть дном, чтобы на питоне написать код, который работает только на одной машине?
просто иди нахуй. Проект будет писаться несколькими людьми и тесты согласованы с заказчиком. Вернись к своему говнокоду под шконку
Майкл Доусон - Программируем на Python
В конце каждой главы есть упражнения. Ну, если у тебя еще пока novice level
чекио
Есть только Run 'Unittests in XXX'
<?xml version="1.0" encoding="windows-1251"?>
Однако, когда я хочу свежесчитанную строку (если я ничего не путаю, .readline() тут возвращает байты) задекодить, он мне кидает:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
Что сие может значить? Ни в какую кодировку не дает сконвертить эти байты.
Manya, ti ponimaesh v chem syt' githuba?
>Build software better, together.
Idi dobavlyai ya skazal.
Какую строчку и зачем, по-вашему, я ввожу в консоль? Не понимаю вопроса. Я получил результат функции target.readline() и он выглядит как b'строка', то бишь в байтах, но перекодировать не дает вообще никуда
Используй пробелы, а не табы. И не делай list comprehensionов в 100500 символов перлоебы такое любят В остальном обычная скриптота.
>ввожу
вывести
Что там в этой строке-то посомтри хотя бы. EncodeError вылезает при попытке вывода куда-то (или str() над юникодовой строкой, содержащей не-ascii символы во втором питоне). b''.encode('utf-8') попробуй.
>Проиграл. А чойта у тебя Version с заглавной буквы? Не по пепу, Гвидо не одобрит!
Реально, не могу сделать нормально, бьюсь уже месяц об табы в tkinter. А Version, что она есть, что нет, один хуй. Гвидо тоже пепы не слишком соблюдает, пруфы в коде IDLE.
Господа, есть у кого переведенная dive into python&? Все 3 части желательно.
Xpath юзай.
Учи английский, рак.
>>535013
bytes содержит кодированные данные, отсюда и слово кодировка. Соответственно у него есть только decode в символы.
str содержит символы, о внутреннем представлении которых нам заботиться совсем ни к чему. У него только метод encode в байты.
В py2 bytes и str это одно и то же, ещё есть unicode, ещё исходники по умолчанию читаются как ascii, поэтому в нём легко можно прострелить себе колено.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte
При попытке декодить в вин-1251:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte
Не то скопировал, там:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
Заебал короче, выкладывай полный трейсбек. С декодированием эта ошибка никак не связана.
Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('windows-1251'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('windows-1251'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-15: ordinal not in range(128)
Извиняюсь, вто второй трейсбек:
Traceback (most recent call last):
File "parser.py", line 6, in <module>
print(target.readline().decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 13: invalid continuation byte
Плохие значит у тебя байты. Они не соответствуют кодировке utf-8.
Насколько помню в утф-8 байт может начинаться или с нуля или с 10. То есть 10xxxxxx. У тебя xCE, 11001110. Вот оно тебе и высрало ошибку.
А ты даже не посмотришь, что ошибка не в выводе а в декодировании, сразу называешь меня долбоебиной, рашкопрограммер, хули. Да еще сагаешь тред, который ни в чем не виноват. В консоль выводит строку вида b'строка' с недекодированной кириллицей если убрать метод, который декодирует. С методом вышеуказанный трейсбек получаю.
>>> 'лол'.encode('windows-1251')
b'\xeb\xee\xeb'
>>> 'лол'.encode('windows-1251').decode('windows-1251')
'лол'
>А ты даже не посмотришь, что ошибка не в выводе а в декодировании, сразу называешь меня долбоебиной, рашкопрограммер, хули.
>в декодировании
Тебе, мудаку, уже два раза указали что ошибка называется UnicodeEncodeError. Повторяй за мной: Unicode. ENCODE. Error. Ошибка возникает потому что print(x) делает sys.stdout.write(str(x).encode(sys.stdout.encoding)), а sys.stdout.encoding == 'ascii', который кириллицу не кодирует.
Ну вот сразу бы так. Спасибо.
Это ты скорее всего пердон как-то не так установил. Ну в любом случае можно попробовать sys.setdefaultencoding('windows-1251') или где-то в конфигах питона это найти. Не верится что спермоконсоль не может в кириллицу.
Проверь что в /etc/locale.gen раскомментирована en_US.UTF-8, выполни sudo locale-gen, в .bashrc добавь export LANG=en_US.utf8 и перезапусти терминал.
Упс. Действительно, не была раскомментирована локаль, которая установлена в LANG. Прошу прощения за быдлопроблемы.
Ничего лишнего. В процессе установки устанавливаешь только что тебе действительно нужно.
Но на самом деле это все на любителя.
бампую вопрос
hasattr("asdf", '__iter__') во втором возвращает False, а вот в третьем - True.
По celery (желательно в связке с rabbitmq/redis ) гайды или видеоуроки можете посоветовать?
Как ты себе это представляешь? В итераторах всё движется к унификации и неотличимости. А у тебя какое-то "хочу то не знаю что".
Ну почему же "хочу то не знаю что". Строка это, так сказать, не настоящий список. Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же.
Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю. А строка тут совсем не к месту получается, потому что с каждой отдельной буквой мне нафиг не надо ничего делать, я хочу либо над строкой, либо над списком строк. И, думаю, редко попадается необходимость производить одну и ту же операцию как над элементами списка, так и над каждой буквой строки.
В общем, всё понятно, спасибо за ответы.
А если ты итерируешь генератор, выплёвывающий попеременно одиночные символы, списки, числа и None? Динамическое петушение типизация, сэр.
>Строка это, так сказать, не настоящий список.
Строка это низменяемый список символов.
>Итерировать по списку объектов и итеровать по буковкам строки - совсем разные вещи же.
Нет.
>Например, если мне в функцию передали один объект, я с ним что-то делаю. Если передали список объектов, я с каждым из них что-то делаю.
Хуйней какой-то занимаешься. Сделай две разные функции.
в арчеговне питон3 по умолчанию. приходится делать rm /usr/bin/python && ln /usr/bin/python2 /usr/bin/python
>>535271
Хм, пожалуй, вы правы.
Не, две разные фукнции глупо городить, если разница там в две-три строки, не считая определения итерабла). Так-то я и ('string',) мог при вызове функции писать и вообще не париться, но не хотелось это уродство в кодпихать.
Ещё вот сегодня напоролся:
def func((звёздочка)args, foo=None):
Выдаёт синтакс эррор во втором (2.7.10), а в третьем всё ок. Это нормально? Никогда раньше, почему-то, не сталкивался с этим.
Нормально. Во втором args, kargs должны быть в конце списка аргументов.
Лол, так я и использую третий (и форшу у себя на работе). Решил интереса ради запустить скрипт во втором, а там такой вот сюрприз.
Откуда вы лезете блядь? Меня даже на собеседовании это спрашивали. Во всех языках народ с радостью перекатывается на новые версии, только в питонах какие-то мудоёбы собрались.
Что?
Типичный aioдебил, в Twisted был аналог твоего
@coroutine и yield from на генераторах (@inlineCallbacks и yield), начиная с релиза питона 2.5, когда даже жаваскриптодети о подобном не задумывались.
Запоздал твой твистед с яйцами на базар. Нехуй было на двойке столько лет жрать говны.
Под твистед реализовано дохуя протоколов всяких, например и у него api годный и проработанный.
Нет, это asyncio проебан по дизайну. Это ты поймёшь, когда тебе придётся реализовывать сетевой протокол чуть сложнее echo (вроде Zookeeper'ского например или Thrift с кастомными командами контроля соединения) на чистом asyncio без нормальных деферредов.
Ну я тот самый поехавший запиливающий p2p игру. Хуй знает, сейчас больше голова болит с проектированием самого протокола. Стандартные клиент-сервер написались за 5 минут, тривиально до безобразия. Что такое деферред? Есть тут фьючеры и таски, оно?
я мечтаю своими клешнями собрать скрипт который будет заходить в папку и закидывать в список имена файлов:
import os
directory = '/home/workmachine/source'
list_of_files = os.listdir(directory)
а потом по циклу заменять именя файлов на порядковые имена от 1....n, я уже весь лор заебал, у меня либо так либо через софтину бездуховную, а я не хочу через софтину, я хочу через пайтон, что бы хоть как то его подтягивать пока джаваскриптебучий учу для работы.
вот дали цикл
i = 0
for name in list_of_files:
print(template.format(name, i))
i += 1
как собать имена я нашёл, теперь что в этом тимплейте записать, что бы он зашуршал, я всё обязательно выучу, додрочу доудсона. схаваю Лутца, но щас реально нет времени, нужно просто что бы заработало и я воспарю
[code]
import os
os.chdir('/home/workmachine/source')
l = os.listdir('.')
l.sort()
for i, f in enumerate(l):
os.rename(f, '%d.jpg' % i)
[/code]
В голос, блядь.
Если в директории есть 3 файла: 1.jpg, 15.jpg и 2.jpg, то всё сломается, например.
Задача уровня /bat/: ren . *.jpg
Пиздец, как ты программируешь не зная англицкого и не умея понимать ошибки которые показывает тебе компилятор?
Интерпретатор жи.
>без нормальных деферредов
Пиздец, понапридумывали баззвордов, "пок-пок деферреды", "ко-ко горутины и каналы", и выебываются ими как киллерфичами. Говори "future" как нормальный человек, уеба.
>вроде Zookeeper'ского например
Я бы сказал что его реализовать как два пальца обоссать, но к сожалению я не нашел его описания, и даже ссылка на API Docs на сайте апаче выдает 404. Реверс-инженерить так-то действительно будет сложно, да.
Посколько asycnio уже часть языка (async/await), то нет уже нужды в твистедах. Торнадо поддерживает asyncio-loop и это очень правильный шаг.
greenfeld_d_roy_a_two_scoops_of_django_best_pra.pdf
годная книжка и по свежей версии. но она предполагает, что ты хотя бы туториал прочитал.
А гитхаб не зобанит? Пиров может быть дохуя. Каждый из них анонсит себя (пишет свой ойпи в список), многие из них читают список (остальные из старых кешей тянут, и обновляют прямо из p2p сети если хоть к кому-нибудь приконнектились).
Борода в смузи упала.
Если есть обмен пирами, то можно не такую уж большую базу делать и не так часто обновлять.
> Я так понял magnet links всё равно содержат урл трекера
Даже если и содержат, это fallback для более быстрого получения пиров. А вообще, вкратце, в magnet содержится инфохэш (хэш информации о хуйне, которую ты хочешь скачать). Твой клиент входит в DHT-сеть и спрашивает об узлах, чьи ID наиболее близки к этому хэшу. У полученных узлов он опять спрашивает. Таким образом он добирается до узлов, чей ID близок к инфохэшу. Эти узлы хранят адреса пиров, у которых есть нужный тебе контент.
Чтобы это работало, тебе, конечно, нужен список узлов для бутстрапа (входа в сеть). Зашивай в клиент при билде список из самых долгоживущих известных тебе на тот момент нод. Это сразу решает большинство проблем. Но для слоупоков, которые поставят клиент через год после скачивания, можно поднять fallback-ноды на известном IP (как в BitTorrent есть router.bittorrent.com на крайний случай), или даже автоматически выгружаемый свежий список нод на гитхабе или где-то еще. Запросов много не будет.
А можешь просто DHT битторрента использовать. Там не так уж много кода, для Python готовые реализации есть.
python3 -i
бляя, ентого я и боялся, нахуй там логика в html ?
temp = '32'
if temp > 85:
print "Hot"
elif temp > 62:
print "Comfortable"
else:
print "Cold"
Почему выполняеться первое условие?
Прости, не понимаю обезьяний.
int(temp)
Во втором этот код сегфолтится, а в третьем - нет.
http://ideone.com/ND2YaF
Но лично мне больше нравится второй, в нём поменьше хипстеров и прочего говна.
>pygame.org
Есть же panda3d. Он относительно жив. Правда, в команде разработчиков остался всего один человек.
Второй это промышленный стандарт, который используют чтобы делать работую.
Третий - игрушка для студентов.
Хорошо. А теперь обьясни мне в каком месте этого кода (http://ideone.com/ND2YaF) это происходит.
COBOL это промышленный стандарт, который используют чтобы делать работую.
Питон - игрушка для студентов.
FORTRAN это промышленный стандарт, который используют чтобы делать работую.
COBOL - игрушка для студентов.
Падает с ошибкой segmentation fault.
>>535930
>мне больше нравится второй, в нём поменьше хипстеров
Может ты еще и использовал питон до того, как он стал моден?
>>535902
В том что второй устарел, а третий нет. Не утихают кукареки про второй по той же причине, что и про сисвинит - чтобы обновиться нужно немного поработать, а программисты и сисадмины скорее в дворники перейдут чем сделают то, за что им деньги платят.
AUTOCODE это промышленный стандарт, который используют чтобы делать работую.
FORTRAN - игрушка для студентов.
КАМЕНЬ это промышленный стандарт, который используют чтобы делать работую.
Программирование - игрушка для студентов.
Да, я бы тоже сидел на втором если бы он абсолютно ничем не отличался от третьего. Впрочем был бы тогда вообще третий?
for n in x:
if n not in out:
out.append(n)
Сила суперкоровы!
У меня тоже интерпретатор ошибок не показывал. Но как видишь не все так просто. Запусти скрипт с аргументами -mtrace --trace
Эй, жуки, сука. Частично умею в С/С++ studying короче, чё-то там сука шпарю в кодинге немного. Пайтон учил давно, всё нахуй забыл. Подскажите, такая вот шняга (штука (вещь)) подойдёт, чтобы освежить знания и перейти позже к книгам? Или лучше сразу с книг, раз у меня есть немного опыта? Скачал 300 мб учебников, сука, люблю пайтон.
Достаточно будет пробежаться по туторилу с питон.орг, а потом по документации.
Ладно, раз говоришь, что так изи, то я всё-таки попробуй там за полчаса-час пройти эту штуку по ссылочке, а потом сразу книги-книжечки-книженции оххх как я люблю качать гайды туториалы книжечки читаю кончаю радуюсь пайтон для победы!!!
Peace брателла \/ Спасибо за помощь добра удачи чтобы код писался одними табами мизинчиком клацнул и всё заехало! :3
Нахуй иди, даун-аутист.
Да заглядывал уже
pyvenv myenv
bash: pyvenv: command not found
python3 -m venv myenv
Error: Command '['/home/mvbrn/myenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
ЧЯДНТ?
То, что он называется 3д, не значит, что он не умеет рисовать 2д. Ну да, текстурированные плейны, как в Юнити. И чо?
На хабре статья была, можно вместо виртуаленв использовать pip install xxxx -t .pip
Сам так делаю. Плюшек чуть поменьше (нет freeze и прямого запуска из bin), но работает, без всяких activate.
>нет прямого запуска из bin
Добавь в PATH, епта. Будет прямой запуск хоть откуда. Фриз нахуй не нужен.
Можно использовать vagrant.
>returned non-zero exit status 1
http://askubuntu.com/questions/488529/pyvenv-3-4-error-returned-non-zero-exit-status-1
Первая же ссылка в гугле.
sleep для того, чтобы подольше отпустить GIL.
Суть такая в http://ideone.com/ND2YaF
1) Завершается скрипт, вызывается Py_Finalize()
2) Py_Finalize вызывает threading._shutdown
3) _shutdown join()-ит все не-daemon треды. Очевидно, наш тред daemon, поэтому его мы не ждём.
4) В Py_Finalize вызывается Py_ClearInterpreterState который для каждого треда уменьшает refcnt у его текущего фрейма, фрейм деаллоцируется, в свою очередь он дропает все ref-ы на своё барахло - locals-ы в том числе. sleeper - в локалсах и у него вызывается tp_dealloc, вызывается наш питонячий код в полу-разрушенном интерпретаторе, происходит sleep. Как известно, любой блокирующий код в питоне оборачивается в отпускание GIL Py_BEGIN_ALLOW_THREADS // release gil
fwrite(f, data); // may block for long time
Py_END_ALLOW_THREADS //acquire gil
Значит, когда в деструкторе вызывается time.sleep, отпускается gil, в это время daemon тред, который всё время ждал gil вдруг оживает и начинает работать с полу-разрушенным фреймом.
Происходит LOAD_FAST, который пытается достать из локалсов переменную a, но в это время слот уже NULL, тред пытается зарейзить эксепшн, и вылетает в код, который делает if(tstate->frame->exc-что-то-там) // ceval.c
tstate->frame в этот момент уже NULL, сегфолт.
Проблема в отпускании gil в деструкторе. Это может быть не только sleep, а close(), например, у fileobject. Тогда происходит лотерея - хватит ли треду времени, чтобы засегфолтиться или нет.
Эта хрень ещё противна тем, что всё зависит от того, на каком опкоде проснётся разрушенный тред, иногда оно говорит glibc: corrupter linked list в соврешенно другом месте.
В python3 добавили флажок _Py_Finalizing, который выставляется, когда интерпретатор начинает выходить и если тред захватывает gil и видит, что флажок выставлен, он просто выходит.
http://pastebin.com/Rxncj5rR
Invalid syntax на 224 строчке
Пишу на 3ке
Байтослесарь пожаловал в тред.
Закрывающей скобки на 223 строке не хватает.
Скачай исходники питона, скомпилируй и вставляй printf, чтобы понять что когда вызывается. У меня просто была задача понять почему приложение иногда падает.
Ебать ты умный, я хочу от тебя детей.
Ну и вывод отсюда, что в двойке нельзя использовать daemon треды. Вдруг где-то окажется объект, который в деструкторе отпускает GIL.
https://joeshaw.org/python-daemon-threads-considered-harmful/
Отладочная печать - вполне легитимный способ дебага и не только.
Дебаггер нужен когда ты знаешь какое именно место дебагать, а когда тебе нужно понять в какую ветку заходит исполнение, быстрее натыкать принты чем ставить брейкпоинт а потом много раз жать n n n n
Наверное, с gui-шным отладчиком это как-то веселее, но я не осилил.
долго компилировал?
Я вот тоже непонимаю.
Он бы ещё на модуль signal или atexit повесил какие-нить долгие действия - тоже бы проблемы были. Но это описано в докуменации.
>>536195
Прочитать первое предложение никак?
>sleep для того, чтобы подольше отпустить GIL.
Отпускают GIL дохуя какие операции. Например, закрытие файлов, особенно сокетов.
>какие-нить долгие действия
Вот уж в многопоточном окружении продолжительность действия - не аргумент. "Авось пронесет" не прокатит, если что-то не атомарное, то когда-нибудь гонка там возникнет.
Только начал учить стандартный питон. Смогу ли я фрилансом на апворке например получать зха месяц хотя бы тыщ 20 деревянных? Или мне ещё придется выучивать всякие джанго и прочее?
Голый питон чаще всего используют только админы. Если можешь в линуксы - запросто. Иначе хуячь джангу и еще 100500 фреймворков.
Не сможешь. Придётся и дохера.
фриланс на 90% - это вебня, поэтому придется ебать практически все фреймворки. есть небольшая ниша, когда клиенту похуй на чем, лишь бы работало (etl\скрейперы всякие), но для этого надо уже иметь какую-то репутацию.
А на кой хуй тебе вообще задумываться о GIL? Насколько я понял демон здесь это такой фоновый поток, который можно убить в любой момент. Может тебе нужен не демон?
А ещё после таких плясок у тебя потом обязательно случится PYPY.
все дохуя умные а ответа на почему не прозвучало.
ord('3')==51
так схуя ли выполняется первое условие?
мимо дремучий нуб
>быстрее натыкать принты чем ставить брейкпоинт а потом много раз жать n n n n
А логгирование на что?
Сказано же, потому что питон 2. В питоне 3 строки с числами сравнивать нельзя. В питоне 2 можно, но никакой логики в этом процессе нет.
На объекты жи.
Пхп-тред не здесь.
Зато теперь мы знаем что у местного хейтера тройки на самом деле околонулевые знания. В его шаражке только-только начали 2.6 преподавать ПРОДАКШЫН, ЫНТЫРПРАЙЗ, мучается человек, осиливает. А тут уже перекатываться пора. Я бы тоже бомбанул.
Чот обосрался с пика.
А зачем стравнивать строки и числа? Это же не имеет никакого смысла. Банан больше Дизайна?
http://stackoverflow.com/questions/8732240/comparing-strings-and-numbers-in-python
Логика есть, но она какая-то странная.
>Банан больше Дизайна?
Дизайн больше Банана потому что при сравнении несовместимых типов они упорядочиваются по имени типа.
Я вообще не шарю какие проблемы с перекатом. Пишешь себе на тройке. Нужная либа осталась на двойке? Пишешь на двойке. Хуйня вопрос вообще.
Спасибо, ты процитировал мне ссылку, которую я дал постом выше. А теперь объясни, как такой результат может пригодиться.
>>536338
>Нужная либа осталась на двойке?
А почему бы не попробовать запустить её на тройке и не посмотеть, почему не работает? Велика вероятность, что подправив десяток-другой строк, всё заведётся и на третьем, если это не что-то громадное.
>А почему бы не попробовать запустить её на тройке и не посмотеть, почему не работает? Велика вероятность, что подправив десяток-другой строк, всё заведётся и на третьем, если это не что-то громадное.
Удваиваю юношу. Почти всегда 2to3 справляется. Если уж не справляется, то правишь либу. Сам так пару раз делал, в итоге дошёл до пулл-реквеста.
>в итоге дошёл до пулл-реквеста.
А я до полноценного форка. Автор сдох похоже. Проект на гуглокоде был, который закрывают. С последним коммитом от 2008. Теперь вот лайки собираю. На три часа работы вышло.
Что за либа?)
Когда гвидо закроет тройку как ненужный и бесперперспективный проект и продолжит развивать божественную двойку.
Ты так говоришь будто после уроков в сосач нельзя зайти.
Да и тогда трупоеды вякать будут.
Добрый день, прочитал шляпу, но так и не понял, что выбрать удобное и легковесное для мака. Canopy какой-то гигант.
>>536438
Запустил на python3, оказалось и правда, дело в IDLE, которая использует версию 2.7.6. А ее можно как-нибудь перепаять, что бы она с python3 работала? Просто читая книгу не охота иметь кучу окошек. да тут и в книге сноска В этой главе и далее мы переводим в обраэцах кода все английские выскаэывания (ком
ментарии и текст, отображаемый на экране) на русский язык. В отличие от Python 2.х,
Python 3.1 не требует в таких случаях включать русскую локаль, но в начале кода может
понадобиться директива# coding: ср1251 или# coding: utf-8. - Примеч. пер. Пардон, не дочитал.
Это, конечно же, не значит, что в питоне 3 нет бредовых ситуаций со сравнением. http://ideone.com/CZ9YBD
Это не бредовые ситуации. И ты там != забыл сделать, которое-таки тру и выдало бы.
{} — множество. Одно может содержать другие подмножества, т.е. быть "больше".
{0,1} < {0,1,2}, {2,1} == {1,2}, {1,2,3} <= {1,2,3,4}
А когда ты {0} и {1} сравниваешь, то элементы первого вообще не содержаться во твором. Они никак не пересекаются и просто-напросто "не равны". Поэтому любое сравнение будет выдавать false. {0} и не больше, и не меньше, чем {1}. Просто "другое", т.е. не равное.
Чёт приуныл.
Мог бы просто сказать что множества упорядочены по включению. Сорь, нашел просто на реддите пример мол min(({1}, {0})) != min(({0}, {1})), не понял сначала что минимумов на самом деле несколько.
Обосрался, прикинься троллем.
но ты же хотел сравнить элементы, а не множества.
В питоне эти паттерны не нужны. Про них начитаются явадебилы и потом юзают там где не надо.
Думай своей головой.
Пока трудно. Почти вся литература или про "решёточка объявляет начало комментария" или же о слесарных байтовых делах. А что-то между, я пока не нашёл.
Как мне разложить мою проблемму на абстракции и развернуть всю ОПП магию? Как объекты будут между собой шуршать? Вот это всё.
смотрю кино, спасибо антоха!
Посоны, изучаю Пайтон по книге Доусона. Какие подводные камни?
Вот что нахелловорлдил по предложенной в книге задачке (там нужно было сначала написать псевдокод, что и было сделано, но приводить псевдокод не стану):
[code lang="python3"]
# Дай-ка угадаю
# Программа попытается отгадать задагаданное игроком число
# в диапазоне от 1 до 100
low = 0 # нижний предел, которого НЕ должно достигать значение числа
high = 101 # верхний предел, которого НЕ должно достигать значение числа
variant = 0 # предполагаемое значение числа
guess = False # угадал ли компьютер число
otvet = "" # переменная, в которую записываются ответы игрока
print("Давай сыграем!")
print("Ты загадай целое число от 1 до 100, а я попытаюсь его отгадать.")
print("Итак, начали!\n")
while not guess:
# проверяем, не жульничает ли игрок
if high - low <= 1:
print("\nТы жульничиаешь!!! Я с тобой больше не играю!")
break
# используем хитрую формулу
variant = low + (high - low) // 2
# спрашиваем игрока угадали ли мы число
while otvet != "да" and otvet != "нет":
print("Твоё число равно ", variant, "? ", sep = "", end = "")
otvet = input()
if otvet == "да":
print("\nУра! Я угадал!")
guess = True
else:
# спрашиваем игрока, больше ли загаданное число последнего предложенного варианта
while otvet != "больше" and otvet != "меньше":
otvet = input("Твоё число больше или меньше? ")
if otvet == "больше":
low = variant
else:
high = variant
input("\n\nНажмите Enter, чтобы выйти.")
[/code]
Прверку на жульничество я добавил (но не в псевдокод) по своей инициативе, а не по заданию.
Скажите, я хороший хелловорлдщик, или у меня получился уродливый коды?
Посоны, изучаю Пайтон по книге Доусона. Какие подводные камни?
Вот что нахелловорлдил по предложенной в книге задачке (там нужно было сначала написать псевдокод, что и было сделано, но приводить псевдокод не стану):
[code lang="python3"]
# Дай-ка угадаю
# Программа попытается отгадать задагаданное игроком число
# в диапазоне от 1 до 100
low = 0 # нижний предел, которого НЕ должно достигать значение числа
high = 101 # верхний предел, которого НЕ должно достигать значение числа
variant = 0 # предполагаемое значение числа
guess = False # угадал ли компьютер число
otvet = "" # переменная, в которую записываются ответы игрока
print("Давай сыграем!")
print("Ты загадай целое число от 1 до 100, а я попытаюсь его отгадать.")
print("Итак, начали!\n")
while not guess:
# проверяем, не жульничает ли игрок
if high - low <= 1:
print("\nТы жульничиаешь!!! Я с тобой больше не играю!")
break
# используем хитрую формулу
variant = low + (high - low) // 2
# спрашиваем игрока угадали ли мы число
while otvet != "да" and otvet != "нет":
print("Твоё число равно ", variant, "? ", sep = "", end = "")
otvet = input()
if otvet == "да":
print("\nУра! Я угадал!")
guess = True
else:
# спрашиваем игрока, больше ли загаданное число последнего предложенного варианта
while otvet != "больше" and otvet != "меньше":
otvet = input("Твоё число больше или меньше? ")
if otvet == "больше":
low = variant
else:
high = variant
input("\n\nНажмите Enter, чтобы выйти.")
[/code]
Прверку на жульничество я добавил (но не в псевдокод) по своей инициативе, а не по заданию.
Скажите, я хороший хелловорлдщик, или у меня получился уродливый коды?
Нормально.
Traceback (most recent call last):
File "script.py", line 13, in <module>
print (main("ololo.mail.ru", "admin@mail.ru", "ilovepython"))
File "script.py", line 4, in main
smtp = SMTP(host)
File "/usr/lib/python3.4/smtplib.py", line 242, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.4/smtplib.py", line 321, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.4/smtplib.py", line 292, in _get_socket
self.source_address)
File "/usr/lib/python3.4/socket.py", line 494, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.4/socket.py", line 533, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
Как перехватить такое исключение?
>socket.gaierror: [Errno -2] Name or service not known
>озвращается непонятная хуета
>Name or service not known
>Как перехватить такое исключение?
>socket.gaierror
>но в начале кода может
>понадобиться директива# coding: ср1251 или# coding: utf-8. > Примеч. пер.
Это не нужно если ты кодишь в Линукс.
Передавая список или кортеж известного размера в С-функцию, как можно значение этого аргумента сразу записать в массив?
А то надоело городить лапшу типа — http://ideone.com/SdWUv3
Должен же быть какой-то способ, вроде — http://ideone.com/f0RQrR (сегфолт выдаёт, хотя на СО кто-то упоминал). Конечно, можно PyArg_ParseTuple(args, "(ddd)", &array[0], &array[1], &array[2]) сделать, но если я передаю прилично списков (координаты точек, задающих плоскость и прочие вектора для рейтрейсинга, например), то фукция во много нечитаемых строк выльется).
И хули? except socket.gaierror: print ("ololo") не робит. Возвращает тоже самое.
http://ideone.com/eup4ll
(smtplib.socket на скриншоте можно заменить на socket, если вручную импортировать в своём скрипте.)
Где-то ты не там эксепшн ловишь.
Задача: заставить включать/выключать Raspberry PI светодиод через HTML-страничку. Запросы посылаются напрямую через HTML, обрабатываются через CGI с помощью скрипта.
Какого хуя выскакивает
192.168.1.2 - - [31/Aug/2015 02:40:05] "POST /cgi-bin/form.py HTTP/1.1" 200 - : Нет такого файла или каталога
...и ничего не работает? Права доступа изменял, стоят 777.
Только что попробовал такой же скриптик, всё работает.
Кстати перед тем как выводить 'LED if OFF' тебе надо вывести
print('Content-type: text/html\n\n')
А права на папку правильные? Из того каталога запускаешь?
LED if OFF и pass-ы - это зарубленные куски тестового кода. Прошляпил в три ночи. Думаю, они не имеют значения тут.
Права на папку - 777. (с рекурсией)
Каталог виден из терминала (надеюсь что тот, лол).
Ты ебнутый? С таким подходом можешь никуда не записываться.
У тебя короче проблема не с cgi.
Попробуй запросить файл которого реально нет будет выдавать код 404, а не 200.
Сам cgi скрипт у тебя запускается, но выдает ошибку какую-то.
Ну вот. Попробуй этот свой скрипт не через бразуер запустить а так, посмотри - он ошибку выдаст.
Хм. Короче когда запускаешь вебсервер этот через sudo - у скрипт выполняется от UID 65534(должно быть 0 для рута). Видимо так сделано с точки зрения безопасности.
Так и есть
https://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandler
> Note that CGI scripts will be run with UID of user nobody, for security reasons.
Короче я советую просто взять и написать код унаследовавшись от SimpleHTTPRequestHandler b т.п. cgi не использовать
Альтернативный способ
Отредактируй /usr/lib/python3.4/http/server.py
Сделай чтобы функция nobody_uid возвращала 0
или
Убери строку os.setuid(nobody)
или замени её на
os.setuid(0)
Тут какая-то мутная тема. Не запускается даже тот скрипт, который должен работать и без рута. Абсолютно та же ошибка при том, что на винде код работает отлично.
Похоже проблема в том, что я накатывал пайтон 3.4.2 собирая его (в репах нет нового). Может криво установился. Других вариантов не вижу. Спасибо за помощь, Анон!
А что? Можно хоть на баше сайты клепать.
И кстати почему все накатывают свои протоколы, если есть FastCGI?
При том, что синхронное-cgi-процессо-говно нинужно, когда есть верное решение для io задач.
Тяжёлые задачи, ака воркеры в кластере, ты будешь делать на синхронном-процессо-говне, чтобы если грохнется один процесс, остальные остались живы.
Ну таки я ж тебе о том же. Асинхронная морда и синхронные воркеры под капотом.
Ну так и ты начал с асинхронности/синхронности когда я заговорил о протоколах.
Всё правильно. Велось обсуждение cgi-говна. Я намекнул, что это плохое решение.
Технически да. Оно неэффективно из-за постоянного перезапуска процесса. Но зато оно позволяет вчерашний хелловорлд превратить в вебсервер. И полезно нубам, дабы они узрели что их любимая джанга никакой особой магии внутри не делает.
Смотря для чего. Мигнуть светодиодом на rasberri pi сойдет.
Надо инструмент под задачу выбирать.
Нахуя вот для такой ерунды твой asicio? Ты ещё для celery туда прикрути.
Вот как этот if в 3 строке определяет что надо пихать в print 4 строки? Ведь 2%2 = 0, как и 4%2 = 0, так почему же он пихает туда именно 4, а не 2? Да, я тупой.
https://ideone.com/FaMIWe0
Кто мне внятно напишет условие, я сижу вникнуть нифига не могу в него, хочу решить задачу, а не пойму что хотят от меня.
Предствь, что сейчас время 1:02. Предположим, что ты Катя, и засыпаешь мгновенно. Хочешь поспать 480 минут (8 часов). На какое время нужно поставить будильник? 9:02.
И не слишком ли это много на одну строку кода отводить 256 мегабайт памяти и 5 секунд времени?
Понятно, спасибо. снова надо возиться с этой математикой по часам :< ненавижу
Использовать какие-либо встроенные функции для столь примитивных задач — так себе идейка, по-моему.
Я тупой, с часами разобрался, с минутами нет и в итоге скатал как минуты делать, наверное из-за того что не спал долго и только вернулся домой я повел себя по свински и скотски и списал.
x = int(input())
h = int(input())
m = int(input())
c = (x // 60 + h + (x % 60 + m)//60) % 24
print(c)
print((x % 60 + m) % 60)
Использовать велосипеды когда есть встроенные функции которые работают быстрее и с которыми работать удобнее - так себе идейка. За такое убивают нахуй.
>% 24
В условии же дана гарантия, что проснётся в тот же день, т.е. время не будет больше 24 часов (x + 60h + m < 1440)
>(x % 60 + m) % 60
Это они такое решение предлагают? Нафиг х %60 делать, еслить (x + m)%60 даст тот же результат?
Ну и с часами тоже можно упростить.
>(x % 60 + m)//60
x = 130, m = 40
130%60 = 10
10 + 40 = 50
40 % 60 = 40
Однако, (130+40)%60 = 40.
Да и незачем сначала высчитывать часы от х, потом минуты от х и м, которые переводятся в часы. Можно же сразу часы от суммы м и х.
>>537581
Цель этих задач — в обучении, а не достижении результата. Не только с языком познакомить, но ещё и какие-то основы мышления заложить.
Если новичок сам не может написать (h + (x+m)//60), (x+m)%60, а вместо этого будет использовать какие-нибудь to_hours(480+m+h60), to_minutes(480+m+h*60) (а то и вообще date(h,m).add_minutes(x)), то он же нихуя не поймёт, как это всё работает, и застопорится на следующем простом задании типа сортировки по какому-то заданному ключу, как товарищ из джаваскрипт треда.
Допустим, в этой задаче он не написал бы излишнее количество операций, если бы либы использовал, но в сложной задаче он бы таким же образом нагородил излишнее количество встроенных функций, потому что не до конца понимает, что происходит. А сразу со сложного же начать нельзя, наверное.
Так что, с велосипедами ты промахнулся, мы не о самопальных методах сортировки для использования в продакшне интерпрайз и на втором питоне обязательно, тут говорим, а о пяти, блин, операрциях на всё решение.
Дващ pycharm при любом коде выдает ошибку Process finished with exit code -1073741511 (0xC0000139)
хз че делать все перепробовал
В общем-то сойдет. Если идея будет развиваться дальше, то самое страшное, что может вылиться из использования CGI - гроубокс или какая-нибудь система "умный дом" в миниатюре.
а скорее всего я ничего интересного не придумаю и мигания светодиодом хватит с головой
Лол, но в этих операциях нет смысла, они ничему не учат. Достаточно запомнить PEMDAS и всё. Его все школьники знают старше 5го класса
Для сравнения посмотри какой-нибудь CS61A от Беркли, там такую хуиту не делают, зато охуенно учат использовать функции и всё такое. Курс основан на SICP
Карочи, я нихуя не согласен. Лучше пусть LPTHW почитает и оттуда задачки поделает, полезнее будет.
Я ПЕРЕУСТАНОВИЛ ПАЙТОНЫ А ВСЕ РАВНО НИЧЕГО НЕ РАБОТАЕТ КОКОКО помогите. мне срочн надо в ближ дни прожить.
>(...){1,20}
Находит от 1 до 20 повторений того, что внутри скобок. А внутри у тебя там
>[a-zA-Z0-9\.-](звёздочка)
Которое все 100 символов и ловит.
Алсо, re.match и так ищет только с начала строки (в отличие от re.search), так что ^, по-моему, излишне.
Ага, спасибо.
Я обучаюсь тому, что мне удобно сделать на своём нано-проекте (если его проектом можно будет назвать). На крупных проектах этот вариант будет так же неуместен, как и применение мощных средств для дёрганья одним светодиодом и парочкой моторов.
Читай в доках, может есть чо
Это копия, сохраненная 26 сентября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.