Кто напишет скрипт HoholCounter3000, который сможет принять любой тред из /po и подсчитать количество в нем хохлов?
>>334672
$1 - html-файл с тредом
grep -o "ua\.png" $1 | wc -l
>>334695
Это количество постов из укроайпи, некоторые из них могут быть написаны одним и тем же человеком.
>>334669
Хочу учиться для фана программированию. Питон подойдет в качестве первого языка? Что он может, почему PHP чморят, какую литературу почитать? Заранее спасибо.
>>334700
Тогда заодно следует проводить анализ лексики, вдруг семен под проксями пишет
>>334706
Видно, что не ходишь в /пои правильно делаешь. Там же трипкоды стоят в каждого, можно их считать.
>>334705
>почему PHP чморят
Петушки думают, что сменив стек технологий на менее развитый, они сразу же окажутся у Христа за пазухой у Гвидо на хуйце.
>>334705
Нахуй тебе программирование. У тебя жена есть. Начнешь программировать, она подумает, что ты опущенец и уйдет к другому.
>>334712
PHP чморят за очень низкий порог вхождения, как результат тысячи недопрограммистов.
Просто если у тебя нет опыта, то написать гостевуху на RoR куда сложнее, чем написать её же на PHP.
В итоге МИЛЛИАРДЫ недолюдей начинают с ПХП и на нём же остаются. Как результат работа практически только на этом дерьме, на RoR, Django с этим похуже. Но как языки тут даже не обсуждается PHP явно проигрывает обоим вариантам.
>>334708
Хожу. И прокси менять никто не мешает
СЛАВА УКРАЇНІ!
>>334739
Это же тупейший стереотип. Ну вот чем пхп легче? На пистоне то же самое решение будет гораздо лаконичнее, проще и понятнее. Да даже блядь Spring проще и понятнее чем эта параша.
>>334739
>PHP чморят за очень низкий порог вхождения
Вся суть недостатков языка
>RoR, Django
А выбирать то и не из чего, будем кушать что положили
>>334752
Нет ничего легче php. И вообще php это как haskell, только лучше. Учится за вечер и позволяет программировать не задумываясь ни о какой хуйне вне своей прямой задачи.
>>334752
>Да даже блядь Spring проще и понятнее
>Spring проще и понятнее
>Spring проще и понятнее
>Spring
>проще и понятнее
Может, мне хотя бы здесь расскажут, а для чего вообще нужна Пружына?
>>334739
>RoR
Говно же, песочница для детишек. Особенно active record. Да и остальное не лучше. Пластиковая цветастая игрушка для дегенератов.
А php, ну, все эти стереотипы - десятилетней давности. Погуглил бы phalcon, что ли.
мимо-промышленная-пхп-хайлоад-макака
>>334766
PHP это бейсик 21 века.
Раньше плевался с него, потом попробовал - ощущения когда пара строк работают точь в точь как от бейсика.
И да, я писал и на асме и на лиспе и на ML.
>>334773
>PHP
>я писал и на асме и на лиспе и на ML.
Т.е. в свободное от написания факториалов время ты пишешь на пыхе?
>>334705
Ребя, ответьте по питону, а не срите на пых. Тред же о питоне. Насколько он хорош, области применения, перспективен ли. Хочу написать прогу по регистрации документов, реализуемо ли на питоне?
>>334781
>Ребя, ответьте по питону
Начинай с The Haskell School of Expression дальше читай Typeclassopedia (http://www.haskell.org/wikiupload/8/85/TMR-Issue13.pdf), дальше статьи по ссылкам в тайпклассопедии, викикнигу (http://en.wikibooks.org/wiki/Haskell), а точнее отдельные главы. Ну и вики на haskell.org.
Некоторые няшечки могут посоветовать Душкина (беги от этой книги, как от чумы), Грема Хаттона или "Изучи себе хаскель во имя великой справедливости" - не слушай их, только напрасно потратишь время.
Ну а после изучения нормального языка программирования уже сам решишь, нужен ли тебе этот самый питон.
>реализуемо ли на питоне?
Всё реализуемое в теории, можно реализовать на практике на любом тьюринг-полном языке с вводом/выводом. Хоть на брейнфаке, хоть на malbolge, блядь. Поэтому при выборе инструмента ставить вопрос не в реализуемости, а в объёме ональной ебли для достижения результата.
>>334772
Десятилетней давности? Нет.
Представь вот 9-классника, который хочет обмазаться программированием и написать новую соц. сеть, убийцу ВК. На пхп он просто возьмет и начнет писать свой быдлокод, вот просто, ничего не изучая возьмет и начнет писать <? echo "Hello, world!" ?> и т.д.
А теперь представь же этого 9-классника на RoR. Буквально в первую же неделю ему предстоит знакомство с роутами, MVC, моделями, миграциями, OOP и т.д. И без этого он просто НЕ СМОЖЕТ писать код.
Вот про что я говорю. Я не говорю, что пхп - плохой, что на нем НЕЛЬЗЯ писать хороший код. Нет. Но порог вхождения в ПХП - очень низкий и с этим глупо спорить.
На пыхе есть люди, пишущие нормальный код. И его там можно писать(ну почти). Но основная масса...
>>334781
Удваиваю няшу, упомянувшую Тьюринг-полноту. Практически на любом языке ты можешь написать все что угодно.
Ну а вообще язык нужно выбирать конкретно под задачу, а если ты просто учишься пограммировать, то тут язык не важен. Насколько он хорош - смотря что тебя интересует в языке. Для меня вот немалую роль играет синтаксис, но многие с этим не согласятся.
Перспективен ли? Сложно сказать. Думаю что да, но не насктолько как D. IMO, D - самый перспективный язык. Где-то рядом Go & Rust.
Я тут не удержался и состряпал пасту про пых:
http://pastebin.com/u7rvgnEp
>>334772
Немного припекло от сравнения. Хотя васёк просто убог, дело там не в простоте.
>9-классника, который хочет обмазаться программированием и написать новую соц. сеть, убийцу ВК. На пхп он просто возьмет и начнет писать свой быдлокод
поделом
>в первую же неделю ему предстоит знакомство с роутами, MVC, моделями, миграциями, OOP
В 2014-ом на голом пыхе пишут только в деревне, в сарае, с выключенным светом и в условиях полной конспирации. Иначе обоссут.
>>334788
В 2014 на голом пыхе пишут 9-классники, которые на этом пыхе потом еще лет 10 писать будут. И дело именно в этом, во всем остальном пых - тот же RoR, Django.
Найти на RoR программиста, который элементарно не знает как бинарное дерево работает - сложно. На пыхе каждый второй такой.
>>334792
Пишут то пишут, только на работу их никто не берёт. Я сам недавно еле пролез, базарю.
>>334793
Это пока он 9-классник его не берут, но через лет 5, он уже джуно-синьер с 5 годами опыта.
Естественно, в нормальную компанию его не возьмут, но в какую-нибудь быдло веб-студию, работающую на джумле, он идеальный кандидат. Ну или фриланс. Выучит какой-нибудь вордпресс и понеслось.
>>334792
>во всем остальном пых - тот же RoR, Django.
>Django
Да, но это не как что-то хорошее.
>RoR
Симфони более менее похож, но все равно не то. Если в RoR'е 95% бэкэнда и фронтэнда генерируются по волшебству, то в симфони для подобного эффекта придется знатно попердолиться с конфигами.
Блядь, вы заебали со своим пыхом. Поймите уже, есть только один язык программирования и это Хаскель. Плюс еще пару хипстеров-долбоебов, которые пишут на Go, D и ML, но это просто от того, что у мозгов у них пока маловато, и еще Агда, но на ней пишут идейные виабушники, потому что реальной инфраструктуры нихуя нет и нихуя полезного на ней не напишешь. Любое реальное программирование сегодня - это Хаскель и только Хаскель. Конечно, хаскеллисты должны как-то зарабатывать деньги, поэтому на работе пишут на C++, Джаве и даже на PHP, но разве это делает их менее хаскеллистами? Поэтому оставьте уже в покое пэхпэёбов и рабиёбов, каждый дрочет как хочет, это его личное дело. Разница между говном и мочёй только в денежной компенсации и каждый хаскеллист выбирает то, что его лично устраивает.
как стать успешным python-ентерпраиз-программистом?
поделитесь секретами успеха, pythonрасы
>>334803
Да хуле ты понимаешь в танцевальной попсе? http://ololo.fm/search/Allan+Z+Ft+Mafie+Zouker/You+Want+To+Make+Me+Crazy
>>334801
>один язык программирования
Вот тут-то ты и обосрался. Я ожидал, что ты скажешь про Сишечку, а ты спизданул какую-то хуйню, у меня аж монитор забрызгало. Заканчивай это. Твой хаскель бесполене и никому не нужен. Смирись.
40 постов обсирания php в треде про питон, а скрипт по учету хохлов так никто и не написал. Вся суть /pr.
>>334783
задрот безработный со знанием цацкеля.
ты шо ле?! ну ка съебнул на парашу со своим цацкелем
>>334801
а на вашем цацкле есть хоть какой либо софт которым люди пользуются?
вот у того же Go через 7 лет разработки уже Docker есть который расхваливают направо и налево
а чего цацкель добился за свои почти 25 лет ???
>>334784
Прошел год. В Вилларибо php-школьник написал монстр, полный говнокода и костылей со stackoverflow, был обоссан и взломан, и в итоге ушел работать промоутером за 500 рублей в день, читая блог "цукерберг позвонит", пока в Виллабаджо рубипетушок ничего не добился, но освоил с младых ногтей ооп и mvc, что в перспективе куда важнее.
>>334827
Есть реально полезный pandoc, и xmonad для пердоликов.
http://ru.wikipedia.org/wiki/Pandoc
http://ru.wikipedia.org/wiki/Xmonad
>>334801
>Конечно, хаскеллисты должны как-то зарабатывать деньги, поэтому на работе пишут на C++, Джаве и даже на PHP
Вся суть хачкеллеклована.
>>334820
Байтослесарь закукарекал.
Это доска о программировании, а не о перекладывании кирпичиков, императивное ты быдло. Так что пиздуй обратно под шконарь, пока благородные господа опять не нассали тебе в ротешник.
>>334801
>которые пишут на Go, D и ML
>тьюринг-полнота
с первых слов было понятно, что это кукарека программирующий на википедии
>программирование сегодня - это Хаскель
Too many perdoling. Подходит, пожалуй, действительно только бывшим C++-никам. Ради +20тыс к окладу или даже 2x зарплаты здоровый человек не будет читать этот криптокод. Ещё это наполовину академический язык, т.к. язык из которого после опробации фитчи растаскиваются по майнстримам.
>>334866
>Too many perdoling
Ниасилил
@
Кукарекай
>криптокод
Вообще пушка.
>>334865
Это доска о комбинировании кирпичиков, а не о их перекладывании.
>>334866
Пердолинг неисчисляемый. Правильно: too much perdoling.
>>334866
а что в хакселе тоже над писцать (+ 2 1) как в лиспяре?
имхо дебилизм
>>334906
нет, дурачок. в хаскеле очень легко объвлять и использовать инфиксы
>>334788
Пофиксил тебя: http://pastebin.com/xaUxDYTz
Nokogiri::HTML(open("http://2ch.hk/po/res/3835173.html")).css("span[class='postername']").select{ |n| !n.css("img[title='ua']").empty? }.map { |n| n.css("span[class='postertripid']").text }.uniq.count
>>335083
Ну и читабельная версия
require 'nokogiri'
require 'open-uri'
puts Nokogiri::HTML(open(ARGV[0]))
.css("span[class='postername']")
.select{ |n| !n.css("img[title='ua']").empty? }
.map { |n| n.css("span[class='postertripid']").text }
.uniq
.count
>>334828
Не знаю как с RoR, но логика твоя понятна. Вот другая строно: php-школьник посидел два месяца за учебниками и пошёл набирать текст под диктовку за 5к, но уже зарабатывает себе на интернеты и доширак. Тем временем школьник, которого нагрузили паттернами, насильственным ООП или не приведи господь теорией категорий - послал всё нахуй и ушёл продавать телефоны в магазин. Прошло 10 лет, php-макака испытал всю историю программирования на своей шкуре и теперь кукарекатет за haskell в pr, в то время как второго школьника сократили из магазина телефонов и он пошёл читать учебники по php...
>>335482
>паттерны
>ооп
>теория категорий
>моча
>говно
>математика
>>335482
>Прошло 10 лет, php-макака узнала про node.js и теперь кукарекает на петухабре.
поправил тебя.
>>335484
еще один "штобы сайтами в попец пороца мотиматека нинужна!!!11адин"
Вообще у пайтона в pr достаточно горькая судьба. Вроде и треды есть, и люди пишут, и спрашивают постоянно. С другой стороны он всегда в стороне. В отличие от RoR, PHP, Java. А мне этот язык очень нравится. И хоть я вижу его недостатки. Да, он медленный, да его практически не используют, но все же он мне по нраву. Может потому что он первый, который я изучаю вплотную. Краткое знакомство с джавой, си и пхп не затянули меня. Почему даже языки, появившиеся после питона используют скобки для блоков и точки с запятой? Это ведь так нагружает код ящитаю.
>>335554
>С другой стороны он всегда в стороне
В стороне от чего? От срачей? Это наоборот хорошо.
>>334672
Написал на js, это мой первый опыт. Не совсем учёт хохлов, но близко.
http://userscripts.org/scripts/show/416118
24 числа курс по питону. Записывайтесь.
https://www.coursera.org/course/interactivepython
>>335608
Я в закреплённом спрашивал, мне никто не ответил, спрошу тут:
решил оторваться от дрочки алгоритмов и поиграться немного с простенькими, но реальными программами. В основном думаю сделать уклон на лепку интерфейса, работу с графикой (какие-то простенькие игры), взаимодействие с вебом (парсинг всякого говна и работа с веб-интерфейсами). Так вот, есть два стула: Java и Python. Что посоветуешь выбрать по критерию "хорошо для новичка в программировании в плане обучения" и по критерию "есть хорошие библиотеки в данной области"? Python я знаю лучше, писать на нём быстрее, однако как мне кажется в нём сложнее организовать код (чего я в общем-то и не умею), динамическая типизация (думаю, это плохо для обучения), и не уверен в наличии нужных библиотек (для игор). С другой стороны в инфраструктуре джава с его проектами, сборками и прочим легко запутаться, из-за обилия информации разного качества и свежести бывает тяжело что-то найти.
Навыки программирования на питоне мне всё равно не помешают, т.к. его можно широко применять для всякой мелкой автоматизации. С другой стороны надо бы выучить нормально хотя бы один язык, на котором потом я хотел бы работать, а это явно не питон.
Пока взялся читать Dive into python для разогрева, но вот задумался.
>>335620
Python.
Ты в каком треде написал, паря? На какой ответ рассчитывал?
>>335604
Проходил этот курс год назад, был совсем зеленью. Охуенный курс, базарю.
>>335630
Что с графоном и играми? Смотрел pygame - говно какое-то. Может кто-то писал на питоне и ответит, на таких людей и рассчитан вопрос.
>>335642
Ну World of Tanks на пайтоне сделан. Он также привязан неплохо к Блендеру и Майе вроде. Я сейчас делаю игру на kivy. www.kivy.org
>>335620
Лепка Интерфейсов - джава (а лучше сишарп)
Работа с графикой - тут наверное пофиг, бери питон
парсинг веб говен - питон
сайты - питон (джава слоднее, но платят боЛьше)
Разве в PEP8 не сказано, что можно называть переменные camelCase'ом? Зачем некоторые называют их var_name? Ведь функции также записываются! Или я неправильно запомнил/прочитал и не рекомендуется использовать camelCase?
https://www.coursera.org/course/interactivepython
Послезавтра начнётся.
>>337126
>Function names should be lowercase, with words separated by underscores as necessary to improve readability.
>mixedCase is allowed only in contexts where that's already the prevailing style (e.g. threading.py), to retain backwards compatibility.
Аноны, вопрос наверное глупейший. Но я даже не знаю как это гуглить. У меня есть скрипт, который нужным мне образом изменяет данные(т.е. строку). Есть ли какая-то возможность сделать из этого веб-страничку, куда я буду вводить данные и получать измененную строку?
>>337199
Ставь nodejs. Напишешь в несколько строчек сервачок, который будет принимать строку и выдавать результат, потом напишешь простенькую страничку-клиент. Есть ещё проще пути, но это и так достаточно лехко.
>>337199
Можешь поссать в глотки предыдущим двум помощникам: http://flask.pocoo.org/
>>337137
Черт но это так убого - называть переменные с подчеркиванием.
сажа
Посоны, поясните, чем пиздат Питон, а чем нет. Его часто хвалят как простой и мощный, но хуесосят джаву и похапе. Если Питон такой охуенный, почему он не так сильно распространен?
>>334705
Ну так на Python написано большое количество крутого софта, в т.ч. системного. Т.е. можно и для WEB-писать, и для всяких *nix-систем - сейчас Python в них из коробки обязательно присутствует. А вот сфера применения PHP - только Web. В связи с этим под Python писано >9000 разных модулей, есть отличный репозиторий всех этих библиотек - PyPi. PHP PEAR конечно тоже есть, но в Python установка дополнительных либ сводится к банальному pip install %название_модуля%, в то время как в PHP часто приходится выёбываться.
Сам долго писал на PHP, прочитал много книг, сейчас поддерживаю несколько проектов на Python. Я тебе честно говорю, я не срал сегодня вообще код на Python читается гораздо легче, поправить пару проблемных мест в модуле, который видишь первый раз в жизни можно за считаные минуты, в то время как в PHP часто приходится ковырять весь проект, чтобы ничего не поломать.
Почему у парня с оппика подтяжки цветов флага ЛГБТ? Содержится ли здесь какой-нибудь подтекст?
>>337214
Ебаный комбайн.
http://bottlepy.org/docs/dev/index.html
Подойдет ли питон как первый язык программирования?
>>342348
Да, вполне. Я даже всем его рекомендую как первый язык. Не знаю правильно или нет, ну похуй. -_-
Парни, помогайте. Кто работал с pyramid? Либо с velruse.
>>342348
Лучше Wolfram
Wolfram
>>342348
Начинай с крестов, базарю, после них любой язык - конфетка.
>>342450
Стиви любит рассказать, какой у него охуенный язык имеется (и тащемта во многом прав), и вообще всячески двигает тазом, рассказывая о вещах, которые касаются его самого, но есть нюансы.
Если говорить об освоении императивного программирования, то в Математике оно выглядит как говно. ООП там просто нет - т. е. не получится даже посмотреть, что это такое. А вот на ФП в питоне взглянуть получится (http://pypix.com/python/functional-programming/ ).
На PyCon US кто летит, петуханы?
>>342477
> взглянуть
Одним глазком и через замочную скважину.
>>342536
используется для всякого говна, не критичного по скорости работы
>>334669
Анон, что скажешь о Django? Сложный ли для изучения фреймворк? Что надо предварительно знать?
>>342639
Я посмотрел на джангу, охуел, и решил, что ну его нахуй. Выучил bottle за вечер, доволен как питон. Советую. И еще монгой отполировать.
>>342654
> монгой отполировать
MongoDB?
> bottle
Что за фрейм? Можно поподробнее?
>>342658
>MongoDB?
Ага. Прочитай The Little MongoDB Book, быстро разберешься.
>Что за фрейм? Можно поподробнее?
Микрофреймворк в одном модуле.
http://bottlepy.org/docs/dev/index.html
Еще с Twitter Bootstrap разберись, и вообще хорошо будет.
>>342639
много магии, поэтому для начала будет сложно, но боттле или фласк не годятся для крупных проектов
>>342664
Что-то как-то не впечатлило, но по монге спасибо за информацию.
>>342667
А по джанге надо хорошо знать html, css? Стоит ли использовать что-то вроде этого? https://pypi.python.org/pypi/django-twitter-bootstrap/
>>342667
>боттле или фласк не годятся для крупных проектов
Ну так начинать же все равно с мелких проектов придется.
Хочу пересесть с PHP на Python. Стоит ли? Какие профиты? Работа есть вообще?
>>342685
Хотя, ты действительно на мой ответил.
Пора отлипнуть от монитора, лол. Пойду прогуляюсь.
>>342684
>Какие профиты?
Будешь знать второй язык
>Работа
Поэтому больше вакансий тебе подойдёт
>>342674
надо знать минимум, в идеале - верстать на бутстрапе, всё остальное упрощение для тех, кто уже и так знает.
>>342674
Самодельный сайтик с регистрацией и бутстрапом, сверстанный по примерам http://getbootstrap.com/getting-started/#examples плюс небольшой курс http://try.jquery.com/ за пару-тройку недель отлично раздупляют по поводу хтмл и ксс, например.
>>342477
> ООП там просто нет - т. е. не получится даже посмотреть, что это такое
troll_mode = True ООП это прошлый век. На вольфрам можно программировать как в Стартреке, посредством естественного языка. Программисты больше не нужны, на вольфрам может программировать каждый (кто владеет речью).
>>343049
Что характерно, ты речью не владеешь, потому что способен просклонять слово вольфрам
>>343053
И где именно я просклонял слово "вольфрам"?
Просто скажи что бомбануло, не стесняйся.
Какого хуя так мало работы для питона? Блядь, ебаные Похапе и Джаваскрипты, заебали вкрай.
>>343049
> На вольфрам можно программировать как в Стартреке, посредством естественного языка.
http://www.wolframalpha.com/input/?i=anus+vs+jupiter
Смотри, анон, какую хуйню сделал. Как можно сделать более изящнее?
http://www.codeskulptor.org/#user29_VDrVWEOXwaqNxd1.py
>>343364
И што это, лол?
Guess the number between 1 an 100
Lower
You entered: 50
Guesses remains: 6
Lower
You entered: 25
Guesses remains: 5
Lower
You entered: 12
Guesses remains: 4
Lower
You entered: 6
Guesses remains: 3
Lower
You entered: 3
Guesses remains: 2
Higher
You entered: 1
Guesses remains: 1
You lose!
New game started!
Guess the number between 1 an 100
Последней цифрой я ввел двойку.
Анончики, собрался угореть по пистону. Стоит ли разбираться во второй ветке или сразу учить 3.x?
Слышал, что большинство сидят на втором пистоне и разные хорошие библиотеки есть только нём, это же пиздец, задержка в развитии, почему так?
>>343896
Именно потому, что
> разные хорошие библиотеки есть только нём
все пишут на второй ветке, соответственно для неё ещё больше разных хороших библиотек. Плюс всякие PyPy и stackless 3.x ещё не полностью поддерживают, например. Ну и многим не нравится форсированный юникод.
Питонисты, поясните за ооп.
Объект обязательно должен присваиваться переменной? Или может быть анонимным как функция?
>>343962
>Питонисты
Блядь, не заметил. Сьеби со своим быдлоговном нахуй.
Аноны, извиняюсь заранее за тупой вопрос, но может ли питон использоваться как средство для разработки клиентской части браузерной игры?
И еще один: насколько плох питон для разработки игры на андройд?
>>343990
Медленноват же. Вот если бы он умел транслировать в джаваскрипт на лету (типа jit), тогда был бы охуенен, пожалуй. Есть PythonJS, хотя он и несколько ограничен. Но для него вроде не завезли source maps, поэтому еботня с отладкой. Лучше уж не выебываться и писать на coffeescript.
зачем нужен питон, когда есть дг?
Вот вы где.
У меня есть парочка вопросов.
1. Как из программы на C/C++ вызвать функцию на Python? 100% можно. Но как?
2. Как обернуть в декоратор метод, но чтобы сама функция декоратора принимала параметр self? Только через двойное обетование?
>>344053
http://pyos.github.io/dg/
>>344052
>Как из программы на C/C++ вызвать функцию на Python? 100% можно. Но как?
https://docs.python.org/3.5/c-api/veryhigh.html
>Как обернуть в декоратор метод, но чтобы сама функция декоратора принимала параметр self?
http://ideone.com/2SXxYQ
>>344054
Второй, я честно, видел, но я не понял.
Например PyQt из коробки умеет как-то переопределять виртуальные функции классов, подменяя реализацией на питоне сишную реализацию.
Третий - мне в функции yoba (которая и есть декоратор) использовать self хотелось.
Сейчас перехотелось, но вопрос остался.
>>344058
Не та ссылка. https://docs.python.org/3.5/extending/extending.html#calling-python-functions-from-c
>Третий - мне в функции yoba (которая и есть декоратор) использовать self хотелось.
Как ты его исползовать будешь, если на момент вызова ебы не то что инстанса, даже класса еще нет?
>>344059
Понял.
Тупой вопрос, кинул в корзину.
Еще вопрос. Как грамотнее реализовать что-то подобное enum?
Нужно именованное перечисление, собственно для тех же целей, что и в других языках.
Сейчас делаю просто набор глобальных переменных
line = 0
solid = 1
Но это не очень удобно.
и так далее...
>>344062
>Еще вопрос. Как грамотнее реализовать что-то подобное enum?
https://docs.python.org/3.5/library/enum.html
>>344064
Во.
А если я пишу на 3.3 (просто на момент начала проекта, она была актуальна)
Стоит переходить?
>>344065
А почему нет? 3.4 обратно-совместим. (3.5 еще не вышел если что.)
Придумал себе задание, но не понимаю как его реализовать.
Задание следующее: матрицу размером А х В, состоящую из единиц, заполнить на заданный процент нулями. Единственное приходящее на ум решение это создать список длиной А*В, заполнить его на нужный процент нулями с начала, а потом перемешать. Но это уже будет не матрица.
В общем, я в замешательстве, подскажите что-нибудь.
>>343355
О, я тоже этот курс прохожу. Вчера за полчаса до дедлайна успел таки сделать.
Алсо, что скажете про codeacademy.com?
>>344124
Если тебе хочется сделать именно так, то можно работать с матрицей так, как будто это список:
def doSomethingWithMatrix(matrix, something):
rowLength = len(matrix[0])
for i in range(len(matrix) * rowLength):
matrix[i / rowLength][i % rowLength] = something()
>>344124
[kostyli]
Матрица - функция от аргументов-натуральных чисел.
Можешь обернуть список, чтобы getitem setitem etc. кортеж нужный принимали.
[/kostyli]
>>344124
>Но это уже будет не матрица.
Ну преврати в матрицу.
to_matrix = lambda xs, row_size: list(map(list, zip(*[iter(xs)] * row_size)))
>>344125
На кодакадеми прошел полностью курс. Довольно годно, базовые понятия вполне даёт.
Алсо, сейчас играю на http://www.checkio.org/
Такие-то уровни, ачивки, бэджики и прочее. И еще удобно, что есть решения разделенные по красивости, быстрости. То есть, сделал, а потом можно глянуть на красивые решения и оценить свой быдлокод.
Ребята, помогите, нужно написать функцию которая принимает произвольную длинную строку разделенных слов, на выходе должно вернуть строку, составленную из слов, присутствующих в строке ввода. Общая длина результирующей строки должна быть как можно ближе к 140 символам.
>>344828
Лол, не так давно похожую задачу задавали, только в двухмерном пространстве и с прямоугольниками.
https://en.wikipedia.org/wiki/Bin_packing_problem
Решается частичной сортировкой, перебором, отсеиванием, перемешиванием, гуглом.
Вот ещё интересный метод: http://habrahabr.ru/post/209610/
>>344828
https://en.wikipedia.org/wiki/Knapsack_problem
https://en.wikipedia.org/wiki/Subset_sum_problem
Array.prototype.maxBy = function (estimate) {
var maxItemIndex;
var maxItemValue = -Infinity;
for (var i = 0; i < this.length; ++i) {
var value = estimate(this[i]);
if (value > maxItemValue) {
maxItemIndex = i;
maxItemValue = value;
}
}
return this[maxItemIndex];
};
var knapsack = function (limit, items, options) {
var estimate = (options && options.estimate) || function (item) { return item; };
var join = (options && options.join) || function (a, b) { return a + b; };
var optimals = [0];
if (options && options.hasOwnProperty('neutral')) {
optimals[0] = options.neutral;
}
// пропущенный здеся код читателю предалагается написать в качестве упражнения!
return optimals[limit];
};
var quux = function (text, sep, limit) {
return knapsack(limit, text.split(sep), {
estimate: function (word) { return word.length; },
neutral: ''
})
};
>>344424
>Алсо, сейчас играю на http://www.checkio.org/
А есть еще подобные сайты?
>>345800
Сделать свой type?
https://docs.python.org/3/reference/datamodel.html?highlight=metaclass
или что ты имел ввиду?
>>344424
Ага, начал упарываться. Сложновато для меня, правда.
>потом можно глянуть на красивые решения и оценить свой быдлокод.
Дико печет после того как выстрадал решение в 30 строк, а задачу можно решить в одну.
>>345712
Например,
www.pythonchallenge.com
>>345820
https://class.coursera.org/interactivepython-004
Кто-нибудь пробовал использовать QuickCheck для питона? Например вот этот https://pypi.python.org/pypi/pytest-quickcheck/0.8
Как оно?
Есть функция
def define(url,url1,url2,url3):
q = browser(url)
w = browser(url1)
e = browser(url2)
r = browser(url3)
>>345974
Очень просто:
def define(*urls):
return list(map(browser(url), urls))
>>345980
Спасибо, анон :3
>>345978
Отмена. Не работает. Сейчас разберусь, в чем дело.
>>345981
Завернул функцию в лямбду, и все заработало. Не знаю, почему. Я только вторую неделю программирование изучаю, и еще нихуя не знаю.
Но этот вариант рабочий:
def define(*urls):
return list(map(lambda url: browser(url), urls))
>>345988
Без лямбды выдает ошибку:
'list' object is not callable
>>345991
Вызывать функцию как обычно, но количество аргументов может быть любым. Аргументы идут просто друг за другом:
define(url0, url1, url2)
Только этих урлов может быть сколько угодно.
А что ты пишешь?
>>345997
Парсер. Если бы ещё подсказали чем обработать js. Там прост карта генерируется джаваскриптом. Список по 25 пунктов, страницы [1] [2] [3] .. сделаны на жс, [1] <-- это прост функция, которая при событии просто меняет эти 25 пунктов на новые. Я хз как описать чтобы было понятно.
Гвидо дал им 3-й python. Ленивость, yield from, программируй! Нет, не хочу, хочу жрать говно. Передаю все аргументы сразу, чтобы последовательно их использовать. И это программисты? Мудачьё!
>>346123
Создаем функцию для создания генераторов:
def get_gen(*urls):
for url in urls:
yield browse(url)
new_gen = get_gen(url1, url2, url3)
new_gen.next()
А можно как-то аппендить итеатор? Ну, то есть, сделать так, чтобы он работал как очередь.
import collections
class yobadeque (collections.deque):
def iter(self): return self
def next(self): return self.popleft() # тут можно обработать элемент
def repr(self): return object.repr(self)
xs = yobadeque([url1, url2, url3])
xs.append(url4)
>>346148
Нет, нахуя вообще такая функция, которая просто мапает свои входные параметры? Почему не сделать так:
urls = (url1, url2, url3)
for result in map(browser, urls):
...
Помогите, пожалуйста, написать прогу, шифрующую текст. Например, а = 11, б = 12, в = 13, г = 14, д = 15, е = 16, ж = 21 и т.д.
Я совсем нуб и не знаю как это сделать. Через объявление переменных, а затем code = raw_input ("Введите текст")? И еще: как в питоне сделать какой-нибудь экзешник или типа того, чтобы инфтерфейс был юзер-френдли? То есть как перенести код в графический интерфейс? Заранее спасибо.
>>346402
Так тебе помочь, илт написать за тебя, лалка? И как ты гуй с экзешником связал
>>346412
Ну вот ты бы как реализовал это, лалка? Или вот так:
if a
print 11
elif b
print 12
elif c
print 13 и т.д.
Я имел в виду то, чтобы пользователь открыл эту прогу, вбил текст, получил шифр. Чтобы он не ебался с командными строками, powershell'ами и т.д.
>>346418
Гугли python dictionary.
А вообще, судя по вопросам - тебе ещё долго учиться.
>>346402
Просто представялешь букву в виде числа и делаешь шифт:
ord('a')-213=11
>>346402
>>> def letter_to_cipher(input_str):
if type(input_str) is str:
output = ''
for letter in input_str:
code = ord(letter)-213
output += str(code)
return output
else:
print "Input Error: not a string"
>>346402
>Помогите, пожалуйста, написать прогу, шифрующую текст
Палю годноту, только никому не показывай:
http://inventwithpython.com/hackingciphers.pdf
Как покороче записать такое в питоне:
def function():
try:
do_huita()
except():
do_another_huita
do huita()
def function():
if uslovie_pochemu_nado_provesti_podgotovitelnie_deystviya:
do_another_huita()
huita()
Как мне получить предыдущее значение итерации?
Я придумал только пихать все значения в лист, и потом доставать оттуда.
тотал ньюфаг
>>334732
Мудак чтоль? Программист куда привлекательное какого-нибудь филолога, при условии, что внешние данные у них на одном уровне
>>347112
Если тебе понадобилось получать предыдущее значение итерации - ты что-то делаешь не так.
>>> a = [1,2,3]
>>> for i, v in enumerate([1,2,3]):
... if i > 0: print(a[i - 1])
...
1
2
>>347174
А если серьезно, ты же сам описал решение без обращения к предыдущему элементу итерации.
[a + b for a, b in zip(arr, arr[1:])]
zipWith (+) x (tail x)
динамикоукраинцы так не могут
>>347203
>map (+) x (tail x)
http://ideone.com/NpP7mc
да, если хочишь с zip всё-таки, то исползуй itertools.islice, хотя бы лениво всё будет.
>>347213
>ideone.com/jPr8RE
THE -=SKOBKI=- PROGRAMMING LANGUAGE
ок
>>347239
а вот и долбоёб объявился
>создаёться копия мосива
>>347297
еси в мосиве не 2 елемента, а 2 миллиона, то ето будет не "3 такта"
>>347306
Ну так ебаный насрать, когда нужно будет оптимизировать, я соптимизирую, до тех пор читабельность кода приоритетней. Что за максимализм то.
>>347333
четабельность не пострадает, а скорее даже повисится если использовать индексы.
соптимизирует он, послушайте долбоёба, как будто сложно сразу нормално зделать. ето не просто как "я исползовал алгоритм попрощи, мало ли итак сойдёт, а еси что заменю на более сложный и быстрый", никаких плюсов вообще нет, ето ошибка. исползуй ты islice вместа обычново я бы даже не пердел в тхред.
>>347210
Ну не знаю, у меня все работает.
>>334669
А вот и вы.
Вопрос такой: Питон, SQL, как?
Что-то вразумительное по поиску называется PDO, но на на сайте проекта не могут даже даунлоад страничку содержать в порядке, могу представить, что там дальше.
Так как же жить?
>>347032
Ну вообще мне надо было исключение обработать, ну да уже неактуально.
>>347381
Что тебе нужно? Писать чистые запросы к базе через питон? python-sql чем плох?
>>347387
А о чем тебе нужно? Секунда в гугле python mysql connect
http://sourceforge.net/projects/mysql-python/
Может, тебе вообще ORM нужна?
>>347387
Да, на случай, если вдруг не очевидно.
Мне нужно из своей программы подключиться к sql серверу, например, мускулю, выполнить запрос и получить обратно результат.
Такая себе рядовая задача, казалось бы.
>>347388
Я как-то все "python sql" больше искал, с нулевым результатом.
Сажицу прибереги для кого нибудь, она тут не к месту.
>>347343
Буду говорить в твоем же стиле: а если там не сумма соседних элементов, а нечто более сложное, да еще и вложенное (Python - язык про списки, не забываем), что, тоже заебись ебля с индексами будет? i, j, k, l?
>>347429
ох говноед. какие i, j, k? суть не в итератьсии непосредствино через элемент или в итератьсии через индекс, а в ленивости. я же сказал про етот конкретно случай и добавел про islice. пойми ты уже и закрой своё тупое еблище, пока я тебе его не закрыл.
>>347495
Хотел объяснить, разжевать тебе на пальцах, о чем я говорю, но господи ты боже мой, как же я проиграл.
>пойми ты уже и закрой своё тупое еблище, пока я тебе его не закрыл.
Досвиданья
Тэкс. Я тут код написал. Не поленись, попробуй разобраться в нем как будто тебе это надо и скажи со своей колокольни что бы ты сделал по-своему.
http://ideone.com/isq8md
>>347112
а не выебываться и сделать напримерprev = None
for element in iterable:
print(prev, element)
prev = element
религия не позволяет?
Ну если уж хочется ИЗЯЩНО, тоfor element in iterable:
print(element, next(iterable, None))
результат немного другой, но смысл в общем тот же
>>347692
Ах нет, виноват, второй вариант таки не годится.
current = None
for prev, current in ((current, i) for i in iterable): print(prev, current)
>>347655
> eval
Очень плохая идея, особенно когда можно без него обойтись.
Лучше ещё немного посидеть и написать несколько классов для нормального представления алгебраического выражения, например - ввиде дерева.
Тогда, нарушая порядок вычисления, можно будет получать более инитересные неправильные ответы.
> get_*_expression
copypasta, на copypastе, copypastой погоняет..
Всю разницу можно передать в параметрах, а EASY, MEDIUM, HARD сдлать словарями.
def get_expression(truth, left, right, operators)
MEDIUM = dict(
left = (-100, 100),
right = (0,100),
operators = OPERATORS[:2],
)
get_expression(False, **MEDIUM)
>>347784
Насчет eval'a знаю что плохой тон, но вот как раз парсер не хотелось свой писать.
Второй совет мне понравился, учту.
Спасибо, что потратил время.
>>347957
Парсер то тебе зачем? Ты же выражение генерируешь, а не считываешь.
Есть один пакет.
Каким образом его можно сделать переносибельным? Просто импортить не получается, ругается на неправильные внутренние импорты, да на много что еще.
Если точнее, то его нужно использовать в Сублиме.
В питоне не шарю, просто нужно сделать быстро.
>>347655
пиздец, люди есть ещё люди которые не знают что такое комбинаторные парсеры и pyparsing в частности
Сап, антон, помоги. Расскажи как в программке на wxPython отделить код гуя от функций кнопок из того же кода. Чтобы, в общем, был модуль под функции кнопок и модуль под сами кнопки. Надеюсь понятно. Приветствуются ссылки, примеры и т.д.
>>348342
Топ кек. Конкретно в этой задаче мне это абсолютно не нужно, элитный наш.
А я сейчас сво первый блекджек реализовал на питоне.
Я, кстати, всегда думал, что блекджек - это такая дубинка, которой сутенёры шлюх воспитывают, и которую во всяких БДСМ-игрищах используют. А оказалось, что это такая карточная игра.
Век живи - век учись.
>>350391
Последней сентенцией рассмешил, братишка.
Код то будешь показывать?
Подумал тут про онлайн-казино. Где можно почитать об их юридическом регулировании?
Антон, как кошерно удалить из стринга определённые символы.
пока что я делаю это к примеру из цепочек replace('x','')
то, что это пиздец как не круто, мне становится уже понятно
после трёх replace подряд. накрутил свою функцию:
def revome(self,chars):
... s = self
... for c in chars:
... s = s.replace(c, '')
... return(s)
>>350587
def remove(self,chars):
return(''.join(list(filter(lambda x: x not in chars, self)))
>>350593
как будет выглядеть для таких символов '#','*','(',')','=' ?
from functools import partial
import re
def mk_replacer(chars, replace=''):
expr = '[%s]+' % re.escape(''.join(chars))
return partial(re.compile(expr).sub, replace)
remove_junk = mk_replacer('#*(),=?')
>>> remove_junk('#te*s(t) re,m=o?ve')
'test remove'
>>350595
Алсо, зачем представлять строку как лист, а затем объединять. Можно ведь так:
return filter(lambda x: x not in chars, self)
Или это такая толстая шутка?
Аноны, посоветуйте хорошо написанные проекты на сабже, исходники которых можно найти где-нибудь на гитхабе. Хочу научиться читать чужой код и перенять всякие кошерные паттерны.
>>350619
Ещё это можно легко обобщить до работы со строками:
from functools import partial
import re
def mk_replacer(chars, *subs, replace=''):
subs = subs + (chars,) if subs else chars
expr = '(?:%s)+' % '|'.join(map(re.escape, subs))
return partial(re.compile(expr).sub, replace)
>>350656
>>> def remove(self,chars):
... return filter(lambda x: x not in chars, self)
...
>>> remove("asdf","a")
<filter object at 0x7fd38b0be510>
>>>
>>350726
у тебя какой-то неправильный питон
http://www.codeskulptor.org/#user31_VSTW3IpAL0_0.py
Недавно начал разбираться с питоном и наткнулся на такую херню.
Предположим есть два модуля.
В первом:
from vtoroy import *
dwach = 0
def nomadota1():
print(dwach)
return
nomadota2()
nomadota1()
from perviy import *
def nomadota2():
dwach = 20
>>350991
Ок, добавил глобал dwach. Ничего не изменилось.
В первом:
from vtoroy import *
dwach = 0
def nomadota1():
print(dwach)
return
nomadota2()
nomadota1()
from perviy import *
def nomadota2():
global dwach
dwach = 20
return
>>350999
http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python
http://stackoverflow.com/questions/6351805/cyclic-module-dependencies-and-relative-imports-in-python
http://effbot.org/zone/import-confusion.htm
> При выполнении первого модуля
начинает выполняться perviy модуль.
* from vtoroy import ж
начинает выполняться vtoroy модуль.
** from perviy import ж
Хотя perviy модуль ещё не закончил выполняться, его имя уже попало в кеш, поэтому второй раз он не выполняется.
А так как он только начал выполняться - он ещё пустой и из него ничего не импортируется.
** def nomadota2(): global dwach; dwach = 20
Определяет замыкание nomadota2, в модулe vtoroy.
** vtoroy модуль закончил выполняться
* dwach = 0
Определяет имя dwach, со значением 0, в модуле perviy.
* def nomadota1(): print(dwach)
* nomadota2()
Вызывается замыкание nomadota2, из модуля vtoroy
** global dwach
Так как nomadota2 определена в модуле vtoroy, global ищет имя dwach в нём.
** dwach = 20
Так как имя dwach, в модуле vtoroy, не определено - оно создаётся со значением 20.
** замыкание nomadota2 закончило выполняться
* nomadota1()
Вызывается функция nomadota1
** print(dwach)
Имя dwach, в nomadota1, не определено. Поэтому оно ищется на один уровень выше, там где nomadota1 была определена - в модуле perviy. Там имя dwach определено со значением 0 - print печатает ноль.
** функция nomadota1 закончила выполняться
* perviy модуль закончил выполняться
>>351010
Почитал, суть вроде понял, но не понял как избежать этой ситуации.
>To fix this, either refactor your program to avoid circular imports (moving stuff to a separate module often helps), or move the imports to the end of the module (in this case, if you move import Y to the end of module X, everything will work just fine).
Переменную dwach выносил в другой модуль - то же самое. Вызов from vtoroy import * переносил в конец - не помогает.
>Вызывается замыкание nomadota2, из модуля vtoroy
** global dwach
Так как nomadota2 определена в модуле vtoroy, global ищет имя dwach в нём.
** dwach = 20
Так как имя dwach, в модуле vtoroy, не определено - оно создаётся со значением 20.
Но если я определю from perviy import nomadota, он все равно ее не увидит?
>>334669
Анчоусы, какой редактор понимает разницу между #!/usr/bin/env python | pypy и #!/usr/bin/env python2 | pypy2 (на примере арча)? Просто заебало в Geany постоянно менять интерпретаторы. Да, python2 нинужен. Слышал.
Питонач, допустим какая-то переменная меняется в цикле, когда она меняется, новое значение надо выкидывать на формочку. Как это сделать? У меня выводит сразу значение в конце цикла, или виснет на несколько секунд, если сделать большой цикл, и выводит конечное значение.
>>351462
потоки в питон не завезли?
Task.Run(()=>
{ ...
for(var i=0;i<99999999999999;i++)
{
EbaText = i;
}
}
)
>>351462
Если ты про гуй, то надо запустить новый поток, в нем делать этот цикл, а значение переменной передавать через сигналы обратно в основной поток, и там уже делать label.setText(str(i))
.
>>351348
> не понял как избежать этой ситуации.
Обращайся к переменной явно:
import vtoroy
vtoroy.dwach = 40
Питон це Україна!
>>351637
Вот это це Україна!
Новенький врывается в тред!
Я совсем совсем нуб. Просто хочу научиться кодить для собственного развития. Выбрал питон так как обещали его простоту и доступность. Пока посмотрел пару начальных курсов. Вроде не уберсложно но возникают вопросы на которые я не знаю где найти ответы. По этому буду спрашивать здесь. Тем более специализированный тред есть. Еще раз напомню в кодинге я полный ноль.
И так первая ситуация.
Я хочу что бы цикл запускался через равные промежутки времени определенное кол-во раз. По завершению каждой итерации не знаю как правильно все называется пока но надеюсь понятно пользователь должен ввести данные. В зависимости от того что он ввел повторение цикла прекращается или продолжается до набора установленного кол ва раз.
Например:
Требуется ввести сколько будет 2+2
Если ввели 4 то программа завершается и выводит "ты у мамы молодец"
Если ответ введен не правильно или в течении 30 секунд ответ не был введен то требование ввести сколько будет 2+2 повторяется и так 3 раза. Если по истечению третьей итерации ответ так и не получен возвращается "Ты тупой уебок"
Как я себе это вижу:
def функию
input вопрос
if вопрос равен 4 то
print похвала
else
print констатация тупости
Примерно так. Но проблема в том что подобный код будет спрашивать только один раз. Как сделать что бы это было n раз при чем циклы повторялись через определенное кол во времени? Я так понимаю нужно куда то всобачить накопитель который будет считать циклы и будет что то типа.
n=0
while n<=3 повторить цикл
Но каким образом это присобачить к предыдущему коду я пока не понимаю. Но это полбеды. С этим я как нибудь могу разобраться. Есть подозрение что это нужно сделать через другую фунцию. Типа
def опросник
n=0
while n<=3 выполнить фунцию с вводом данных
Как то через жопу получается, но все таки хоть какая то идея.
Как таймер то присобачить? Совсем без понятия.
>>352588
Создаешь строку, в цикле проверяешь нажатые клавиши, и если это Enter, то юзер ввёл ответ, проверяешь строку на то, соответствует ли она тому, что ты ждешь. Если не энтер, то приделываешь этот символ к строке и крутишься дальше. На каждой итерации проверяешь текущее время, если оно больше чем время_перед_началом_цикла + 30 секунд, то ругаешься и уменьшаешь количество проходов на 1. Если количество проходов стало равно нулю, то выходишь из цикла.
Хотя, возможно, в пистоне есть какая-нибудь функция для тебя, которая будет сигнализировать раз в 30 секунд.
>>352588
Для твоего таймера нужно либо завести отдельный поток который через 30 секунд прервет основной поток в котором идет ожидание пользовательского ввода, либо нужен асинхронный ввод вывод как в нодежс.
Можно сделать проще но по другому: подождать пока пользователь введет ответ, и если прошло больше 30 секунд то ответ не засчитывать.
>>352596 Смотри пока у меня получилась следующая поебень.
"def загадка (n):
ответ=input(n)
попытка=0
while (int(ответ)!=4 or попытка>4):
попытка=попытка+1
print ('неправильно')
ответ=input(n)
return 'правильно'
"
Она долбит вопрос по кругу пока не получит правильный ответ. Если в IDLE вбить "загадка ('сколько будет 2+2?'". Поясни дегенерату что я не так сделал со счетчиком? У меня он просто перестает реагировать на правильный ответ после 4й итерации. Почему так получается я понимаю. Как его заставить выйти из цикла после 4й итерации? И если можно чуть поподробней с time.sleep. Как с помощью него отложить действие в цикле я понял. А как задать условие проверки?
>>352624 даже немного уточню чего я хочу. После 4й попытки он должен сказать "ты хуй" и на этом закончить с вопросами. Насколько я понимаю для этого нужно использовать if внутри цикла while. Так или нет?
>>352624
У тебя условие в цикле неправильное, надо
int(ответ) != 4 and попытка <= 4
. Тогда выйдет из цикла, если будет правильный ответ либо превышено кол-во попыток. В конце функции просто проверь, какое условие сработало.
>>352630 о спасибо огромное! В синтаксисе еще особо не разобрался всего второй день как занялся подобным.
>>352630 По итогам получилась следующая фигня. Вроде как даже работает как задумано.
def загадка (n):
ответ=input(n)
попытка=0
while (int(ответ)!=4 and попытка<=3):
попытка=попытка+1
print ('неправильно')
ответ=input(n)
if попытка>2:
print('ты глуп')
else:
return 'правильно'
>>352596
Если ты про то, что нужно вызывать sleep(01) в цикле, то хуй знает, зачем ты это спизданул. Если нет, то если пользователь введёт ответ через секунду после появления вопроса, не придётся ли ему ждать ещё 29 секунд, пока твой слип() вернётся? То есть, опять же, непонятно, зачем ты это спизданул.
>>352642 прости меня я глуп и все равно не понимаю. Все что я придумал это таймер
время=0
while (время<=5):
время=время+1
time.sleep(1)
print ('времени осталось', 6-время)
>>352644
вопрос не читай
@
сразу отвечай
Сходу пришло в голову что-то вроде этого:
http://www.codeskulptor.org/#user31_0dokOp14Dp_1.py
А по факту >>352622 кун прав. Нужно попробовать сделать треды.
>>352648
Ну потоки ты пока не осилишь, так что сделай просто проверку времени после ответа юзера.
import time
def загадка (n):
ответ=input(n)
попытка=0
start = time.clock()
while (int(ответ)!=4 and попытка<=3):
попытка=попытка+1
print ('неправильно')
ответ=input(n)
elapsed = time.clock() - start
if elapsed > 30:
return 'time out'
if попытка>2:
print('ты глуп')
else:
return 'правильно'
>>352648
Хуита это, а не таймер. У тебя будет затрачиваться 0.0033 на сравнение while (time<=5), ещё 0.0022 на time+=1, ещё 0.0011 на print. В итоге через сутки у тебя будет нехуёвая такая погрешность.
Может кто-нибудь покажет как реализовать эту хуиту с тредами? Буду благодарен.
>>352649 -кун
>>352668
Попробовал сделать треды. Оказалось что на питоне невозможно прервать тред - есть только возможность бросить KeyboardInterrupt в главном треде, но даже это не прерывает пользовательский ввод - исключение бросается уже после ввода.
Пишут что на прыщах можно сделать через сигналы или select.
Таким образом под шиндой можно сделать только через эмуляцию ввода строки как вот этот >>352592 предложил.
>>352654
> потоки ты пока не осилишь
Для этой задачи, осиливать не так уж и много.
from _thread import interrupt_main
from itertools import islice
from threading import Timer
def _timeout():
print('Timeout!')
interrupt_main
def спроси(вопрос, timeout=15):
w = Timer(timeout, _timeout)
w.start()
try:
r = input(вопрос)
w.cancel()
except KeyboardInterrupt:
r = None
return r
def загадка(вопрос, правельный_ответ, попытки=3, время=15):
задай_вопрос = lambda: спроси(вопрос, timeout=время)
for ответ in islice(iter(задай_вопрос, 'сдаюсь!'), попытки):
if ответ == правельный_ответ:
print('правильно')
return True
print('неправильно')
print('ты глуп')
return False
>>352678
ну и конечно же 'w.cancel()', на всякий случай, сразу перед 'return', а не в блоке 'try:'
быстрофикс
>>352680
УМВР.
Или что ты подразумеваешь под "работает"?
>>352678
>ввод-вывод с таймаутом
>потоки
Что за хуйню я прочитал.
>>352695
> Что за хуйню я прочитал.
Добро пожаловать в разработку под Вин Ды.
Для порядка, тут нужно ещё msvcrt упомянуть.
>>352698
Для порядка можно упомянуть что такое решение не будет работать, если хочется хуйни вроде навигации стрелочками, истории ответов и прочего readline'а. Нужна отдельная либа.
>>352727
У меня, под линь3.12, пишет Timeout и ждёт нажатия enter.
Я снова с глупыми вопросами. Как сделать цикл с вложенным циклом так что бы действия в них исполнялись по очереди.
Например таблица умножения
i = 0
while (i <= 9):
j = 0
i=i+1
while (j <= 9):
j = j + 1
результат = i * j
print (результат,'=',i,'*',j)
Как в пайтоне войти во внутренний цикл во время чтения файла, и потом выйти из него при условии?
fobj = open(filename, 'r')
for line in fobj:
m = re.find('pr', line)
if m:
тут должен быть цикл, который продолжит чтение:
r = re.find('2ch', линия)
count += 1
if если опять встречается строка, подобная m = break
>>354118
грубо говоря, мне нужно работать со строками, которым находятся между строками-маркерами.
>>354119
Вводи флаг и внутри цикла выполняй отдельную ветку, если он активен.
>>354122
А такие вещи
for line in fobj:
for line in fobj:
чтобы line продолжилась из первого цикла?
from itertools import dropwhile, takewhile
from functolls import wraps
def fnot(f):
@wraps(f)
def _f(*args, **kw):
return not f(*args, **kw)
return _f
def строки_между(начало, конец, итератор):
не_начало = fnot(начало)
не_конец = fnot(конец)
while True:
итератор = dropwhile(не_начало, итератор)
строки = list(takewhile(не_конец, итератор))
if строки:
yield строки
else:
return
for строки in строки_между(re.compile('маркер начала').find,
re.compile('маркер конца').find,
open(filename, 'r')
):
# и тут работаешь со строками ...
pass
>>354124
Вернее так:
from itertools import dropwhile, takewhile
from functools import wraps
def fnot(f):
@wraps(f)
def _f(*args, **kw):
return not f(*args, **kw)
return _f
def строки_между(начало, конец, итератор):
не_начало = fnot(начало)
не_конец = fnot(конец)
while True:
итератор = dropwhile(не_начало, итератор)
next(итератор) # drop marker
yield takewhile(не_конец, итератор)
for строки in строки_между(re.compile('маркер начала').find,
re.compile('маркер конца').find,
open(filename, 'r')
):
# и тут работаешь со строками ...
pass
>>354124
спасибо, но я пока с трудом понимаю происходящее. Буду дальше читать.
>>354131
> с трудом понимаю происходящее
Ничего сложного:
next/yield - https://docs.python.org/3/glossary.html#term-generator
takewhile/dropwhile - https://docs.python.org/3/library/itertools.html?#itertools.dropwhile
re.compile - https://docs.python.org/3/library/re.html#re.compile
wraps (тут для красоты) - https://docs.python.org/3/library/functools.html?#functools.wraps
>>354134
я понимаю, но сейчас осваиваю пайтон после С++ и перестроить мозг пока трудновато. Ну и указатели мерещатся в *args, **kwargs.
Антон, не могу просто в треды и локи.
набросай пример, как максимально четыре треда складывают два аргумента и пушут в один файл.
>>354452
немного обрисую ситуацию.
я хочу отсылать и обрабатывать несколько запросов, к примеру, 4 за секунду, а потом хоронить результаты в файл.
пока что всё связанное с сетевым трафиком, парсингом ответов и похоронами в файл у меня уже работает. осталось лишь только распараллелить.
если с локами я вроде бы начал разбираться, то как ограничить число запросов я не в курю, помогай, Антон.
>>354489
Ну ты и проблему придумал. Если бы нужно просто ограничить число потоков до макс. 4, то проблема решается семафором. Но если нужно сделать максимум 4 в секунду, тут я даже хз как подступиться. Как тебе идея сделать счетчик, и каждые 250 мс увеличивать его на 1, если он не превышает 4? И запрещать делать запросы, если счетчик = 0.
Кароч, есть два класса:
class Hui(object):
def init(self, pizda_object):
self.pizda_object = pizda_object
class Pizda(object):
def init(self, hui_object):
self.hui_object = hui_object
>>354567
Пиздец. Суть в том, что, на самом деле, я наследую оба класса от суперкласса Dzhigurda из чужого модуля dzhigurda. И в нем инит перегружен так, что должен принимать ссылку на объект класса, наследующего Джигурде.
Ебать мой хуй.
>>354570
Точнее, инит должен принимать ссылку на объект не наследника Джигурды, по задумке автора модуля.
Но мне нужно, чтобы он принимал именно такую ссылку.
>>354489
Можно вот так сделать:
from multiprocessing.pool import ThreadPool
from time import sleep
def throttled(rate, iterable):
delay = 1/rate
for i in iterable:
yield i
sleep(delay)
for результат in ThreadPool().imap_unordered(обработчик, throttled(4, запросы)):
# ...
pass
>>354597
Ну у тебя будет тупо по 1 запросу в 250 миллисекунд запускаться, независимо от всего остального, не совсем то что требуется.
>>354604
> по 1 запросу в 250 миллисекунд
> 4 за секунду
А чего ещё не хватает?
>>354489
>потоки
>I/O
Опять? https://docs.python.org/3/library/asyncio.html
Посоны, алярма!
Пишу приложение в Django. Есть класс:
from django.contrib.auth.models import AbstractUser
class ForumUser(AbstractUser):
avatar = models.ImageField(upload_to='avatars')
Если изначально таблица создаётся при помощи syncdb, то всё заебись. Если же при помощи South выполняю миграцию, то пароль юзера записывается в какой-то абсолютно непонятный для Django хэш и, как следствие, не могу залогиниться в админку. Суперюзера создаю с помощью createsuperuser. Помогите, котаны!
Хочу отправлять сообщения вконтактике используя mechanize
Вот мой код:
http://codepad.org/9zrfhXhL
Проблема в том, что все логинется, выполняется без ошибок, но сообщение нихуя не отправляется. Даже не знаю в чем тут проблема.
>>355841
Код спизжен с хабра.
http://habrahabr.ru/post/216001/
>>355837
Реквест отменяется. Дело было не в коде, а в настройках параши (она требовала номер телефона перед отправкой сообщения)
>>342639
>Сложный ли для изучения фреймворк?
Ни капли.
>Что надо предварительно знать?
Ничего, лол. Я даже Python не знал, но уже умел писать на нём. SRSLY
анон, объясни что этот код делает. может приведете такой же пример с более наглядной функцией, а то непонятно что за get_next_item, и непонятно какоеусловие должно быть истиной чтобы цикл продолжал выполняться?
>>357107
While True - бесконечный цикл
break - выход из цикла
Если item == false, то выполнится условие if not item, т.к. тело if выполняется, если условие истинно, а не ложь == истине
Какие есть библиотеки для автоматизации тестирования GUI для третьего питона? У меня гуглится только pywinauto но он для второго
посоны где можно обмазатьсягавномкакими-нибудь упражнениями по Пистону для новичков ? а то теория прёт, а практика пока на нулене считая хелло ворлд ?
>>357183
райсовский курс на курсере. там тебя научат игрушки простенькие делать.
>>357191
спс покурю. Вообще выкладывают ли лабы/методички из универов по Питону в рунете ?
>>357166
А ты меня не траллируешь? То что я видел по rational rose - это джава и бейсик.
Да и вообще, мне не нужно отдельное ide для написания скриптов, я вполне обойдусь каким нибудь нотепад++, именно библиотек нет?
Как настроить Python Launcher for Windows (Console) чтобы он не закрывался после выполнения всего что написано? Может что-то в самом коде нужно писать? Я же заебусь так запускать каждый раз
>>357997
У Лутца все ВПЕРДЕ написано, так что прежде чем писать - пролистай на пару страниц.
Делал тут сегодня домашку по алгоритмом, и столкнулся с такой проблемой.
Я представил граф в виде вложенного листа:
gr = [ ([1], [2, 3]),
([2], [1, 3, 4]),
([3], [1, 2, 4]),
([4], [2, 3])
]
Перед каждой новой итерацией алгоритма, нужно делать копию графа, чтобы избегать мутаций. Как оказалось list(graph) в таких случаях не помогает. Пришлось изворачиваться и делать вот такую хуйню:
graph_copy = [(list(v), list(m)) for (v, m) in graph]
Есть ли какой-то более элегантный способ сделать копию многомерного листа? А то я даже боюсь представить, что будет в случае более сложной структуры вложенности, чем у меня.
>>358465
Спасибо.
copy.deepcopy(x) - как раз то, что нужно!
>>358516
>deepcopy
>как раз то, что нужно!
Скорее всего нет, в подавляющем большинстве случаев создание копии мутабельных данных — признак "неправильного" алгоритма.
Курсы кодакадеми по Питону совсем говно и трата времени, или стоит пройти? Сейчас начал читать Лутца.
ньюфаг
>>358625
Лутц слишком подробно пишет.
Лучше прочитай какое-нибудь введение страниц на 150, и начинай писать. А уже во время писания, читай нужные главы из Лутца, ну и официальную документацию.
>>358758
Пиши борду внутри борды.
>>358758
Просто на самом деле никто проекттвоеймечты за тебя не придумает. Начинай писать просто что-нибудь полезное и приятное для себя, выбирай сам. оно с неба не упадет.
каким модулем обмазаться, чтоб читать exif под третий питон? (ибо их дохуя в гугле)
>>359001
А как из нескольких вилок ты выбираешь ту, которой пожрешь? Просто возьми один из них.
>>359004
да без понятий, половина этой хуйни не работает в моей убунточке. мне же самая новая и удобная вилка нужна.
Допустим, есть некая строка на сервере. Эту строку скачиваем в клиент для редактирования.
И потом нужно отправить на сервер изменения, не отправляя всю строку.
В какую сторону копать? Мне кажется, это весьма типовая задача, но не приходит в голову, по какому запросу искать ответ на stackoverflow.
>>359092
Нашел подходящий модуль в стандартной библиотеке - difflib.
котаны!
баловался кто айпитоном?
Анон, мне вот надо разобраться с парсингом строк.
есть ngnix Лог со строками вида
178.137.91.215 - - [21/Feb/2014:06:44:53 +0000] "GET /work/homepages-maths-year-6/ HTTP/1.0" \
200 10427 "178.21.22.22:7070" 0.123
В общем хочу сделать так, чтобы выдавали, допустим, только все строки где время "0.123" было бы больше 0.100 или допустим статус был бы не 200
Я начал гуглить, но мне выдало огромное решение с матпакетом и какой-то либой в виде import apachelog panda и numpy - вообще не понятно.
Есть ли какое либо более просто решение, можно пример, пожалуйста.
>>359162
простое решение - это бери grep и sort, и даже питон тут не нужен
from shlex import split
src, _, _, date, gmt_offset, req, rcode, wtf, dst, time = split(
'''178.137.91.215 - - [21/Feb/2014:06:44:53 +0000] "GET /work/homepages-maths-year-6/ HTTP/1.0" 200 10427 "178.21.22.22:7070" 0.123'''
)
>>359243
А, нет. Все ок.
Разобрался как она работает и читает. Вот теперь я пытаюсь разобраться как сделать чтобы она с файла считывала это все.
Говно в виде
from shlex import split
log = open("file.txt", "r")
src, _, _, date, gmt_offset, req, rcode, wtf, dst, time = split(log)
print rcode
from collections import namedtuple
from operator import itemgetter
from shlex import split
class Report(
namedtuple('_Record', 'src date gmt_offset req rcode wtf dst time')
):
_imask = itemgetter(0, 3, 4, 5, 6, 7, 8, 9)
def new(cls, log):
record = list(cls._imask(split(log)))
record[1] = record[1].lstrip('[')
record[2] = record[2].rstrip(']')
return super().new(cls, *record)
reports = map(Report, open('file.txt'))
print(list(
filter(lambda r: r.rcode == '200' and float(r.time) >= 0.1, reports)
))
>>359762
конечно же, абу спиздил все дандерскоры, но ты понял
Пикрелетйед годнота?
>>359802
Скачал, но читать пока не начал. Как начну — отпишусь.
>>359802
В Дарэмском университете на одном из модулей первого курса компьютерной науки советуют прочесть эту книгу. Годная вещь, описывающая разные алгоритмы и всё с ними связаное.
>>360302
В райсовском питонокурсе на курсере второй курс из серии по этой книге рассказывают?
что читать чтобы быстро понять самую суть языка?
dive into python или сейчас есть что-то более можное?
>>360541
google: Goodrich Data Structures & Algorithms in python pdf
первая ссылка
>>360542
Я слепой. Спасибо.
Не думал, что гугл выдаст ссылку на варез.
>>359802
Дык райсовские курсы Principles of Computing и Algorithmic Thinking по этой книге или нет?
>>334669
Анон, есть для питона какие-нибудь либы, предоставляющие интерфейс к DOM, такой же, как в ЖС, или похожий? Хочется, чтобы было как-то так:
document = DOMDocument()
document.set_document(open('file.html'))
el = document.getElementById('lolka')
el.innerHTML = "Sasi hui"
document.save_changes()
Сап, питонач. Послушай унылую историю моей унылой жизни. Мне 25. Образование у меня связано с автоматикой. Работаю я погромистом-пусконаладчиком контроллеров. Это одноклеточное программирование мышкой. Деградирую и просираю остатки потенциала. Заинтересовался питоном полгода назад. Более-менее освоился в базе. Заинтересовало PyQt, just for fun пишу сейчас виджеты, которые тащат с XML погоду и курсы валют, например. Глянул вакансии и охуел с требований: помимо питона нужны плюсы, ПХП и стандартный веб-набор. И 3 года опыта, лол. У меня вообще ноль шансов? Где питонщики начинают карьеру?
>>360813
В ссаном подвале, провонявшем тухлой крысятиной, а ты думал?
>>360961
Очевидно, релевантные запросу "python" на hh и indeed.
Гвидоны, что лучше: упороться Торнадо, или сначала изучить asyncio?
АНОН хелп, мой питон не хочет команды выполнять, ссылается на неверный синтаксис, хотя делал все по образцу http://www.diveintopython3.net/your-first-python-program.html
>>334669
Посаны, я в погромировании вообще не шарю. Как я понял, то сначала стоит учить питон. Вот я его скачал, установил и в книжке написано, что надо поменять значения переменной в path. Я всё сделал по инструкции, но при вводе в cmd python3 -v мне пишет:
'python3' is not recognized as an internal or external command, operable program or batch file.
Как исправлять? Что делать? Делал всё чётко по инструкции, а тут такая ебола.
>>361204
Всё отменяется посоны. Сам исправил.
Программач, лень шерстить интернеты, наверняка ты это знаешь, ньюфажине нужны задачи по пайтону, проект эйлера не предлагать, ньюфажине всего 15 лет, он больше загрузит свой мозг матаном, чем непосредственно набиванию руки операторами и функциями. Около-головоломок не нужно тоже, нужно что то вроде "напиши такое то чтобы выводило такое через такие-то костыли".
Спасибо тебе, программач.
>>361231
https://www.coursera.org/course/principlescomputing
Здесь как раз дают всякие задачки и проверяют их юнит-тестами. Курс только начался, первое задание - реализовать логику вот этой http://gabrielecirulli.github.io/2048/ игры. Вписывайся, тебе подойдёт, отвечаю.
>>361231
Держи задачку на месяц - сымитировать CDN. Добавление серверов в CDN, обработка недоступных, балансировка нагрузки.
>>361236
Как меня бесят курсы, где в качестве заданий используются игры. Ненавижу игры.
Анон, такая проблема, у меня питон перестал выполнять простые переменные ссылаясь на неверный синтаксис. После, он перестал запускаться, писала типо не принадлежит к вин32. А теперь вовсе удаляться не хочет. Как быть?
Бля, поцаны. Swift это тот же питон, базарю. Только слегка приправленный эпловской строгостью.
Какой питон лучше учить ньюфагу, 2.х или 3.х? Читаю книгу Лутца, он описывает работу преимущественно в 3.х
мимоньюфаг
>>361489
Учи актуальную версию, некроёбом всегда стать успеешь.
Как посмотреть результат цикла, который получился, если я запустил его через .py. Все проходит нормально, но окно закрывается мгновенно!
мимоньфаг
>>361515
Win+R -> powershell -> python C:\...\yobascript.py
Если я оставлю DEBUG=True в Django, то как именно злоумышленник сможет навредить мне?
Ананасы, какие вообще перспективы, если выучишь Python?
>>361557
Это я читал, но хочу поконкретнее. Например, можно ли, используя уязвимость в виде DEBUG=True, украсть исходники полностью или что-то ещё?
Возникла тут некоторая проблема.
Нужно опрашивать базу данных раз в некоторое время(0.5 сек пока), собирать список определенных событий. Потом обрабатывать эти события, отправлять некоторую информацию обратно. Проблема в том, что нагрузка может быть неравномерной, и иногда этих 0.5 секунд может не хватить для обработки немалого кол-ва событий.
Хотелось бы каким-то образом реализовать два асинхронных цикла, пишуших в один лист. Один цикл дожен раз в некоторое время делать extend списка, другой должен просто по мере успеваемости pop-ать элемент из списка и обрабатывать его. Это вообще физически возможно? Что стоит почитать, куда смотреть?
>>361605
И запускаешь процессы через multiprocessing
И передаешь данные через Queue
Ну ты понел
А если у тебя там еще и дохуя нод, можешь организовать распределенную очередь через RabbitMQ какой-нибудь.
>>361560
Я пока лично для себя никаких перспектив не вижу.
>>361732
dg — ето пародия на хачкиль? посмотрел… хуета какаето, орегенальнвй пифон итак конфетка. зачем нужна ета параща? примеры, например.
>>361732
И тащут сюда свои кофескрипты.
>>361734
Дг:
print $ except
err => with fd = open 'yoba' => fd.read -1
err :: IOError and err.errno == 13 => 'access denied'
try:
with open('yoba') as fd:
_data = fd.read(-1)
except IOError as err:
if err.errno == 13:
_data = 'access denied'
else:
raise err # и то не эквивалентно, тут строка в трейсбек добавится
print(_data)
import '/os'
import '/dogeweb'
import '/dogeweb/r'
yoba = dogeweb.app $ r.file
'/static/<path:name>', name ~> @static $ os.path.join (os.path.dirname file) 'static' $ os.path.normpath name
'/', ~> template.render 'root' $ yield from $ database.async_load 'something'
yoba.run '0.0.0.0' 8000
import os
import dogeweb
from dogeweb import r # уебищно уже в 3 строке!
def _static_file(req, name):
# гвидон не может в нормальные анонимные функции
return req.static(os.path.join(os.path.dirname(file), 'static', os.path.normpath(name)))
def _root_page(req):
return template.render('root', (yield from database.async_load('something'))) # не осилили yield from без скобок сделать
yoba = dogeweb.app(
r.file(
('/static/<path:name>', _static_file),
('/', _root_page)
)
)
yoba.run('0.0.0.0', 8000)
>>361753
Как напишешь аллокатор памяти чтобы его можно было без ОС запускать, тогда и приходи.
Я решился податься в python.
Есть хороший опыть в css и html, inb4 он тут не пригодится.
И так, я установил brackets и python.
А с чего начать? Какие книги есть на великом и могучем?
Что вообще делать? Я себе это просто представить не могу.
Пагни, а кто какое IDE использует для написания на питоне?
Где скачать бесплатно без смс и регистрации на русском языке пикрелейтед?
И еще, скомпилированный бинарник Nuitka'ой не требует интерпретатора, но требует, чтобы Python Standard Library был установлен, да?
>>361821
>И еще, скомпилированный бинарник Nuitka'ой не требует интерпретатора, но требует, чтобы Python Standard Library был установлен, да?
Смотря как слинкован. Если твой гвидон был собран с --with-shared, то все слинкуется динамически и интерпретатор будет нужен. Добро пожаловать в увлекательный мир компиляторного байтоебства.
Кому лимончиков?
>>361750
ето синтетический пример, чересчур слишком. признайся что ты фанат хачкиля и дрочешь на синтаксис, тогда можеш даже не преводить аргументы.
Ребят, а есть такие же шпаргалки по Python? Хотелось бы всегда самое важное перед глазами иметь. Таблицы желательно (если есть хоть что-то).
>>362000
По-английски называется cheatsheet - шпаргалка
И берешь и гуглишь в гуглкартинках
Анон, поясни за курс http://acodemy.ru/.
И еще, что из литературы по питону переведенной на ру стоит прочитать? Погружение в Питон 3 у меня чем глубже, тем сложнее перевод, точнее больше времени занимает перевод глав.
>>362063
Нужно переводить, пока не задрочишься настолько, что перевод не будет отнимать времени
Анон, сижу курю Лутца. Пока норм. Но так как я ленивая макака без концентрации и ветреный ищу советы по самодисциплине и самоконтролю во время обучения. Какие нибудь пометки, напоминания, ограничения, вся хуйня.
>>362733
>ищу советы по самодисциплине и самоконтролю во время обучения.
Вписаться на курсы на курсере. Там дедлайны и прочее.
В мухосрансках вообще нет вакансий -________-
>>362802
В мухосрансках вообще кроме 1эсников никто не нужен почти.
>>362907
пхп макаки еще нужны.
Кстати о них, они считаются за погромистов вообще?
А питон - 1 вакансия на мой задрищенск в 500к
>>362919
>Кстати о них
Я об одинэсниках конечно же. Двусмысленно получилось.
>>362919
Именно пхп-программисты нужны мало. В основном нужно уметь накатывать битрикс, и прикручивать к нему пизженные шаблоны. Ну а пхп - это просто дополнительный необязательный скилл. У нас, по крайней мере, именно так. Город на 500 тысяч.
Аноны, как мне совершить действие, по изменению переменной?
Например, мне нужно каждую секунду, ОДИН РАЗ ,выводить на экран какой-то текст.
import time
while 1==1:
time.sleep(1)
print(text)
Потсоны, есть одна проблема. Мне нужно навесить листенер на изменение переменной. Дергать каждый раз при изменении функции не канает, она меняется из нескольких мест, да и переменных на самом деле несколько.
Что-то вроде таблицы excel получается, где ты меняешь одну ячейку - и тут же меняются зависимые от нее (и зависимые от них, по цепочке). Подскажите либу или фичу! Спасибо, да пребудет с вами Питон-Гвидон
>>362936
Используй asyncio, который советовали выше. Он для таких штук и создавался.
>>362930
> 1==1
>>362936
> переменная меняется из нескольких мест
Очень хуёвая идея..
> меняешь одну ячейку - и тут же меняются зависимые от нее
Можно погуглить Reactive programming, а можно запилить собственный одноколёсный велосипед, вроде: http://ideone.com/trqwzk
>>363072
Ну и конечно надо поменять
if hasattr ..:
...
else:
...
try:
...
except AttributeError:
...
Тут ведь есть специалисты по асинхронному программированию?
Посмотрите код сопрограммы для торнадо. Ничего же не блокируется?
<code>
@tornado.web.asynchronous
@tornado.gen.coroutine
def get(self):
db = self.settings['db']
cursor = db.messages.find().sort([('_id', -1)])
result_list = [r for r in (yield cursor.to_list(length=10))]
self.write(messages_template.generate(data=result_list))
</code>
>>363402
Разметку проебал.
@tornado.web.asynchronous
@tornado.gen.coroutine
def get(self):
db = self.settings['db']
cursor = db.messages.find().sort([('_id', -1)])
result_list = [r for r in (yield cursor.to_list(length=10))]
self.write(messages_template.generate(data=result_list))
>>363405
Ну пиздец.
@tornado.web.asynchronous
@tornado.gen.coroutine
def get(self):
db = self.settings['db']
cursor = db.messages.find().sort([('_id', -1)])
result_list = [r for r in (yield cursor.to_list(length=10))]
self.write(messages_template.generate(data=result_list))
>>363406
А чем ты пользуешься для доступа к базе данных? Модуль Torndb НЕ является асинхронным, поэтому если ты пользуешься им всё будет блокироваться тут:
cursor = db.messages.find().sort([('_id', -1)])
>>363411
Motor - асинхронный драйвер для монги.
cursor.to_list(length=10) возвращает Future.
>>363413
Тогда не должно блокироваться. Но я не уверен, что написано правильно - в процедурном стиле, без колбэков. Как мне (дилетанту) кажется, если запрос к базе будет выполняться дольше, чем будет выполнено self.write, то значение result_list будет пустым.
>>363415
Это не процедурный стиль. Там есть обратный вызов, но он как бы скрыт для простоты. Сопрограмма же.
Собственно, у меня с этим и возникла проблема - я понимаю как программировать колбэки вручную, но не совсем понимаю, как работают сопрограммы.
То есть, вот объект Future, он возвращается сразу, но принимает какое-то значение только когда оно вытащено из базы.
А это ничего, что я после получения этого объекта, еще всяко его обрабатываю, делаю списковое включение, отдают шаблонизатору?
>если запрос к базе будет выполняться дольше, чем будет выполнено self.write, то значение result_list будет пустым.
Вот тут я и не понимаю, как это работает.
Но чисто интуитивно кажется, что self.write() не должна вызываться, пока не будет готов список.
Собственно, в этом и вопрос - не заблокируется ли тут все?
>>363416
Cука пиздец(( спроси на стаковерфлоу, мне самому интересно. Когда делал проект на Торнадо, так и не смог понять, как это работает и сделал всё в блокирующем стиле.
>>363416
Кстати, только что понял, что не нужно генерировать список, потому что to_list(), внезапно, уже список и возвращает.
@tornado.web.asynchronous
@tornado.gen.coroutine
def get(self):
db = self.settings['db']
data = yield db.messages.find().sort([('_id', -1)]).to_list(length=10)
self.write(messages_template.generate(data=data))
>>363419
Я уже читаю доки питона о сопрограммах.
А зачем ты использовал торнадо, если не использовал асинхронность? Проще было взять тот же фласк.
>>363421
>А зачем ты использовал торнадо
Ради tornado-sockjs. Вообще, я собирался использовать, но не осилил.
>>363420
>только что понял
>потому что to_list(), внезапно, уже список и возвращает
Как ты вообще программируешь, если ты пишешь .to_list() и результат выполнения для тебя внезапен? Нахуй ты вообще пишешь?
>>363420
Проиграл на изи.
>>363468
Я не пишу пока. Я только сегодня сел его ковырять. Вот, ковыряю.
>>363484
Вся суть питоноблядей.
сам питоноблядь. Его кажущаяся простота позволяет писать, не зная фундаментальных основ - ну работает, а хуле надо
Как мне кажется, все треды тут слишком практичные и узконаправленные. Если оффтоп и появляется, то в виде унылого траллинга не к месту.
Давайте устроим ИТТ более расслабленное и поверхностное общение. Я начну со вполне стандартного "кит или слон".
Какой язык САМЫЙ ОБЪЕКТНО-ориентированный? На мой взгляд, Java
Самый универсальный? Python
Самый бесполезный (из используемых)? Не знаю, если честно
Самый сложный (из используемых, брейнфак не берём) ясчитаю, пхп - научиться на нём программировать ПРАВИЛЬНО - непосильно из-за отсутствия учебных пособий
Самый академический? Не знаю. LISP?
Самый переоценённый? на данный момент - не знаю. Ранее - C++
>>363489
Промахнулся, вот тред http://2ch.hk/pr/res/363490.html
Есть ли возможность сделать объект неизменяемым? Ну, то есть, чтобы попытка изменить (создать) атрибут вызывала ошибку?
>>365252
Выкинуть исключение, при изменении/добавлении атрибута - можно.
Сделать объект не изменяемым - нельзя.
>>365261
>Выкинуть исключение, при изменении/добавлении атрибута - можно.
Не подскажешь, по каким словам искать информацию об этом?
Ссаентифик-программеры, как работает scipy.signal.convolve2d? Пробую на простейших примерах, а оно выдает совершенно не то, что я ожидаю. С моим знанием инглиша проще тут спросить, чем гуглить.
Раньше начинал читать дайв инту пайтон, но дропнул.
Что посоветуете почитать почти ньюфагу?
И да, желательно, чтобы после каждой главы была пара задачек, а то без практики нихуя не запоминается.
>>365353
Mark Summerfield: Programming in Python 3
Steven F. Lott: Building Skills in Python
Писать вот так норм или говнокодие?
tuple(('to_mongo', 'save', 'find', 'update', 'delete'))
fields = [x for x in self.dir() if x[:2] != '__' and x not in _]
tpl = ('to_mongo', 'save', 'find', 'update', 'delete')
fields = [x for x in self.dir() if x[:2] != '__' and x not in tpl]
>>366067
Не понял что такое "not in _]", можешь пояснить?
Только изучаю питон
Питонач, смотри что я тебе принёс.
http://python-rutour.rhcloud.com/tour/ тадам!
Делайте перекат, уёбы
>>366261
Супер, спасибо! Особенно за то, что на русском.
Только изучаю питон
Господа, в закрепленном треде, в списке с литературой , не зря все книги по питону упомянуты на английском языке ? Это не намёк на то, что от переводов лучше держаться подальше
Питонач, дай совет. Есть список объектов, нужно получить из этого списка первый объект с определенным атрибутом, либо None. Например, у нас есть
item_list
, и мы хотим получить из него объект с айди item_id
. Вариант с генератором красив, но не очень читабелен.item = next((_ for _ in item_list if _.id == item_id), None)
lst = [_ for _ in _all if _.id == 300]
item = lst[0] if lst else None
Давай, ребята, обучаться вместе в этом треде.