Это копия, сохраненная 25 января 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Кто-нибудь когда-нибудь платил за знание языка как таковое? Платят за реализованный продукт. А выбор языка - это вопрос личного удобства.
У нас пайтонисты охуеть зашибают
Основная заеба с тем, как организовать ввод многострочного текста. Input() только одну строку принимает. Как организовать завершение ввода? Пробовал try ... except KeyboardInterrupt, но он проёбывает введенный текст вместе с переменной.
Рефералом будешь.)
Не беря в расчет вопросы с работой и прочим дерьмом.
DBase пытался сделать полностью универсальным и независимым объектом, из которого можно сделать модуль
сам КОД - http://pastebin.com/xPLZy5SZ
Ты кто такой, конкретнее давай.
Вот этот вот дзен-пиздёжмагия об том как сделать из 20 строк 3 но тоже понятных и тд и тп?
где хрень с оппика купить. кстати? хочу мариво и мегамена слепить
в магазине
Хипстор дохуя?
кукбук
input и так возвращает строку.
есть упражнение: нужно поменять первую и последнюю букву местами
во всех случаях работает отлично, кроме случая
str = "aavJ"
по идее, должно выдавать "Java"
выдает - "Jva"
сделал отдельный иф для джавы - заработало
в чем суть траблы? ввожу str = "nythoP" - работает
def front_back(str):
if len(str) > 1:
a = str[0]
b = str[-1]
newstr = str.replace(a,"")
newstr2 = newstr.replace(b,"")
newstr3 = b + newstr2 + a
return newstr3
else:
return str
print front_back("nythoP")
Спасибо тебе
Опередил
Через сортировку пузырьком проще же?
теперь ясно, спасибо
Ну я писал. В простеньких - вполне. Но апи ведроида полностью не покрыто (было). Самый большой подводный камень помимо апи - долго грузится. Не тормозит, а именно начальная загрузка долгая шопиздец, на уровне какого-нибудь всратого хрюнити.
У них демок куча, погоняй. И в маркете есть какие-то приложения по кейворду kivy.
Кому нужен проект написанный на питоне? Его не поддерживают 99.9% хостингов. Там php и mysql. Да и залить по фтп не достаточно, нужно какое-то шаманство опытного админа чтобы сайт поднять, а скорее всего без самого автора кода не разобраться.
Да и исправить что-то в проекте на php может любой школьник за доширак или миллионы опытнах специалистов, а для питона надо искать редкого питониста, который ещё и запросит нереальные деньги.
Ты можешь сделать редактор наподобие ed https://en.wikipedia.org/wiki/Ed_(text_editor)
Или осиливать curses
Ты пизданулась, зелень? 99.9% хостингов - впс на линуксах, с рутом у тебя лично, что хочешь то и делай. Хоть на лиспе, хоть на брейнфаке запускай. А ты пришел в 2016 и заливаешь про ШАРЕД ХОСТИНГИ БЛЯДЬ, ХОСТЕР НЕ ПОДДЕРЖИВАЕТ, ПХПХ ПУСКУЛЬ ХОСТИНГ БЕЗ СМС. Я блять живой шаред хостинг видел последний раз в 2007 году. Никому они нахуй не нужны, даже даром. Иди нахуй отсюда блядь, дегенерат.
Тебе же ответили в прошлом треде.
В джанго всё из коробки, но прибито гвоздями. Зато из коробки орм, аутентификация, админка, миграции, формы и всё прочее.
В фласк надо это самому из отдельных компонент собирать, что дает больше гибкости, но и геморней. И компонент таких готовых меньше.
Чаю этому бомбанувшему.
Добавлю еще, что сейчас существует куча систем автоконфигурации. В конце-концов, приложение может быть обернуто в какой-нибудь докер со всем необходимым и тогда оно развернется-запустится вообще любым утистом без проблем.
впс намного дороже и им требуется админ. шаред хостинги берут админство на себя. и стоят $3 в год.
владелец сайта, не будучи программистом, просто заливает php файлы по ftp и загружает думп базы в phpmyadmin. И всё, сайт работает.
Нихуя не дороже.
Ой блядь иди нахуй, дороже-хуеже, админ-хуйадмин. Никакие оправдания не загонят нормального человека со своей ультрадешевой впс на шаред хостинг. Шаред хостинг это ДНО, самое донное ДНО которое только можно найти в мире веба. Нормальные люди про него забыли блять как про страшный сон, а нюфагам повезло - они про него даже не знали никогда. И тут ты такой из машины времени ОПА, ПАЦАНЫ, ХОСТЕР НЕ ПОДДЕРЖИВАЕТ, ГО НА ПХП4 ПО ФТП, Я СОЗДАЛ, БУДЕМ ЛАГАТЬ И ПАДАТЬ ВМЕСТЕ
Иди нахуй, говноед, никому твоя шаред параша не нужна в 2016.
Ну а если не трогать про то где из коробки, а где нет.
MTV в джанге как по мне делает его не очень удобным.
хз. CBV делают всякие типовые задачи очень удобным. Хуяк-хуяк тебе и список объектов каких-нить и пагинация в 2 строчки кода. Или форма какая.
Расскажи, как поставить? Через pip install urwid находит, скачивает, но под конец установки ошибки высыпает.
У тебя конпеляторы то стоят чтобы конпелять? И вообще есть лог что за ошибки то? По тому обрывку ничего не понятно.
Зойчем он тебе на ведре? Это же говнота для ssh. Или ведро у тебя в качестве рабочей машины?
Не для ssh, а для терминала. Теперь еще спроси зачем на ведре терминал.
зачем на ведре терминал?
>>615207
Посоны, в веб фреймворках нет толком никакой архитектуры. Я сам даже свой фреймворк писал как-то, знаю о чём говорю. Лучший веб-фреймворк должен быть таким, чтобы типовые задачи на нём делались в минимум строк кода. И чтобы он мог во все ноу-хау которые есть у других. Джанга хороший, годный фреймворк.
Тру-архитектура начинается когда у вас приложение создаёт процессы, потоки, работает со звуком, графикой, интенсивно менеджит некоторые примитивы (то есть держит в памяти, подгружает, выгружает), разрешает коллизии на дисках фрагментируя файлы, пишет журналы для восстановления после сбоя, рулит кластером со всей возможно асинхронностью чтобы исключить блокировки. А это ссаный веб-сервер, открывает сокет, парсит http заголовок, выдаёт http ответ, вычищает нахуй всё из памяти. Здесь вся архитектура - это кеширование и огранизация кода под типовые задачи, всё. Большую часть архитектуры вы накручиваете установкой готовых решений: mysql/postgres/mongo/nginx/apache/uwsgi/unicorn, и то, за вас это админ делает.
Поумничай мне тут. Делать приложение на urwid чтобы гонять его на десктопе в терминале будет только слабоумный. В терминалах дохуиллион несовместимостей и разных уровней поддержки фич. Ты просто ёбаный мазохист, если не делаешь это с прицелом пользования через ssh.
Лол. А вот и новое поколение.
Пусть у тебя диск имеет размер 1Гб. Ты записал на него файл 500Мб, затем 100Мб, они у тебя записались друг за другом: | 500 file | 100 file | 400 free |
Потом ты удалил файл 500Мб и скопировал себе файл 800Мб. Внимание вопрос: как запишутся файлы на диск? Отвечает Александр Друзь.
> В терминалах дохуиллион несовместимостей и разных уровней поддержки фич
Разве curses это на себя не берет?
Поучи меня еще как кудахтерами пользоваться, пидор.
>В терминалах дохуиллион несовместимостей и разных уровней поддержки фич
90% современных терминалов работают на libvte, "несовместимости" остальных давно известны в обкатаны в curses, на котором я кстати свои морды и пишу, а urwid твой в сраку ебал, хипстер ебаный.
Curses это кривое говно без какой-либо вменяемой поддержки окошек. Этараз. Далеко не каждый терминал поддерживает не то что цвета, даже свободное перемещение курсора по экрану. Этадва. То есть curses распидорасит вывод и его придётся глушить. И enjoy your ESC key/keymap support. Этатри.
> они у тебя записались друг за другом:
Начнем с того, что это не то как фс работают если это не sparce file какой-нить.
Ты где такие терминалы видел последний раз? picrel это всё умел и он старше тебя и современные эмуляторы терминалов с ним совместимы.
>спрашивают про коллизии
>рассказывает про фрагментацию, которая в 2015 есть только во всратом ntfs и более древних парашах
Вырастил новое поколение тебе за щеку, выблядок.
Ну и изначальный вопрос был как сделать текстовый редактор консольный. Я предложил сделать клон ed, но очевидно товарищ хочет визуальный редактор. И тут или использовать ncurses или самому же его изобретать хуяча эскейп-последовательности. И вот тогда, действительно, будут проблемы с совместимостью.
Терминалы ты последний раз видел в 1955 году, в школе на уроке информатики, да и то на картинке?
Фрагментация есть в любой фс. Разве что кроме како-нить tar файла и подобного. Это означает что файлы записываются не подряд, а разбиты на блоки, группы блоков и прочее.
>пишет на curses под десктоп в 2015
>без прицела на использование по ssh
Ясно. Вопросов больше нет.
>>615387
Да ты шо. Ну давай, назови мне хоть одну фс, не разбивающую файлы по кластерам.
>>615388
Ctrl+c нажми и наслаждайся перезапуском/сбросом терминала чтобы вернуть цвета и увидеть ввод.
>>615389
>ntfs и более древних парашах
У меня для тебя плохие новости, школьник.
>>615392
Не так давно копался в игоре, сделанном на базе квейкодвижка. Туда прикручена curses. Оттуда невозможно например выцепить стектрейс, сообщения об ошибках пидорасят весь вывод. Moc например частенько пидорасит от кириллицы и других не-аски символов. Ебитесь сами, мсьё.
>>615392
Меня раздражает блядский esc. Меня раздражает что моя клавиатура становится как в 1955 на картинке.
> без прицела на использование по ssh
screen запусти или tmux и испоьзуй себе по ssh.
> не разбивающую файлы по кластерам.
в прыщех это назыавется блоки группы блоков. Так вот, какие могут быть "коллизии", если данные лежат в разных блоках.
Тогда были телетайпы, а не терминалы. А скорее вообще на перфокарты вбивали данные.
В прыщах кстати до сих пор устройства называются tty что означает телетайп.
>какие могут быть "коллизии", если данные лежат в разных блоках
Вот это и есть орхитектуре. Видишь как оно освобождает тебя от лишней головной боли.
> Ctrl+c нажми и
Ну запустил вот mc нажал ctrl+c нихуя не произошло.
Запустил mutt оно мне предложило выйти.
Запустил htop/top и оно вышло.
> невозможно например выцепить стектрейс, сообщения об ошибках пидорасят весь вывод.
Ты можешь из соседнего окошка терминала подцепиться к процессу.
Хех. Это значит что на вышеозначенные приложения повесили обработку сигнала. Если же они у тебя грохнутся от внутренней ошибки, или обработчика сигнала нет, то распидорасит.
Проще запустить с -nocurses.
>Оттуда невозможно например выцепить стектрейс, сообщения об ошибках пидорасят весь вывод.
Ловишь свои трейсы, записываешь в файл как обычный текст, смотришь файл.
> Moc например частенько пидорасит от кириллицы и других не-аски символов.
Чего несешь? Сколько лет слушаю через него - никогда не пидорасило от не-аски.
Ты ебанутый кокой-то.
>никогда не пидорасило
Ты наверное ещё и ID3 теги расставляешь и имена файлами задаёшь. В curses нет поддержки layout. От слова совсем.
>Если же они у тебя грохнутся от внутренней ошибки, или обработчика сигнала нет, то распидорасит.
Не хочу читать документацию, хочу травить кулстори про РАС-ПИ-ДО-РА-ШИ-ВА-НИ-Е.
https://docs.python.org/3.4/library/curses.html?highlight=curses%20wrapper#curses.wrapper
Ну распидарасло - набери команду reset в баше и обратно восстановится.
> Если же они у тебя грохнутся от внутренней ошибки
Повесь atexit.
> обработчика сигнала нет
Сделай. Или не посылай сигнала, на который нет обработчика.
Всё сводится к тому, что надо нормально приложение писать и это не сложно.
А какие альтернативы? Если тебе надо сделать именно TUI интерактивный типа mc или vim.
Понятно, что для большинства задач лучше обычный cli потому что оно скриптуется и т.п.
Очень увлекательный рассказ.
Ты не мог бы привести пример приложения, которое "разрешает коллизии на дисках фрагментируя файлы"?
>Модули для ведра ОС/юзерспейсные приложения работающие через fuse.
А название приложения можешь назвать, я хочу посмотреть что да как.
fuse тут вообще никаким боком, это апи для создания псевдофс в юзерспейсе, а не реальных. они конечно могут писать в блочное устройство тоже но само fuse тут непричем.
всякие sshfs на базе fuse вообще с файлами локальными не работает.
во fuse оно всегда псевдо, просто код, который ты с использованием этого апи написал может и в блочное устройство писать.
а может и сетевой диск какой-нить делеать или что-то вроде tagfs или аналог proc/sysfs или что угодно.
На чтение работает давно. На запись работает отдельным модулем через fuse, и не гарантирует целостность. ms её активно пилит, не угоняются.
Ну и? В блочное ты ведь пишешь уже раскидывая файлы по блокам. А это и есть задача файловой системы.
Вроде тысячу лет как на запись работает нормально.
Исходники винды2000 уплывали можешь загуглить и там почитать.
Вообще хули там читать. Это реализация. А сами структуры данных, как она устроена мы в универе изучали.
1. Пиши консольные гуи только под использование через ssh.
2. urwid > curses
3. В джанге нет особенно архитектуры, нехуй ныть, она просто чуть иначе держит темплейты и прочее.
4. Почему-то оказалось неправильно назвать причину фрагментации файлов коллизией.
Заебал. Мамку свою учи иди.
curses там один из бэкэндов. И да, она более высокоуровневая и больше умеет.
Есть какое-то древнее поделие, представляющее из себя скрипт на баше/перле, который просто перезаписывает файлы в новые сектора.
И ещё одна такая же древняя утилита. И обоим этим лет по 7-10.
А всё потому, что НИНУЖНО
Тебе если интересна эта тема - посморти ещё как кучи в памяти делают. Принцип такой же по сути - allocate(size)/free, только требования несколько иные, нужен именно непрерывный диапазон.
Ну с секторами dd умеет работать, вроде как. Но это просто низкоуровневые операции, а не управление фрагментированием.
Ладно, видимо сказано было для красного словца, мол, вы ничего не понимаете в "тру-архитектуре". Проехали.
Честно говоря, меня интересует именно тема архитектуры приложения. Задумал проект, который состоит из нескольких небольших частей, а как вот связать воедино, как лучше наладить обмен данными я не разбираюсь.
>вы ничего не понимаете в "тру-архитектуре"
И таки да. Архитектура - это не внешний вид исходников, а план как оно физически будет работать. В веб приложениях мало кто планирует архитектуру, делается тонкая оболочка к базе данных + незамысловатая логика. Вся архитектура там заканчивается на кешировании и масштабировании в кластер.
>>615446
Планируй сначала потоки данных. Ввод-вывод например, использование сокетов, звука, итд. Какие требования по количеству данных, задержке обработки, пропускной способности.
База данных какая-нить. Правда она обычно наоборот старается не фрагментировать. По сути веть фс эта тоже бд своего рода.
> а как вот связать воедино, как лучше наладить обмен данными я не разбираюсь.
Сигналы. файлы. mmap. Пайпы. юникс сокеты. всякие rpc. mq. mmap. corba. тысячи их
https://en.wikipedia.org/wiki/Inter-process_communication
выбирай на вкус
Там не чисто питон код, там есть .c файл, который надо сконпелять.
Да и не файл что в этом питоне на андроиде есть сам модуль curses.
> Там не чисто питон код, там есть .c файл, который надо сконпелять
https://github.com/urwid/urwid/tree/master/urwid
Где .c файл?
> не файл что в этом питоне на андроиде есть сам модуль curses
Факт.
Сам urwid прекрасно работает, тестировал пару своих поделок на андроиде.
https://github.com/urwid/urwid/blob/master/setup.py
>'ext_modules':[Extension('urwid.str_util', sources=['source/str_util.c'])],
А ну заебись тогда че
Поиск по папкам и запуск необходимого файла
http://pastebin.com/mg3N3icV
Две строки на баше.
Вот кстати pathlib же ещё есть. Типа ооп подход.
пишет "unicodeencodeerror charmap codec can't encode character"
если запускаю в pycharm, то там всё работает, почему так?
Спермопроблемы.
José González - Step Out.mp3
подловил через исключение, сделал чтобы он енкодился в ютф-8 и всё заработало, только название у него кривое отображается, но и так норм
с меня как обычно
Установи кодировку консоли в юникод, должно помочь (консольная команда chcp вроде)
sorted(list, key=lambda d: d['likes']) так?
дякую, анон.
Какая же хуета. По прежнему нихуя круче Think Python я не видел.
>learn the python by hard way
Learn Python the Hard Way, так-то. Ты уверен что читал, а не картинки смотрел?
Ты прав.
Уверен, конечно же. Все нахуй задания под императивные нотки чуточку истеричного автора. Обрывочная хуйня пиздец.
Повёлся что в западных интернетах она распиарена.
Ладно, добил и слава богу.
Всем неофитам надумавшим в будущем к ней приобщиться - не рекомендую.
Спермоклоунада.
string = unicode('Карл у Клары украл коралы', 'UTF-8')
encodinglist = ['UTF-8', 'Latin-1', 'UTF-16', 'UTF-32', 'KOI-8R', 'CP1251']
for i in encodinglist: \tprint string.encode(i)
------
File "4-encode.py", line 2
SyntaxError: Non-ASCII character '\xca' in file 4-encode.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
без юникоде() ещё хуже
# -*- coding: ... - до задницы
ось - убунту, консоль 100% юникод
Как ты в latin-1 закодируешь кириллический символы? KOI8-R пишеттся так, а не "koi-8r".
сделай
for i in encodinglist: print string.encode(i, errors="ignore")
Я думал не будет символов для данного кода - будет пустое место.
Спасибо. Пересохранил файл как ютф-8, вписал *- кодинг ютф-8 - заработало. ПиЧарм что-то намудрил.
> не будет символов для данного кода - будет пустое место
Если стоит errors="ignore" иначе будет с ошибкой падать
У них распиарено все, что бесплатно и обычно это лютое говно.
Вот смотрите какую кто-то поделку сделал. И архитектура неплохая на первый взгляд.
Вроде ничего, а с другой стороны зачем это? Не знаю, может так модно сейчас, но зачем хранить версии чужих либ. Нет, оно наверное понятно, чтобы если либы изменят свой api, чтобы поделка не сломалась. Но можно же прописать в setup.py/requirements.txt конкретные версии пакетов. И зачем использовать urllib, когда есть requests? Ну, и свой логгер, хотя вроде он как для цветов сделан, тогда, по-моему, лучше его по-другому назвать.
http://pastebin.com/QVvNAZyD
Второй, resiver.py запускает transmitter.py, читает sys.stdout и печатает в терминал:
http://pastebin.com/EqyVPLGk
Получается что ресивер ждет пока трансмиттер закончит работу и вываливает все что получил. Мне же нужно, чтобы ресивер печатал передачу в реальном времени.
Похожее обсуждение нашел на стаковерфло:
http://stackoverflow.com/questions/803265/getting-realtime-output-using-subprocess
Но мне рецепты из этого треда нихуя не помогают. Питон 2.7, вин 7.
Ты лучше отпиши свои замечания на https://www.linux.org.ru/news/opensource/12234215 а не тут
Чо у него эта манда с русским readme? Непорядок.
Супер, помогло!
С помощью seek можно избежать полной перезаписи и перезаписать только строки после измененной.
Если записываешь в самый конец - можно не перезаписывать целиком, просто сделать append.
Еще через mmap можно извернуться, но тут скорее ты себе хуй отдавишь.
Там уже половина постеров из этого ИТТ. Даже питон3-не-нужен-кун отметился со своим ынтырпрайзным 2.6
Сдаётся мне и сам автор отсюда.
Нет, не в конец, а изменить только несколько строк посередине.
Нахуя это поделка нужна? Яннп. Торент клиенты и так показывают когда раздача обновилась. И в поиск могут. Велосипед ради велосипеда какой-то.
к веб-интерфейсу её прикручивать просто и на антресоль к домашнему серваку-файлопомойке, как мне кажется
Ну, звёздочки есть, контрибьюторы тоже. Значит это кому-то нужно.
Не твое вот и бесишься. Он успешный разработчик, а ты хелловорлды пиши иди.
Нужно использовать коды ANSI, чтобы перемещать позицию курсора.
import colorama #если ты виндобыдло
colorama.init()
sys.stdout.write('\n\n\n\n')
while True:
time.sleep(1)
sys.stdout.write('\x1b[4A' + ' .....\n. O O .\n. - .\n .....\n')
time.sleep(1)
sys.stdout.write('\x1b[4A' + ' .....\n. - - .\n. - .\n .....\n')
Вместо ' .....\n. - - .\n. - .\n .....\n' вставить строку с котейкой.
Если просто сделать, как советует этот господин - >>616186, то у тебя будут выводиться сотни, тысячи котеек без анимации.
Можно еще добавлять в строку '\x1b[J', это будет очищать экран и убирать артефакты от прошлой отрисовки.
Или так. Grafoniy Edition
http://pastebin.com/X3tP18Mp
Выглядит просто пиздец. Кадры сделаешь сам, как надо. Я просто коряво отредактировал для демонстрации.
Прыжки прилагаются. Нужно для этого добавить перенос строки выше спины кота во втором кадре анимации.
А первый кадр отрисовывать на строку выше второго.
Я окончательно заебался. Условия примерно те же, что и в моем пердыдущем вопросе.
Есть два скрипта. Первый transmitter.py запускает субпроцесс resiver.py в новой консоли и печатает туда через PIPE в stdit. Ресивер должен печететь получаемые строки в своей консоли.
>transmitter.py
from subprocess import Popen, PIPE, CREATE_NEW_CONSOLE
proc = Popen( ["py", "-3", "-u", "resiver.py"], shell=False, bufsize=1, creationflags=CREATE_NEW_CONSOLE, stdin=PIPE)
for line in range(11):
print >>proc.stdin, line
>resiver.py
import time, sys, fileinput
for line in fileinput.input():
print(line)
time.sleep(1)
Получается, что если запускать transmitter.py кликом мышки, на мгновение появляется 2 окна, и тут же закрываются. Елси добавлять принты в трансмиттер, то их можно заметить в первном окне. Елси запускать из сублайма, то появляется пустая консоль, а всесь вывод идет через консоль сублайма. Я подозреваю, что надо как-то переопределить sys.stdout для дочернего процесса. Все дело происходит в вин 7.
Ты хоть попытался понять принцип того, что я скидывал? Запускал код на своём компе?
Или ты ждешь уже готовое решение с готовой же анимацией?
Если последнее - то ты хуй, а про начинающего это уже отмазки. Дали направление, гугли и учись, экспериментируй.
Добавь input() в конец главного файла, чтобы окно с результатами не закрывалось после завершения программы.
А во второй да, попробуй добавить вместо print sys.stdout.write('bla bla').
>А во второй да, попробуй добавить вместо print sys.stdout.write('bla bla').
Хотя не прокатит.
http://ideone.com/OnaXuw
потому что в 2 гвидо хуйней какой-то занимался https://hg.python.org/cpython/file/2.7/Python/ceval.c#l1525
в 3 это убрали.
Есть спрайт прямоугольника rect. Есть окно window и его view.
Допустим, я хочу, чтобы при растягивании окна через
window.view = sf.View((0, 0, event.size[0], event.size[1]))
и изменении масштаба через
window.view.zoom(event.zoom)
абсолютный размер этого прямоугольника и его положение относительно границ окна не менялось.
Собственно, что уже пробовал:
1) присваивать windows.view кастомный sf.View(0, 0, 1.0, 1.0) - в таком случае меняется размер при ресайзе окна.
2) не присваивать кастомный view - тогда меняется размер при зуме.
Вопрос: что сделать, чтобы всё работало?
Задача - http://codingbat.com/prob/p118406
Суть такова, написал решение в PyCharm, вроде пашет.
Переписываю его на сайт, ответ "Timed out"
Копирую в PyCharm то, что написал ранее в браузере - программа работает.
В задаче указано, что можно делать без лупов, но я тупой и сделал с лупами. Может в этом косяк?
request2 = request.urlopen(url_all).read().decode()
------
Что за хуйня пачаны? На вторую строчку ругается, на первую нет. Выдает
AttributeError: 'str' object has no attribute 'urlopen'
Мне кажется, ключевое в рекурсиях - это знание, что делает return и что происходит, когда функция вызывается внутри другой функции. Не совсем рекурсия, но близко к этому.
def f1():
print('f1')
return f2()
def f2():
print('f2')
return f3()
def f3():
print('f3')
return f4()
def f4():
print('f4')
return 4
print(f1())
выведет
f1
f2
f3
f4
4
f1 должна вернуть f2. То есть, f2 должна сделать свои действия и вернуть свой результат. Пока этого не произойдет, f1 "открыта", грубо говоря.
А f2 не вернет свой результат, пока его не вернет f3, который не вернет его, пока его не вернет f4.
Результат f4 будет вернут, как результат f3, который будет вернут как результат f2, который будет вернут как результат f1, и только после этого f1 будет выполнена.
На каждом этапе можно производить свои вычисления с результатом, кроме прямого использования return вложенной функции. Например,
def f3():
return 1 + f4().
Тогда f1 вернет 5.
Но важно заметить, что тут результат вызова вложенных функций был напрямую передан return.
Если же не передавать этот результат return или переменной, просто вызов функции в теле другой функции никак не повлияет на возвращаемый результат. Максимум сделает какие-то свои действия, не влияющие на функции на верхних уровнях.
def f1():
print('f1')
f2()
return 1
def f2():
print('f2')
f3()
return 2
def f3():
print('f3')
f4()
return 3
def f4():
print('f4')
return 4
print(f1())
Выдаст:
f1
f2
f3
f4
1
Рекурсия тут отличается тем, что внутри функции вызывается сама функция.
x = '0'
def func(x):
print('func call! arg: %s' % x)
x = x + '0'
if len(x) < 10:
return func(x)
else:
return x
print(func(x))
Выдаст:
func call! arg: 0
func call! arg: 00
func call! arg: 000
func call! arg: 0000
func call! arg: 00000
func call! arg: 000000
func call! arg: 0000000
func call! arg: 00000000
func call! arg: 000000000
0000000000
То есть, в каждом отдельном
if len(x) < 10:
return func(x)
происходит отдельный расчет func(x), результат которого передается return по окончанию.
То есть, до достижения где-то в этой стопке условия
else:
return x
у тебя есть стопка невыполненных функций, ожидающих вычисленного значения вложенных функций. Как только через вот это else какая-то функция выйдет из петли, это return x начнет передаваться return-ам наверх.
Мне кажется, ключевое в рекурсиях - это знание, что делает return и что происходит, когда функция вызывается внутри другой функции. Не совсем рекурсия, но близко к этому.
def f1():
print('f1')
return f2()
def f2():
print('f2')
return f3()
def f3():
print('f3')
return f4()
def f4():
print('f4')
return 4
print(f1())
выведет
f1
f2
f3
f4
4
f1 должна вернуть f2. То есть, f2 должна сделать свои действия и вернуть свой результат. Пока этого не произойдет, f1 "открыта", грубо говоря.
А f2 не вернет свой результат, пока его не вернет f3, который не вернет его, пока его не вернет f4.
Результат f4 будет вернут, как результат f3, который будет вернут как результат f2, который будет вернут как результат f1, и только после этого f1 будет выполнена.
На каждом этапе можно производить свои вычисления с результатом, кроме прямого использования return вложенной функции. Например,
def f3():
return 1 + f4().
Тогда f1 вернет 5.
Но важно заметить, что тут результат вызова вложенных функций был напрямую передан return.
Если же не передавать этот результат return или переменной, просто вызов функции в теле другой функции никак не повлияет на возвращаемый результат. Максимум сделает какие-то свои действия, не влияющие на функции на верхних уровнях.
def f1():
print('f1')
f2()
return 1
def f2():
print('f2')
f3()
return 2
def f3():
print('f3')
f4()
return 3
def f4():
print('f4')
return 4
print(f1())
Выдаст:
f1
f2
f3
f4
1
Рекурсия тут отличается тем, что внутри функции вызывается сама функция.
x = '0'
def func(x):
print('func call! arg: %s' % x)
x = x + '0'
if len(x) < 10:
return func(x)
else:
return x
print(func(x))
Выдаст:
func call! arg: 0
func call! arg: 00
func call! arg: 000
func call! arg: 0000
func call! arg: 00000
func call! arg: 000000
func call! arg: 0000000
func call! arg: 00000000
func call! arg: 000000000
0000000000
То есть, в каждом отдельном
if len(x) < 10:
return func(x)
происходит отдельный расчет func(x), результат которого передается return по окончанию.
То есть, до достижения где-то в этой стопке условия
else:
return x
у тебя есть стопка невыполненных функций, ожидающих вычисленного значения вложенных функций. Как только через вот это else какая-то функция выйдет из петли, это return x начнет передаваться return-ам наверх.
Ебаная говноразметка глотает отступы.
Закинул на ебучую пасту.
http://pastebin.com/phKPAPKL
Скопируй примеры и поиграйся. Уверен, у тебя проблемы с return и пониманием вызова вложенных функций.
Ты когда сделал import request
Ебаная макаба...
Ты когда сделал from urllib import request, поместил в переменную request объект, у которого есть все эти методы urlopen и т.д.
А потом переписал его результатом вызова request.urlopen(url_all).read().decode()
В переменной request оказалась строка, поэтому и ошибка AttributeError: 'str' object has no attribute 'urlopen'
Для простейшей графики - http://mcsp.wartburg.edu/zelle/python/graphics.py
Со звуком не работал, поищи тут https://wiki.python.org/moin/Audio
Вот у меня есть например отдельные модели Article и Category. Как мне прописать так в юрл патернс так, чтобы там само подставлялось название категории.
Я могу как нибудь в эти патерны переменную засунуть, ну или список категорий(который изменяется путем создания и удаления из админки)
кароч ниче не пойму, документацию вроде читал, но там такого не нашел
За графику и звуки отвечают библиотеки для создания gui. Из встроенного это tkinter. Из простого можещь еще установить pygame.
>ответ "Timed out"
Очевидно, что твой код слишком слоупочный, а на сервере есть ограничение на время работы кода.
Пиздос, я уже сам второй день пытаюсь понять, почему при использовании stdin = subprocess.PIPE не работает stdout, хотя он не был переопределен.
Стоит убрать stdin = subprocess.PIPE - все начинает выводиться в консоль, созданную с
creationflags=CREATE_NEW_CONSOLE.
Но упорно блять не хочет ничего выводить, стоит начать передавать какие-то данные через stdin.
В select есть условие:
select if(substr(Table.field,1,5)='penis', Table1.field1, Table2.field1)
Далее идёт куча джойнов, в том числе outer join.
Переписываю его на SQLAlchemy ORM, но результат получается другой. Вот этот кусок, но теперь он стоит в конце после других полей селекта:
func.IF(func.substr(Table.field,1,5)='penis', Table1.field1, Table2.field1)
Порядок перечисления полей в селекте как-то может влиять на результат?
Где я обосрался?
def make_bricks(small, big, goal):
..rest = (goal%5) if (goal/5 < big) else (goal - 5*big)
..return (rest <= small)
В две строчки, аз-аз-аз.
Отпишись если что-нибудь придумаешь, ибо я уже заебался. Даже подташнивать начинает когда думаю об этом. Инетресно, в линухе такая же фигня происходит? сблевал
http://pastebin.com/BbH74V13
Выплёвывает ошибку на
>for nick, chars in raw:
>ValueError: too many values to unpack
проебал чуть с кодом
if nick in wordsdict:
for i in chars: - нахуй не надо и уже удалено
wordsdict['nick'] += len(chars)
Посмотри что у тебя в raw хранится. Очевидно ты проебался разбивая строки или открывая файл.
Хочу сделать такой сервис. Сначала программа забирает данные с некого API и, обработав их, отправляет их в мою базу. Причем нужно делать это непрерывно, ну или хотя бы раз в минуту. Затем к этой базе мы подключаемся через сайт на Django, что бы получать эти самые обработанные данные.
У меня есть опыт постройки несложны Django-проектов и я пробовал делать запросы к API, но в данном случае я не знаю как делать и чего гуглить. Нужно ли мне залезать в многопоточность, если я даже не знаю ничего про это? Держать ли скрипт, захватывающий данные с API в отдельно от Django проекта или делать все в одной папке? Какие еще инструменты или библиотеки могут пригодиться?
Celery с каким хочешь брокером для такой задачи достаточно.
2. Напишите подпрограмму табулирования функции, переданной в качестве аргумента. Так же аргументами задается начальное, конечное значение и шаг табуляции.
Кто-нибудь может объяснить что вообще тут хотят? Не врубаюсь
типа деф косинус..
а потом деф табкосинус(х_старт, х_энд, шаг): вайл косинус < x_енд: принт ....? Так что ли?
> деф косинус..
>а потом деф табкосинус(х_старт, х_энд, шаг): вайл косинус < x_енд: принт ....?
>>617788
Наверное, она будет слишком быстрой, не?
Ну там ребята все сделали и больше не переписывались особо.
raw = [x.split(': ') for x in open('11chat.txt')]
wordsdict = defaultdict(int)
for nick, mess in raw:
...wordsdict[nick] += len(mess)
Переделать в типа такой штуку:
f = open('filename.csv') # f is an iterator
field_names = f.next().split(',') # get the first item from the iterator using next()
records = [dict(zip(field_names, line.split(','))) for line in f] # this will pull remaining lines
print sum(int(record['quantity']) for record in records)
Ну т.е. без цикла вообще. Играюсь "по аналогии" уже 20 минут а толку хуй.
Using zip() with dict() you can combine a tuple of field names with a tuple of values and make a dictionary - combine with list comprehensions you can do this to an entire list in one go.
а как это в парсинг файла перевести я хуй понимаю
Я так понимаю, надо ковырять в сторону deadlock. Если переопределить stdout в файл -то в него все прекрасно выводится, в тч посланное через stdin = subprocess.PIPE. Но как переопределить именно в собственную консоль дочернего процесса - вообще хз.
>ковырять в сторону deadlock
Чет сомневаюсь. Ничего же не виснет, просто stdout субпроцессса перенаправляется хуй поймешь куда. Алсо, sublime каким-то хуем его перехватывает и выводит в свою консоль, если запускать скрипт из сублайма.
Если в ресивер добавить
import time, sys, fileinput
f = open('1111.txt', 'a')
f.write('a')
for line in fileinput.input():
f.write('b')
print(line)
time.sleep(1)
То при его самостоятельном запуске 'a' запишется в файл. Но при запуске transmitter.py в файл запишется нихуя. Код тупо не выполняется в трансмиттере, хотя запись в файл стоит выше fileinput.input().
Пизжу, дало.
Note: flush() does not necessarily write the file’s data to disk. Use flush() followed by os.fsync() to ensure this behavior.
f.write('b')
f.flush()
os.fsync(f.fileno())
The method fsync() forces write of file with file descriptor fd to disk. If you're starting with a Python file object f, first do f.flush(), and then do os.fsync(f.fileno()), to ensure that all internal buffers associated with f are written to disk.
http://www.tutorialspoint.com/python/os_fsync.htm
И нихуя. Блок for line in fileinput.input(): не выполняется, словно. Хз, как еще протестировать, что на нем зависает, если не переопределить stdout прямо.
А, есть .find(), извиняюсь.
спасибо
Нет. До этого работал с нодой, и если содать файл с console.log('testing'); и вызвать его через консоль, то всё бы отработало нормально.
А, запустил через питон все нормально отработало, спасибо! А нельзя как нибудь упаковать в .sh на линуксе или .ехе на винде, чтобы исполнялось при обычном запуске?
Добрый вечер.
Я аутист пилю игру на питоне, через библиотеку pygame, пилю в саблаймике, потом просто запускаю скрипт, у меня вопрос, я смотрю на то, как пилят в IDE всяких и теку завистью. Там понимаешь подсказочки, всё подсвечивается, а у меня нихуя. Как сделать так, что бы саблаймик всё это подсвечивал? Так же как в эклипсе шоб.
Слишком ненужно. Зачем мне этот монстр, если у меня саблаймик делает всё то же самое помимо подсказок и подсветки, да.
Алсо, на счёт самого питона и pygame, чому у меня одно окошко с объектом, который двигается туда-сюда жутко нагружает пеку? Ну прям реально оче сильно. Нормально, что питон сжирает много ресурсов?
Нет, наговнокодил ты где-то. Должно быть вполне спокойно возможно миллиончики полигонов делать, уж хотя бы на одном объекте.
row = self._Database.get_element_by_conditions(opts)
Но никаких ошибок оно не выдает
Python standard library by example
Циклы while сжирают максимум доступных ресурсов, если в них не приписывать time.sleep(1), например.
conditions="1"
sql = 'select * from %s where %s' % (tablename, conditions)
Вот это что за хуйня?
чем-то похоже на пхпшучу
значит так:
select VSE from TABLITSANAME where CONDITIONS
а теперь подумай где может быть затык
Так нельзя делать. Используй подстановку переменных из твоего db драйвера.
cpython эталонная и можно сказать дефолтная реализация, используется в 95% случаев.
Cython конпелируемый.
Все основные питоногуи кроссплатформенные. Из наиболее популярных pygobject для gtk (pygtk устаревшая реализация) и pyqt/pyside для Qt
Я сам еще ничего кроме tkinter'а не пробовал, но PyGtk по скринам показался самым приятным, лишенным уебанских остроугольных окон и элементов интерфейса.
Инфа про его отсутствие на винде вроде устаревшая, не? По крайней мере, для винды инсталляторы есть на офсайте.
>По крайней мере, для винды инсталляторы есть на офсайте.
Ты оффсайт pygtk то читал? На нем прямо в шапке написано:
>Note: New users are encouraged to use GTK+3 through the PyGObject bindings instead of using PyGTK with GTK+2.
Для гтк надо использовать https://wiki.gnome.org/Projects/PyGObject
И в случае венды гтк с кутями подхватывают системную вендовую тему, в случае линукса - тему тулкита. Никто в 2016 не форсит свои темы для отдельных приложений.
Да, читал. Там же советуют пользоваться PyGtk, если виндобыдло. Типа, пока не появится норм инталлятор у PyGo.
Сто лет уже вендовые инсталляторы есть.
Хотя, щас смотрю, а эти инсталляторы у PyGo уже есть.
pygtk тыщу лет как на винде есть, по крайней мере лет 7 назад был. Но многие жалуются что gtk контролы на винде выглядит ненативно типа.
Лишний раз доказывает, что рашкоинтернеты - ебаная деревня и провинция с протухшей инфой, неактуальной годами. Вредно их читать.
Нет никаких европейских интернетов. Есть интернет, который англоязычный, и все остальные параши на локальных языках, отстающие от интернета на пару лет.
Мест что бы посрать вопросами настолько много, что ещё одно не нужно вообще никому.
Пока что думаю вынести это в отдельное приложение и реализовать через нативный multithreading а управлять этой хуитой с django через dbus интерфейс, как такой вариант?
>>618673
Так и не пришел инвайт.
Или не съеби, очевидно же.
там не происходит ничего вообще. Эта строка и все последующий просто игнорируются
Эта хуйня приехала примяком из старого кода (таких вызовов там тьма). Если передана только таблица - забирать из нее все
Начитался всяких тредов про ардуины, решил освоить python для интереса, давно хотелось. Прочел книгу из шапки(160 страниц), понравилось, но там очень поверхностно. Скачал книгу за авторством Лутца, но там 1200 страниц воды, это ж песдетс.
Насоветуйте пожалуйста что-нибудь почитать кратко и по делу.
Алсо хотел спросить - джанго это я так понимаю самый популярный фреймворк для веб-приложений, так?
Think Python мой фаворит из книг. Есть на русском, есть на мовi английской, всё в меру сжато и туда-сюда по применимым к жизни примерам.
Да ты охуел, у Лутца идеальная книга для новичков, относительно всяких онлайнкурсов уж точно.
Куча примеров, результаты каждого примера приводятся, чуть ли не каждая строка и ньюанс поясняются.
Если у тебя нет других языков за плечами - подрачивая на "кратко и по делу" рискуешь не смочь нихуя написать после этого краткого изучения.
А еще Изучаем Питон не раз пригодится в качестве справочника на первых порах, куча инфы, которая не лежит на первых страницах гугла.
Автоматизируй всё и вся. Загрузку в дропбоксы-хуёксы, е-мейлы мамке, одной тне "давай ебаться потому что ххх"через какое-нибудь вк_апи, фтп-поисковики если ещё локалка провайдера сохранилась, парсинг говна с али экспресса что бы потом выгружать в твой же будущий магазик на чайнабай.мухосранск.ру прибавив 40% стоимости и пообещав доставку вожделённого говна в течении двух месяцев, да хоть таймер блин что бы из баша запускать через алиас + аргументы
Имиджборду
Читай официальный туториал на оф сайте и потом документацию.
Вот ещё годнота по стандартной библиотеке https://pymotw.com/3/ https://pymotw.com/2/
>>618354
Ну так и что в 'row' записывается-то?
Ты б хотя бы всё в один кусок написал, раз не можешь рабочий код предоставить, а то желания шастать по этим двустрочным функциям как-то нет.
Кстати, вот у тебя есть классовый атрибут, connection, который ты будто бы через self.connection изменяешь. На самом деле классовый так None и останется, а у объекта появится свой. Зачем это так?
Приложение многопоточное и у каждого потока свое соединение с базой данных, если делать одно соединение на всех, то сервер при нагрузке вываливает ошибку 2006
Не, ну так инстанс-атрибут-то я убирать и не предлагал. Меня наличие классового волнует, если он не используется, насколько я понимаю. Или-таки где-то используется?
Нет, классовый можно убрать, но проблему это не отменяет.
threading.local
print 'Пакуем файл '.decode('utf-8') + currentfile
Ответил правильно на 30%. Заставляет почитать родную красноглазую документацию в BNF нотации и пояснения. А также задуматься о гнильце данного языка. Хуже только похапе и яваскрипт по количеству подводных сюрпризов, особенно когда пишется что-то сложнее гостевухи.
u'Пакуем', то бишь unicode, если я правильно понимаю. А в какой кодировке она изначально была?
utf-8, а типа данных str
А что не так-то? Ну кроме разве что того что // возвращает float если один из аргументов float (но все равно округляет).
># coding=utf-8
Нужно исключительно, чтобы при редактировании файла IDLE не выдавал кракозябры.
Если у тебя третий питон - там все строки - юникод, а кодировку подхватывает системную.
Это причиняет БОЛЬ, если ты еще и виндобыдло, так как кодировка там совусем не UTF-8.
22/41
Просто мысли вслух. Каждый динамический язык вызывает у меня баребух. В питоне все усугублено девственником-сениором, который кончает от однострочников, знания сотни аспектов утиной типизации, и с радостью отсосал бы Гвидо за эти чудные знания, делающие его Особенным. Готовлюсь на позицию мида, и вместо архитектурных аспектов и предметной практики должен зубрить это говно.
a = 1 < 2 == 2 > 1 in [1,2,3] < [2,3,4,5] != 1
Где мой сок?
Подорвался с
def f(a):
pass
f(a for a in [1,2])
Я так понимаю, генераторы списков, и тд отличаются лишь тем, что generator object передаются list(<generator object>), dict(<generator object>) и тому подобное?
Мне почему-то казалось, что там у каждого своя реализация, отсюда и различия в скорости выполнения.
Ну в общем да. Генератор объект пишется в скобочках, но если ты передаешь его в функцию типа max(i for i in range(5)) но вторые скобочки внутри писать не обязательно.
Ещё для tuple скобки не обязательны. И наоборот можно писать выражения в скобочках типа if (x>0) или x=(1) и это не влияет.
Но вроде в генераторе списков какие-то оптимизации, хотя хз.
Генератор словарей и set`ов вообще совсем недавно добавили, так то это сахар над dict(k,v for k,v in)
Ну хз
def f(a):
print(a)
f(a for a in [1,2])
Выдает <generator object <genexpr> at 0x00449120>.
Из которого можно сделать список, кортеж или множество.
Потому что generator object это инератор а функции dict, list и tuple принимают в качестве аргумента интератор.
https://www.python.org/dev/peps/pep-0202/ появились в питоне раньше, чем https://www.python.org/dev/peps/pep-0289/
*только вот
>инератор
Итератор? Тогда почему из них нельзя ничего достать через
for x in generator:
bla bla
?
Хотя, достается.
<generator object <genexpr> at 0x02A96270>
<generator object <genexpr> at 0x02A96270>
Кек, элементы генератора - тоже генераторы.
Попадаются такие ты прав. Но это неадекваты же. Тем более если они будут всех таким заебывать они вообще никогда никого не возьмут на работу.
Всё равно лучше баб из hr которые логические задачки тебе дают. Или дебильные вопросы всякие. Я тут видел видео hr бабы которая объясняла что при приеме на работу сисадмина надо обращать внимание на форму ушей и подбородка типа физиономистика если уши острые он умный.
Или дают тестовое задание написать целый блять проект(хоть и небольшой). А это занимает часа 2-3 минимум, а то и целый день убьешь, пока всё оформишь нормально.
Эйчары как хомячки: маленькие, глупенькие, но приятные на ощупь. Тем и прекрасны. Первые пару раз их конечно придётся потерпеть, зато дальше уже если нормальный специалист будешь ходить без них прямо к ПМу/тимлиду.
От конторы зависит. Где-то обязательно надо с ними общаться. Где-то вообще надо несколько собеседовний проходить, а под конец могут сказать мы перезвоним. В одной фирме прошел все технические собеседование в разные дни, все были очень довольны, под конец надо было чтобы директор на тебя посмотрел. Он посмотрел и сказал "нет типа рожей не вышел".
Я по своей не айти сфере как-то работу профильную 2 года искал. При этом у меня было 5 лет стажа в западных компаниях и консалтинге, и даже на момент поиска новой работы я всё ещё на старой работал. Что там день, блин, я бывало на собеседования в БОДАЙБО летал. А ты хоть можешь пресдавить где Бодайбо? То то же.
И ничего, пережил. А вы нежничаете.
А где-то вообще просто спрашивают "ну ты это-то знаешь". "ага" "окей ты нанят". Такое тоже было.
Даже {1}<{2} - это False.
Two sets are equal if and only if every element of each set is contained in the other (each is a subset of the other). A set is less than another set if and only if the first set is a proper subset of the second set (is a subset, but is not equal). A set is greater than another set if and only if the first set is a proper superset of the second set (is a superset, but is not equal).
Отдельный пиздец, что это совершенно не относится к словарям. Их нельзя сравнить по такому же принципу вхождения, но можно сравнить на '=='.
У меня от этого ЯВНОЕ ЛУЧШЕ НЕЯВНОГО.
Понимаю. А ты понимаешь, почему нельзя {1:'a', 2:'b', 3:'c'} > {1:'a', 2:'b'}, но можно {1, 2, 3} > {1, 2}
Потому что совершенно разные типы?
Где? В каждой паре они одинаковы.
Возможно, потому что Dict - hashable type, а set - net. Только хз, как это влияет на операции сравнения.
Посоветуйте что выбрать и с каких манов начать.
Сначала проверить, вхожи ли все ключи одного словаря в ключи другого, а потом проверить из значения на равенство?
>В моделях Django, вы можете указать, что поле допускает значения NULL, добавив параметр null=True в определение поля.
http://djbook.ru/ch06s06.html
На равенство можно == проверять. А вот .keys(), .values() позволяют сравнивать ключи, значения как множества.
Хочу, чтобы работало с not null, как задумано.
Алсо, про sqlite спиздел - там оно тоже не работает. Туториалы нам врут.
Ну, что ты позоришься?! https://docs.python.org/3/library/stdtypes.html?highlight=dict.keys#dict.keys
Все, решил свою проблему оверрайдом в соответствующем классе в admin.py:
[code lang="python"]
from django.contrib.auth.models import User
class XxxxAdmin(admin.ModelAdmin):
# ...
def save_model(self, request, obj, form, change):
obj.xxxx = User.objects.get(id=request.user.id)
obj.save()
[/code]
а словари тут вообще при чем? на множествах есть частичный порядок по включению, на словарях нет более-менее нормальных отношений частичного порядка, и что дальше?
еще бомпани от того что min({1}, {2}) != min({2}, {1}).
Погляди это:
https://pypi.python.org/pypi/wikipedia
сам не пробовал, но вроде то что тебе нужно
Добра. Пойду пробовать.
PyQt4/5, остальное исходя из задач
Сам не знаешь чего хочешь. Каким приложениям? Гуевым? Консольным? Джанго - веб бекенд, асинк ты вообще не в тему вставил.
неплохая теория для начинающих!
Доброго утречка, мои зайчишки-шалунишки! Опять сонненькие, сладенькие котятки? Ну ка, давайте маленькие, просыпайтесь, мордочку умывульки, лапками потягульки-потягульки! Одну лапку подняли, другу лапку подняли - полетели, полетели, полетели, наааа головку сели. Какие вы у меня умнички, медвежатки ласковые, пингвинчики прямо ня, люблю вас всех, нежненькие мои, любименькие, лапками няшите игриво, лентюльки мои пушистенькие, вставать не хотите, глазки сонные, ушки маленькие, мордочкой кривите, а я вас обниму так нежненько, на коленочку посажу и к животику нежненько прижму, чтобы вы бурундчуки махонькие не мёрзли, мурлыкой фыркали приятно так, тёпленько в ладошку и хвостиками хитрили, как котятки смешнявые, ня воть :3
Доброго утречка, мои зайчишки-шалунишки! Опять сонненькие, сладенькие котятки? Ну ка, давайте маленькие, просыпайтесь, мордочку умывульки, лапками потягульки-потягульки! Одну лапку подняли, другу лапку подняли - полетели, полетели, полетели, наааа головку сели. Какие вы у меня умнички, медвежатки ласковые, пингвинчики прямо ня, люблю вас всех, нежненькие мои, любименькие, лапками няшите игриво, лентюльки мои пушистенькие, вставать не хотите, глазки сонные, ушки маленькие, мордочкой кривите, а я вас обниму так нежненько, на коленочку посажу и к животику нежненько прижму, чтобы вы бурундчуки махонькие не мёрзли, мурлыкой фыркали приятно так, тёпленько в ладошку и хвостиками хитрили, как котятки смешнявые, ня воть :3 http://informatics.mccme.ru/course/view.php?id=156
>Think Python мой фаворит из книг. Есть на русском,
tkv7XtktktkANUS;uNinboxPUNCTUMr+Ebu прошу)
Как будто квиз составляли чтобы оправдать собственный обосрамс, но все же кое что узнал это уже мой обосрамс
В 29 правильно расставил скобочки
(1 < 2) == (2 > ((1 in [1,2,3]) < ([2,3,4,5] != 1)))?
В 39 вообще пушка. Приватность не завезли, зато придумали какой-то костыль с трансформацией переменной класса, охуеть вообще, и главное нахуя.
Это ты не умеешь в гугл.
pyqt/pyside для qt, pygobject для gtk
curses для консольных, urwid если ленивый.
Для cli все в стандартном питоне есть.
Надо это все в шапку запихнуть, по десять раз за тред спрашивают.
wikitools еще глянь.
У wikipedia нет возможности получать список статей и подкатегорий в категориях, например.
А у wikitools нет способа получать случайную статью, без прямого запроса через API.
Спасибо! Да, в шапку надо.
Он самый. Пишут любой жанр можно сделать, свой фоллач написать.
А еще wikipedia постоянно подрывается в бесконечные циклы на русской википедии. Там 80% статей - Иван Иванычи Залупкины и по 5 статей про Ивановские сельские советы, ссылающихся друг на друга.
В wikipedia возвращается только строковое название страницы, ищется по нему же. И в этом проблема.
wikitools же возвращает почти везде уже объект конкретной страницы, со набором данных в атрибутах класса.
>Там 80% статей - Иван Иванычи Залупкины
Так а ты чего хотел? Русскую википедию недавно ботами наполняли, чтобы на какое-то там место по популярности языков википедии выйти.
Я так и подумал, когда делал себе бота для сортировки случайных статей по категориям. На английской он выдает куда больше полезной инфы без 100500 категорий уровня "Умершие 21 января" или "Родившиеся в 2001 году" в черном списке.
И при всем этом там больше статей.
Потому что ты питон компилируешь компилятором С++?
Если ты на 2 версии, то используй xrange вместо range
>В 29 правильно расставил скобочки (1 < 2) == (2 > ((1 in [1,2,3]) < ([2,3,4,5] != 1)))?
a R b Q c где R, Q - операторы сравнения, означает a R b and b Q c, только b вычисляется один раз. Математические формулы не видел никогда чтоли? Единственный подвох тут - лалки могут не знать, что in это тоже оператор сравнения.
>>619378
Говнище под названием "вольфрам математика".
> какой-то костыль с трансформацией переменной класса, охуеть вообще, и главное нахуя.
Ты документацию хоть почитай.
Любая впс.
Питон энивеар
Съеби уже в свой 2004, деградант.
Ебать я лалка.
>>619489
Читай. Не один я интересуюсь полезностью этой хуйни http://stackoverflow.com/questions/1162234/what-is-the-benefit-of-private-name-mangling-in-python
Насчет полезности - никогда этой хуйней сам не пользовался.
Спасибо. В rails tutorial ты просто пилишь клон твиттера от начала до конца.
На оффсайте только основы, да и на ютубах одно и то же. Здесь, разве что, пару интересных моментов подсмотрел https://www.youtube.com/playlist?list=PLEsfXFp6DpzRcd-q4vR5qAgOZUuz8041S
Впрочем, этого лично мне для старта оказалось достаточно - дальше я сам себе поставил масштабную задачу а-ля "клон твиттера" и ковыряюсь с ней каждый день. Разбиваю на мелкие подзадачи, избегаю готовых решений по возможности, пытаюсь разобраться сам с помощью, доков, гугла и стэковерфлоу.
мимо_джанго_ньюфаг
Я находил штуки три туториала по джанге с запилом твиттера, завтра ссылки гляну если сам к тому времени не найдёшь
(1,2) - tuple. он иммутабелен
[1,2] - list. он мутабелен
{1,2} - set. множество. в нем только уникальные элементы и порядок не сохраняется(как ключи у словаря).
tuple - иммутабелен, имеет метод __hash__ и может быть ключем у dict'а. Функциональный подход считается современным, и способствующим уменьшению числа глупых ошибок. Tuple - твой бро. примерно это
Это не было очевидно из этих двух постов.
Я бы приминил всякие фишки питона тут. Например чтобы можно было писать:
Card(10,'club') > Card(6, 'club')
Или sum(cards_list)
Ещё запилил бы класс Deck(колода) который бы перемешивал карты сам и можно было брать карту из него методом.
Карточные игры всякие хорошая практика в ооп.
Зачем выкладывать такой мусор на гитхаб? Не, понятно что раз дают возможность - можно заабузить и хоть бэкапы там хранить, но авторитета это твоему профилю не прибавляет.
Не думаю, что это очень полезная штука и это же, скорее всего, можно делать миллионом других способов и уже кто-то такое обязательно написал... Но эта штука изначально планировалась как что-то написанное за вечер, плюс лишний раз помацал этот ваш пайтон, глянул твичевское апи и вообще я молодец.
Думал может кто укажет на какие-то базовые ошибки или предложит что-то другое, вместо Click, для написания удобного cli.
Второй питон, сурцы тут http://pastebin.com/18MeL1Ws
inb4: анимеребенок съеби, лолопараша не нужна, нахуя вообще стримы смотреть
хз у меня вот такое есть в закладках https://github.com/neithere/argh
А стримы твои youtube-dl скорее всего умеер
Когда уходил из профессии все спорили что выбрать: mootools или jquery, все искали тысячу способов генерить XML для ajax, а сейчас куда не гляжу - всюду json'ы которые примерно та же фигня по логике что и XML только чуть по-другому.
А angular это что? А coffee script?
говно это всё. есть ещё backbone, react всякие. ещё что-то. дохрена этого всего наделали плюс остается старое говно типа extjs и прочих
У тебя линукс? Блин, а у меня лолец с вайном не пошел. Всё работает, но шмотки не покупаются. Играю с виртуалки как сыч
А api что api все используют https://en.wikipedia.org/wiki/Representational_state_transfer которые отдает ответы в виде json. А клиентом к этому апи выступает или браузер со всеми этими модными библиотеками или мобильное приложение или десктопное даже иногда.
Ну это да, я так и понял примерно хоть и не особо понимаю что именно оно делает и как
>>619824
А ангуляр зачем? Я понимаю что аналогии фронтэнда и бекенда искать бесполезно, но все же писал сегодня консольную фигню что бы погоду в баш печатало с опенвезермап, там жсон приходит-парсится в одну строку как так и надо самой стандартной библиотекой питона. А жс чего, разучился уже это делать? Не понимаю.
Ангуляр чтобы на основе данных которые приходят с бэкэнда и виде json рисовать это всё в бразере т.е. оно включает в себя что-то типа шаблонов на клиентсайде, формы и т.п.
Сам я его нихуя не знаю и что-то лень учить. javascript был норм пока был простым сравнительно. сейчас это какой-то пиздец пусть фрондендщики сами ебутся.
Спасибо за ссылочку. Обязательно гляну.
А вот за youtube-dl не знаю. Я думал он для немного другого использовался или тот же лайвстример его сам использует. Но я им напрямую только видосики с ютубов воровал...
Я тут скорее пытался решить задачу о том, чтобы не открывать даже твич в браузере. Обычно я открывал его. Находил что хочу посмотреть. Копировал ссылку. Открывал консоль и запускал его через лайвстример. Не особо удобно было... Наверно, я просто делал что-то не так.
>>619823
Да. Бубунта.
Ничего не скажу про лолец под вайном. Я только под шиндовском играл, лол. Но я уже сезона, наверно так, джва, как не играю сам. Дальше нижней платины даже на рашке не смог подняться. Отчаялся и забыл. Сейчас только по испорту угораю - лкс и прочей бесполезной хуйне.
@app.before_request
def before_request():
g.user = current_user
if g.user is not None and g.user.is_authenticated:
return 'poshla von, psina'
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins
И за книжку спасибо.
>впс намного дороже
Лол. Ты собрался работать на контору которая не может позволить себе даже VPS? За еду в буквальном смысле ишачить хочешь?
Первая же глава книги Fluent Python
Sup программисты!
Кун, 25 лвл, с детства хотел обмазаться вер-программированием, но все никак не получалось, сейчас же, зарывшись в личных проблемах решил осуществить свою давнюю мечту. Попросил знакомого чела научить основам, он предложил Python для начального языка, поучил какое-то время, а потом он уехал в далекие края и мое обучение закончилось. Потом я записался на курсы в Netcreacker, но не доучился, не получалось по времени посещать и я отстал от занятий.
Потом понял, что Java мне не по нраву и начал самостоятельно учить Python на codeacademy, в итоге не долго поучившись, увидел вакансию Django-программист-стажер, записался, на данный момент успешно посешал занятия, так называемое домашнее задание по Python сдал без проблем, потом был один вводный курс по Django и вот 3 января мне задали домашку, которую нужно сдать до 7 числа. Собственно с того самого дня, как мне ее задали, почти не сплю, вгрызаюсь в этот Django-гранит и читаю, читаю, но к завершению мой проект так и не близится, более того, на момент написания поста создал опять новый проект и сижу перед пустым приложением, не могу ничего сделать, в голове каша, силы на пределе, но я не сдаюсь, углубляюсь все дальше и настолько же вязну в пучине знаний.
Собственно вот я и приблизился к самому вопросу:
Уважаемые гуру, может есть у кого свободное время, чтобы выделить несколько часов мне, смиренному стажеру, чтобы помочь в создании этого дела, даже не так, помочь это мягко сказано, поэтапно рассказать, что и как делается, чтоб собрать в голове модель работы. Можно в скайпе или как удобно.
Задание такое:
создать модуль достижения целей
Пользователь должен иметь возможность добавить сколько угодно целей, у каждой из них создать сколько угодно этапов. У каждого названия должны быть название и описание, а также статус исполнения. У цели также должно быть название и описание. Статус выполнения цели должен отображаться в % в зависимости от готовности этапов цели.
Все манипуляции должны происходить через web-интерфейс..(без стилей и JS)
в пике приложу то, что я смог сделать.
Sup программисты!
Кун, 25 лвл, с детства хотел обмазаться вер-программированием, но все никак не получалось, сейчас же, зарывшись в личных проблемах решил осуществить свою давнюю мечту. Попросил знакомого чела научить основам, он предложил Python для начального языка, поучил какое-то время, а потом он уехал в далекие края и мое обучение закончилось. Потом я записался на курсы в Netcreacker, но не доучился, не получалось по времени посещать и я отстал от занятий.
Потом понял, что Java мне не по нраву и начал самостоятельно учить Python на codeacademy, в итоге не долго поучившись, увидел вакансию Django-программист-стажер, записался, на данный момент успешно посешал занятия, так называемое домашнее задание по Python сдал без проблем, потом был один вводный курс по Django и вот 3 января мне задали домашку, которую нужно сдать до 7 числа. Собственно с того самого дня, как мне ее задали, почти не сплю, вгрызаюсь в этот Django-гранит и читаю, читаю, но к завершению мой проект так и не близится, более того, на момент написания поста создал опять новый проект и сижу перед пустым приложением, не могу ничего сделать, в голове каша, силы на пределе, но я не сдаюсь, углубляюсь все дальше и настолько же вязну в пучине знаний.
Собственно вот я и приблизился к самому вопросу:
Уважаемые гуру, может есть у кого свободное время, чтобы выделить несколько часов мне, смиренному стажеру, чтобы помочь в создании этого дела, даже не так, помочь это мягко сказано, поэтапно рассказать, что и как делается, чтоб собрать в голове модель работы. Можно в скайпе или как удобно.
Задание такое:
создать модуль достижения целей
Пользователь должен иметь возможность добавить сколько угодно целей, у каждой из них создать сколько угодно этапов. У каждого названия должны быть название и описание, а также статус исполнения. У цели также должно быть название и описание. Статус выполнения цели должен отображаться в % в зависимости от готовности этапов цели.
Все манипуляции должны происходить через web-интерфейс..(без стилей и JS)
в пике приложу то, что я смог сделать.
>2.x или 3.x - Решать тебе, но 2.x официально перестаёт поддерживаться почти везде.
Странно, но в научных вычислениях 2.х до сих пор в тренде.
Scientific Computation: Python Hacking for Math Junkies (2015)
A Primer on Scientific Programming with Python (2014)
Обе книги используют 2.х.
Схуяли нет? Гитхаб это удобное и стабильное хранилище для своего говна. У меня на гитхабе в перемешку с крупными проектами лежат всякая перлопараша на 10-20 строк и ничего.
bitbucket лучше там и приватные репы бесплатно и mercurial
правда сам питон вот переезжает на гитхаб.
Да дохуя. pygtk/pygobject, pyqt/pyside, wxwidgets, tkinter, fltk
Собственно есть немало популярных программ графических на питоне - deluge, gajim, ubuntu-software-center, exaile
Ну у меня и там есть акк с несколькими проектами, но к интерфейсу гитхаба ну очень уж привык.
mirage ещё, meld, pytivi, pysol
Может создать форк гитхаба с бесплатными приватными репами, а окупать с помощью рекламы в дальнейшейм
Готовый стартап
GitLab?
Долго ты конечно тянул, завтра уже 7-е число. Раньше бы обратился, может кто-нибудь и помог бы.
Я вообще туда все подряд выкладываю, тутоииалы готовые, говнокод, велосипеды.
Можно подумать что я ебанутый, но в некоторые дни единственное что меня заставляет дальше учить кодинг это зелёные квадратики в профииле гитхаба
>зелёные квадратики в профииле гитхаба
Между прочим, жидхаб только за год их показывает. И public activity после года неактивности будет девственно чистым, будто ты никогда ничего не делал и не существовал.
Вот мой заброшенный в 2013 аккаунт. А когда-то он был оче зеленым и даже получал коммиты от других юзеров и какие-то лайки.
я все же не теряю надежды. С преподавателем списался - говорит до 10 можно сдать.
я так полагаю, там не особо то и сложно?
Ну мне всё же не гитхабоквадратики нужны, а выучить язык, закодить то говно что я придумал и может ещё кое-чего, а там видно будет, так что переживу, думаю. Просто иногда бывают ну очень ленивые вечера, и тут-то пока квадратики меня и выручали. Методичный подход, все дела.
А у меня вот бомбит от отсутствия полноценной статистики/истории. В каждой всратой соцсети такая функциональность есть, а у гитхаба нихуя. Еще и старую активность скрывают. Мудаки.
Они просто мечтают что ты заебенишь зеленое комбо в 10000 дней
> Можно подумать что я ебанутый, но в некоторые дни единственное что меня заставляет дальше учить кодинг это зелёные квадратики в профииле гитхаба
Хочу тебя расстроить, но ты учишься программировать не на пейтоне, а на джанге.
Для генерации ODT полно фреймворков, гугли python odt. doc/docx - анальщина и зашквар, с ними как правило все кроме МС Офиса работает хуево и через анус. Тем более тебе сложный документ нужен. Хотя тоже было. А тебя что, в гугле забанили?
sudo apt-get install ttf-mscorefonts-installer
или liberation поставь они с виндовых срисованы
>ubuntu-software-center
Хуета, которая, из всех приложений на компе единственная тормозит и падает иногда.
Простое задание, но мне почему-то даже таких не предлагают. Ничего не предлагают. Сосу хуи уже второй месяц.
Вообще тред уже утонул, но вот тебе на всякий случай:
тебе нужно две модели, цель и этап, у цели много этапов. Соотв-но поля у этих моделей как ты описал, название, статус, описание. Для цели нужны методы создать, просмотреть. Дальше стандартный crud.
Там все есть.
MOVE_SPEED = 5
if right:
self.xvel = MOVE_SPEED
и потом на клавишу
if e.key == pygame.K_RIGHT:
right = True
И нужно сделать, что бы при нажатии правой стрелочки персонаж первую секунду набирал скорость, и когда скорость станет 5 оно должно фиксироваться пока клавиша нажата. Как это реализовать?
Можно подробнее? Я только учу питон, нихуя не понял, зачем мне там цикл.
Скачал редактор comodo edit, пикрелейтед. Не могу запустить одну строчку кода (!). После MVS вообще невозможно писать, синтаксис до сохранения исходника не подсвечивает, запускать хуй пойми как, ни в редакторе, ни в терминале, что блять это такое?
все уже перкатились в новый тред, туда репостни
пишут преимущественно на пичарме который вообще няшка
Я пишу:
> for m in range(5):
> board.append(["O"]*5)
и оно, мне, ожидаемо, выдаёт всё одной строчкой, а не пятью. Что делать?
Так, что ли?
> for m in range(5):
> board.append(["O"])
> for i in range(5):
> board.append(["O"])
Всё равно не то
Надо 5 столбцов, 5 строк
Первый цикл забиваешь столбцы, в каждом столбце вторым циклом забиваешь строки.
Т.е. боард.аппенд вложено во второй цикл
http://www.pythontutor.com/visualize.html
Вставляй сюда код и шаг за шагом смотри как оно заполняться будет
Всю кодекадеми с этой херней прошёл
class Student(ScoolMember):
^
SyntaxError: invalid syntax
В чем я ебанат кроме генетики?
Вместо цифр питон в консольку выбивает 1D, 2D, ну короче цифру и D(наверное decimal).
Когда делаю просто
x = 1
print x
Все нормально, но вот в этой хуе-задачке получается ебала:
from sys import stdin
tokens = stdin.read().split()
n = int(tokens[0])
islands = 0
old_type = ""
for island in tokens[1:n + 1]:
\tif island != old_type:
\t\tislands += 1
\t\told_type = island
print islands
Примерчик:
Ввод:
3
10
10
10
Вывод:
1D
Вместо цифр питон в консольку выбивает 1D, 2D, ну короче цифру и D(наверное decimal).
Когда делаю просто
x = 1
print x
Все нормально, но вот в этой хуе-задачке получается ебала:
from sys import stdin
tokens = stdin.read().split()
n = int(tokens[0])
islands = 0
old_type = ""
for island in tokens[1:n + 1]:
\tif island != old_type:
\t\tislands += 1
\t\told_type = island
print islands
Примерчик:
Ввод:
3
10
10
10
Вывод:
1D
Блять ну хуле он так табуляцию сделал:
from sys import stdin
tokens = stdin.read().split()
n = int(tokens[0])
islands = 0
old_type = ""
for island in tokens[1:n + 1]:
if island != old_type:
islands += 1
old_type = island
print islands
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
https://2ch.hk/pr/res/620299.html (М)
Забавное дерьмо, конечно, но лучше сразу к дебагеру привыкнуть.
в LocalStorage впихни ещё что-нибудь.
Скажите мне, как из одного Python-скрипта запустить другой CGI Python-скрипт, дав на вход POST-аргументы, а на выходе получить выхлоп в виде вывода этого самого CGI скрипта и я уёбываю.
Гуглил, нихуя не нашел.
Как за минимальные сроки научить человека пользоваться линуксом и писать скрипты на питоне, на уровне неофита, в минимальные сроки? В идеале нужно одна статья, которая бы обьяснила все на пальцах. Хоть сам пиши, ей богу.
Как вам нахуй удаётся писать не то что в прошлый тред, а сука прямо в позапрошлый? Если бы из дашчана удалить не забыл так бы и сидел ждал ответа вечно, мудило ты пиздоглазое.
Линукс и командная строка : https://github.com/jlevy/the-art-of-command-line/blob/master/README-ru.md
Быстрые видосики по питону: https://developers.google.com/edu/python/?hl=ru
Если именно в контексте сисадмининга то быстро никак, но https://media.readthedocs.org/pdf/python-for-system-administrators/latest/python-for-system-administrators.pdf мне понравилось
Спасибо анон, я пиздоглаз
Ладно еще название препарата либо (Латинская буква)[число]
или же (Латинская буква)[число](Латинская буква)[число], я написал простенькую регулярку, а что если в статье встречаются разные препараты? А с фирмой что делать? У кого есть идеи? Язык статей - Английский.
Запарси список всех фармафирм и сверяй ._.
И иди в новый тред: https://2ch.hk/pr/res/626701.html (М)
Есть желание сделать подгрузку части контента из html-файла на страницу(допустим, index.html) через jquery методом .load() по клику на кнопки, например. html-файл с контентом и index.html лежат в одном каталоге.
К в методе .load() прописать нужный(возможно, статичный) url? Потому что, как я понял, джанго(или нет?) дописывает строку url из метода .load() к хрен знает чему и ищет по получившемуся адресу. Соответственно, при нажатии кнопки скрипт не находит html-файл с контентом.
Ну если ты собрался ПЕСАТЬ САЙТЕКИ, то как бы ничего другого, кроме пхп, тебе и не надо. Питон всё-таки создан для более серьезного бэкэнда и редко с веб-интерфейсом.
Хочется научиться и это делать, но нужны гайды
рандомпик
http://newcoder.io/dataviz/extended/
И сам туториал по ссылке
====================
Етот тред закончился, мудаки, пишите в новый!!!!!
====================
Это копия, сохраненная 25 января 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.