Этого треда уже нет.
Это копия, сохраненная 10 ноября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #561764
Что-то питон в этот раз ПОДГОРЕЛ.
#3 #561770
>>561764
Бывает, хуле.
#4 #561773
>>561770
Кстати неплохая форма для печенья.
#5 #561776
Как правильно погуглить, чтоб понять, как можно постоянно перезаписывать текстовый файл, записывая туда только новый уникальный текст, игноря уже записанный и дубликаты?
#6 #561806
Прошёл курс питона на кодеакадеми. Читал Лутца Изучаем Питон. Куда идти практиковаться?
#7 #561807
>>561806
У Лутца есть книжка по практике.

Мимо-еще-не-прошел-академию
94 Кб, 689x525
#8 #561808
Объясните, пожалуйста, простыми словами, что здесь описывается. А то я Python знаю только на уровне кодакадеми и там такого не было. Или скажите, что гуглить.
208 Кб, 3000x1174
#9 #561823
Залётный ньюфаг-свитор рапортует.
Перекатываю неспеша свой зоопарк скриптов на питон. Вопрос — на какой фреймворк обратить внимание, чтобы можно было прикручивать легковесные вебморды с формами-табличками-графиками. Желательно, чтоб выглядело не как говно. Пока смотрю на flask, но может я чего пропустил.
Да, я понимаю, что мне в /веб/, но они там хостингами меряются, да цмсы разворачивают. К тому же меня читабельность кода интересует в первую очередь, поэтому сюда написал.
#10 #561825
>>561808
У тестов есть методы setUp и tearDown которые вызываются на прогон каждого из тестов (перед и после соответственно). Если на каждый прям тест что-то запускать и настраивать оче накладно, это можно сделать один раз для всего класса, setUpClass, tearDownClass.
#11 #561827
>>561825

>то можно сделать один раз для всего класса, setUpClass, tearDownClass.



Можешь подробнее рассказать как это работает и что такое декораторы и что они делают?
#12 #561828
>>561823
Хороший выбор. Но верстать сам всё будешь. На любом фреймворке. Бутстрап бери.
#13 #561830
>>561827
Напиши пустой класс с 2-3 пустыми тестами. Сделай методы setUp, tearDown, setUpClass, tearDownClass, в каждом из них print('имя метода'), всё сразу поймёшь.
#14 #561831
>>561823
Django, flask, tornado(если нужна асинхронность, хотя такой модуль можно прикрутил и к фласку)
#15 #561835
>>561827
Декоратор это функция, которая принимает на вход другую функцию, оборачивает её и возвращает.

То есть аргумент функция, что-то с ней делаем и возвращаем. Украшаем какбы. Вот и название декоратор.
13 Кб, 542x311
#16 #561849
Подозреваю, что ошибка из-за того, что у меня 3-ий питон. Как это реализовать в нём?
#17 #561850
>>561849
Исправил.

>>561830
Всё равно нихуя не понял. У меня каждый раз открывается новое окно FF. Или это означает, что оно 1 раз инициализирует драйвер и переменные в классе SetUpClass и после этого уже юзает их во всех тестах?
#18 #561857
>>561850
Да. Если просто setUp, tearDown впишешь оно у тебя заново будет открываться на каждый тест.
#19 #561884
Насколько полезна паста про Python с лурчика ?
#20 #561889
>>561884
Максимально.
#21 #561899
Предположим, есть такой код - http://ideone.com/lO8xIG

Как мне правильно сделать сравнение класса в isinstance, чтобы оно работало при любом из:
import collections
from collections import звёздочка
import collections as ASDASD


И поменяв лишь класс, из которого наследую (collections.OrderedDict, OrderedDict, ASDASD.OrderedDict), метод оставался рабочим? Есть возможность через суперкласс как-то достучаться до его неймспейса и оттуда уже напрямую брать 'defaultdict' всегда?
#22 #561915
>>561899
from collections import defaultdict as defaultdict_for_my_custom_check

дальше импортируй сколько влезет хоть по нескольку раз одно и то же.
#23 #561917
>>561915
Нет, идея была в том, чтобы кто-то другой мог это мой класс скопировать себе в скрипт (а как ему там взбредёт в голову модуль импортировать я не знаю) и ему не пришлось копаться и изменять кучу кода, а лишь наследование исправить.

Конечно, модули импортируются лишь один раз, и я могу добавить свой import прямо в класс, но это как-то не интересно.
#24 #561926
>>561917
Сделай функцию. Входной параметр - класс-предок. Выхлоп - твой йоба класс.

from yobamodule import yobafunction

YobaClass = yobafunction(OrderedDict)
#25 #561927
Вообще если что-то надо копировать, то проще уже как gist/pastebin оформить и не ебать мозги. Пусть сами импорты переносят.
#26 #561933
>>561926
И чего это изменит-то? Меня не OrderedDict волнует же, а defaultdict, который находится в том же модуле, что и OrderedDict, от которого класс наследует, и как к нему универсально обратиться без самоличного импортирования модуля я не знаю.

>>561927

>Пусть сами импорты переносят.


Ну это, конечно, разумно, просто думал, что может есть какой способ сделать совсем уж обобщённо.
#27 #561936
All hail the Black Pyton, King of Whores, Father of lies!
We will stand afront the throne of God!
#28 #561944
>>561933
Ну вон же я тебе написал как. Импортировать уже надо твой модуль. Про defaultdict никто даже и знать не будет. OrderedDict это агрумент как бы, и он может быть любой.
#29 #561951
Анон, смотри. У меня цикл, где нескольким кнопкам биндятся функции. В аргументах функции нужно передать номер кнопки. Но! Бинд такое дерьмецо, что все аргументы функции передаются при клике по кнопке, т.е. тогда, когда цикл уже завершен. Как в цикле передать биндимой функции текущий номер кнопки?
#30 #561952
>>561951
Что за библиотеку ты используешь то? В pygtk можно передавать доп аргументы когда вешаешь функцию.
Попробуй
from functools import partial
button.bind(partial(your_func, keyname))
#31 #561956
>>561952
Tkinter. Да, я говноед, но все же.
#32 #561961
>>561956
А что ты имеешь ввиду под кнопкой? Клавишу на клавиатуре или кнопку на окне?
Anyway вот несколько вариантов:
1) partial
2) что-то типа button.bind("<Button-1>", lambda event: your_func(event, "button1"))
3) получать в твоей функции номер кнопки или объект по которому ткнули из аргумента event эти данные в нем содержатся.
#33 #561962
>>561961
Кнопку на окне. Спасибо, не ткнешь носом, где подробнее почитать про event?
#34 #561963
>>561962
http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

Вообще научись использовать repl - запускаешь python или лучше ipython
И набираешь
import Tkinter
help(Tkinter.Event)
Там всё описано.
#35 #561966
>>561963
Лучи добра тебе, няш. Ушел курить.
#36 #561989
>>561966
Не возвращайся никогда.
#37 #562144
Где брать практику по уровню знаний?
#38 #562151
>>562144
Фриланс доски и репорзитории опен сурс проектов.
#39 #562152
Есть матрица NN.
Есть вектор N
1.

Нужно реализовать метод Краммера. Для этого надо менять для неизвестной под номер i столбец в матрице под номером i на вектор. Как эту хуйню заебашить?

Пока что только дошел до одной итерации, как сделать для N не могу понять. http://ideone.com/ac2Pfp
#41 #562155
>>562153
Спасибо, капитан. Эту ссылку я нашел наверное недели 2 как уже. Однако, если ты присмотришься внимательно эта хуита работает лишь в случае 3x3 и 2x2 системах, у меня же нет ограничений NxN. Поэтому данный быдлокод мне не подходит.
#42 #562159
>>561713 (OP)
Посоны, а где в петону поглядеть как он логарифм, к примеру считает?
#43 #562165
>>562159
The math module consists mostly of thin wrappers around the platform C math library functions
#44 #562167
>>562165
Thank you, u so useful Mr Anglichaneen
#45 #562168
Как вы тестируете асинхронность?
#46 #562170
>>562168
Как запускаешь, так и тестируешь, очевидно же.
#48 #562178
>>562152
Решил короче.
#49 #562180
>>562178
Решил сам, покажи другому!
#50 #562252
>>562159
Для логарифмов там вообще, по-моему, отдельные наборы инструкций на процессорах имеются, так что простенькой однострочной формулы в сорцах ты не увидишь. А так раскладывают в ряды и считают до нужной точности.
#51 #562268
Стыдно задавать такой вопрос, но придется.
Изучая библиотеку для взаиможействия с АПИ твиттора, я написал пару скриптов для подписки\отписки\постинга и т.д.
Подскажите, пожалуйста, как сделать бота так, чтобы работали несколько аккаунтов параллельно. Для каждого аккаунта свои настройки (задержки, теги, количество подписок и т.д.) И чтобы был единый ГУИ для всего этого дерьма. На Qt или даже веб морда

Просто я тупой и не понимаю как это все структурировать. Вот есть у меня один скрипт, а что с ним делать хз. Написать еще один скрипт, который будет вызывать кучу скриптов с определенными параметрами? Как-то это костыльно. Хотелось бы веб морду, настройки в бд, чтобы все как у людей
#52 #562274
>>562268
Модно-молодёжно: asyncio, aiohttp, quamash+PyQt/websocket+browser.
Дедово-пердёжно: threads, PyQt/pyside/gtk/tkinter
#53 #562275
Пуссаны, я тут пишу в ПУчарме. Пишу себе пишу, ночь вот уже подкрадывается, кот сопит. Вот почти главу учебника долистал, все усердно переписываю. А в учебнике код типа:
mamka= dvach(a = "2", b = "c")
Прилежно переписываю. И он мне подчеркивает пробелы, a = "2" вокруг присваивания. И ссылается на пеп8. Это важно? Или мой вопрос не имеет смысла? А вообще пока я писал, то решил что пеп8 авторитетнее учебника, и я буду писать так как велит ИДЛЕ. А Чтобы все это время написания поста небыло потрачено впустую, я его отправлю.
#54 #562277
>>562268

>Написать еще один скрипт, который будет вызывать кучу скриптов


А разве бывает по-другому? Те же вебфреймворки выглядят как-то иначе?
#55 #562282
>>562275
Каэшн пеп8, что тут думать-то? и, да, это важно
#56 #562285
>>562277

> А разве бывает по-другому?


А вот и ветераны подтянулись.
#57 #562287
>>562285
Не ветеран, а ньюфаг. Я действительно не понимаю, что имеется в виду "по-другому". Не приведешь пример?
#58 #562310
>>562274
Благодарю.
Попытаюсь освоить вот это вот все.
Еще вопрос, нужна ли мне бд и какую использовать? nosql?
#59 #562358
На работе хотят переписать поиск (достаточно тяжелый) на go, типа потому что go быстрый.
Я хочу попробовать использовать какой-нибудь поисковый движок из этих
https://github.com/rosarior/awesome-django#search
но не знаю какой выбрать. Нужен быстрой поиск по моделям без изъебств вроде сементики и пр. Что посоветуете?
(На беке python27 и джанга 18)
#60 #562368
>>562358
Собственно django-haystack может использовать разные поисковые движки под капотом. ( Solr, Elasticsearch, Whoosh, Xapian, etc.)
Какие из них лучше - хороший вопрос, наверное где-то есть статьи которые их сравнивают.
#61 #562379
>>562274

>asyncio


Почему не Tornado?
#62 #562409
>>562287
Вызывать скрипт один раз, очевидно.
>>562310
Любую. Если данных немного, то можно и sqlite, которые в пифоне по дефолту есть. Также рекомендую sqlalchemy, нраится.
>>562379
Можно и торнадо коненчо же. Просто если торнадо, то точно web, а с asyncio можно ещё gui делать на PyQt.
#63 #562449
>>562409

>Вызывать скрипт один раз, очевидно.


Да, это всё кардинально меняет.
#64 #562479
>>562409

>Вызывать скрипт один раз, очевидно.


У него есть скрипт, выполняющий действие. Это действие нужно повторить на нескольких аккаунтах. Как тут обойтись без вызова скрипта несколько раз-то? (Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один?)
#65 #562502

>Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один



Именно наоборот. Вызов скрипта - это как раз запуск .py файла , всё остальное - вызываются функции, инициализируются классы, выполняются методы.
#66 #562505
>>562502
Разве при "запуске файла" не происходит как раз "всё остальное"?
#67 #562534
>>562170
>>562171
Хех, ну это и сам всё делаю. Интереснее тестами покрыть же. Вот собсна вопрос как.
#68 #562540
>>562180
[code]
for i in range(len(A)):
TA = np.delete(A,i,axis=1)
TA1 = np.insert(TA,i,vectorE,axis=1)
[/code]

A - матрица NxN
TA - убираем столбец из матрицы с позиции i
TA1 - вставляем в TA на позицию i нужный нам столбец.

После этого пара манипуляций и метод крамера готов. Почему его нет в numpy для меня загадка.
#69 #562541
https://pythonhosted.org/six/

Вот какую хрень приходится городить из-за трешки сраной
#70 #562547
>>562409

>Вызывать скрипт один раз, очевидно.


Эм. Ты называешь скриптом файл или содержимое файла? Вообще можно тупо сделать словарь с данными акков и распараллелить внутри твоего скрипта чтобы создавал новый тред под новую пару логин/пароль.
#71 #562548
>>562541
2015 год пора перебираться на тройку, а не сосать хуи на двойке.
#72 #562626
Делал ли кто-то неявный метод Эйлера?
#73 #562715
>>562541
Лол. Жалкий червь-ретроград сокрушается на тяготы жизни.
#74 #562779
>>562626
Че бля?
#75 #562781
>>562626
Я делал, но он получился такой неявный, что я нихуя не заметил.
#76 #562790
Анон, у меня, наверно, крайне глупый вопрос: как на сервере найти виртуальное окружение? В каких конфах я могу найти намёки на его локацию или есть ещё какие-то способы? Прошлые говнокодеры развели тут помойку: симлинки какие-то сраные везде, охуеть вообще.
Системно стоит допотопная 2.4, приложение работает на 2.7-его исполняемый файл и pip2.7 я уже нашёл. Приложение крутиться на Wsgi, Nginx.

inb4: find / -name "activate"
#77 #562791
>>562790
А как приложение запускается, откуда?
#78 #562802
>>562790
В переменных окружения должен быть прописан путь, не?
#79 #562806
>>562790
echo $PYTHONPATH
#80 #562811
>>562449

> Написать еще один скрипт, который будет вызывать кучу скриптов


и

> Вызывать скрипт один раз


Совершенно разное.
>>562479
Именно запуск .py файла. Не знаю откуда у кого-то может возникнуть ассоциация «скрипт» → «часть кода». Вот, допустим, был у тебя код в файле, ты его назвал «скрипт», потом добавил туда код из другого файла, который тоже «скрипт» и что, у тебя теперь два «скрипта» в одном файле? Бред же.
>>562547
Скрипт — это файл, точно вам говорю, посоны.
>>562505
С таким подходом вообще всё, что написано на пифоне, выполняется при «запуске файла». Изначально я намекал лишь на то, что запускать много инстансов пифона aka «скрипт, который будет вызывать кучу скриптов» архаично.
#81 #562814
Как почувствовать себя эффективным девелопером , когда ты лишь неделю как первый хеловорулд написал? Мой рецепт прост! Купи себе маркер, и делай рабочие записки по своему ПРОЕКТУ на прозрачной доске(как в рекламе). У меня доски нет, но есть окно, и на нем я буду карябать свои ИДЕИ на псевдокоде. А вы все быдло!
#82 #562816
#83 #562819
>>562811

>Скрипт — это файл, точно вам говорю, посоны.


Мне кажется, ты путаешь причину со следствием. Скрипт - это программа, обычно состоящая из одного файла, который, как следствие, так же называют скриптом. Но это не значит, что скрипт должен состоять из одного файла.
304 Кб, 1500x1000
#84 #562823
Скрипт по-хорошему нужно от руки пером выводить.
#85 #562846
Кстати, новый асинхронный синтаксис в 3.5 предложили чуваки из одной конторы. Они там какую-то йоба-БД пилят http://edgedb.com/ Вроде как она собирается убить и примитивный NoSQL, и реляционные базы.
#86 #562850
>>562814
Я в конце дня стараюсь написать пост в жж. Что сделал, что не сделал и почему. И теги: хорошо, плохо. Соответственно: сделал всё намеченное и не сделал ничего. Само собой все записи скрыты.
#87 #562851
>>562850

> хорошо, плохо


> 2015

#88 #562852
>>562851
Не понял?
#89 #562854
>>562850
У тебя дневник скорее, в которм ты отслеживаешь свою ификтивность, а я просто вместо тетрадки для заметок на стекле пишу. Хотя дневник надо бы завести,
#90 #562855
>>562851
Этот дневник для меня, а не для кого-то, чтобы потом прочитали. Два тега, для того что бы потом сделать анализ, какой день прошел хорошо, всё в этот день сделано, почему, и какой день плохо, почему.
#91 #562865
>>562852
Оценочные суждения.
#92 #562866
>>562846
Я думал он из c# спёрт.
#93 #562877
>>562866
Кек. Видимо да. Похоже очень. Ну это лучше чем целый декоратор впиливать.
#94 #562930
>>562866
В котором он недоспёрт из f#.
#95 #562955
Ребята, пишу автотесты (нубьё 80 уровень), осваиваю Page Object и всю эту хуйню.

http://pastebin.com/bkJ4Ey3U

Обратите внимание на test3_link_following. Просто ни в какую не хочет кликать по ссылке. В чем может быть проблема?

Selenium + WebDriver // Python 3.5
#96 #562997
Верстальщик на связи. Вопрос по Джанго и global.

Если объявить переменную глобальной в model.py (Например у меня действия после сохранения http://djbook.ru/rel1.4/topics/db/models.html#overriding-predefined-model-methods) я её достану в view.py?
#97 #563000
>>562997
Не делай так.
#98 #563001
>>563000
А как сделать?
#99 #563004
>>563001
Объясни сначала что ты хочешь сделать, что должно быть в этой переменной.
#100 #563019
>>563004
У меня таблицы: сообщения, "страница" и "предок-потомок". В таблице "предок-потомок" одноименные поля. Таб. сообщения связаны по ключу с предком-потомком. И таб. страницы и связаны по ключу с предком потомком. В эти поля предок-потомок я хочу записывать комменты.

После request.method == 'POST' в view.py, я сохраняю в таблицу 'сообшения' пришедшееи хочу после сохранения в model.py объявить глобальной переменной и прописать её в RequestContext и шаблон чтобы вставить в data-id="глобальную переменную которая будет равна id в таб. сообщения".

Эта же функция опять принимает post с комментом если data-id (найду на странице на что ответ и отправлю его если он есть) не none, то там id и это потомок в табл. "предки-потомки".
#101 #563020
>>562955
Решил вопрос переключением между окнами, так как ссылка имела target = _blank, что открывало её в новом окне. Всем похуй, но мне приятно, что я разобрался.
#102 #563021
#103 #563025
>>563020
Молодец, рад что ты разобрался. Правда, я не имею ни малейшего представления о том, что ты вообще делал. Но это только увеличивает ценность твоего достижения. Поздравляю.
#104 #563047
>>563019
То есть ты во вью её используешь?
Почему не сделать просто
if request.method == 'POST':
..m = Message()
..m.save()
..return render_to_response('temlate.html', context={data:m.id})

Вообще ты меня запутал. Покажи пример кода.
Но использовать глобальные перменные нельзя, особенно в джанге. Вообще.
#105 #563048
>>563019
Дело хотя бы в том, что когда ты будешь запускать этот свой джанго проект на рабочем сервере типа uwsgi или gunicorn - у тебя будет несколько тредов там. И это глобальная перменная будет между ними общей. И всё сломается.
#106 #563051
>>563047

>m.id


Он покажет id сохранного? Спс.

Да кода еще нет, только думаю как сделать
#107 #563053
>>563051
Да. Но только после того, как ты сделал save
Из доков:

>>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')


>>> b2.id # Returns None, because b doesn't have an ID yet.


>>> b2.save()


>>> b2.id # Returns the ID of your new object.

#108 #563082
>>562791
>>562806
>>562802
/usr/local/python/bin/python2.7 - локация исполняемого файла
Ошибся, всё крутится на apache+mod_wsgi, ни в одной конфе нет намёков на виртуальное окружение или я не там смотрю.
PYTHONPATH не определён, за то вышеуказанный файл python2.7 засунут в другую переменную.
#109 #563088
>>563082
Попробуй не PYTHONPATH, а VIRTUAL_ENV.
#110 #563108
>>563088
Делал printenv, ничего похожего не было, кроме того, что написал выше.
#111 #563128
>>561828
>>561831
Стоит смотреть в сторону pyramid?
мимоанон
#112 #563144
>>563128
Нет
>>563082
Может там нет virtualenv вообще, всё стоит в /usr/local
#113 #563220
>>563144
Похоже на то. Не пойму, как это работает, если по умолчанию стоит 2.4.
#114 #563240
>>563220
А в настройках apache смотрел, может там путь к 2.7 прописан?
#115 #563249
>>563220
Вот эти директивы:
WSGIPythonHome
WSGIPythonPath
#116 #563303
>>563240
>>563249
Завтра ещё раз гляну на работе, спасибо посоны.
#117 #563331
Блять.

Есть цикл в котором я получаю вектора. С каждым шагом значение вектора пересчитывается. Как мне блять из этого отрисовать график с matplotlib, если получается конструкция
[array([[ -1.96046246e+286, 0, 0, 0], [ 5.88000000e+001, 0, 0, 0],[ 5.88000000e+001, 0, 0, 0], [ 5.88000000e+001, 0, 0, 0]])]?

В результате ебаный Pyplot не может в отрисовку.

Выдавая:
raise ValueError("x and y can be no greater than 2-D")
ValueError: x and y can be no greater than 2-D

Гугление ошибки выдаёт какую-то дичь без решения данной задачи. Ясное дело, что вся проблема в лишних скобках, но как от них избавиться или хотя бы отрисовать значения.
128 Кб, 582x604
#118 #563356
>>563331
А ты как собрался четырёхмерные вектора отрисовать на экране?
#119 #563366
>>563356
Хз.
Нужно решить ОДУ методом Эйлера и отрисовать его на экране. Оду выглядят в виде Ax=Y, где x и Y - векторы, а А - матрица.
#120 #563369
>>563366
Координаты какие? x,y,z,t?
#121 #563374
>>563369
x1, x2, ... , xn.

Короче.

Есть матрица C
[[10e-06, 0, 0, 0],
[0, 10e-03, 0, 0],
[0, 0, 10e-02, 0],
[0, 0, 0, -1000]]

Есть матрица G
[[0.03, -0.01, 0, 0],
[-0.01, 0.02, 0, 1],
[0, 0, 0.01, -1],
[0, 1, -1, -1]]

Считается общая матрица А
А = Cp + G, где p = sqrt(-1)W. Собственно задаешь W получаешь N итераций и матриц соответственно.

Есть вектор Е
[2, 0, 0, 0]

Но выражение выглядит в общем виде Ax = Y, где x, y - вектора как я уже говорил.

По сути каждая строка матрицы A это константы при X из уравнений вроде 12
x1+ 26x2 + 35x3 + x4 = 100, Y - содержит значения правой части равенства. Нужно найти X. Делается эта хуйня у меня методом Краммера. То есть берется матрица A и в ней в соответствии с индексом X заменяется соответствующий столбец на вектор Y. Потом считается определитель оригинальной матрицы и измененой и делятся друг на друга выходит соответствующий X. Тут всё вроде как заебись.

Но теперь мне эту хуйню надо проверить методом Эйлера и у меня хуёво выходит.

Эйлер для моего случая выглядит как

X(i+1) = Xi + (Y - AXi)h, где A это G*C^-1 матрица, h - шаг, Y - типа как ненулевое значение вектора.

Я хуй его знает. Это что-то рисует, но выходит дичь какая-то и я не знаю правильно или нет.
#121 #563374
>>563369
x1, x2, ... , xn.

Короче.

Есть матрица C
[[10e-06, 0, 0, 0],
[0, 10e-03, 0, 0],
[0, 0, 10e-02, 0],
[0, 0, 0, -1000]]

Есть матрица G
[[0.03, -0.01, 0, 0],
[-0.01, 0.02, 0, 1],
[0, 0, 0.01, -1],
[0, 1, -1, -1]]

Считается общая матрица А
А = Cp + G, где p = sqrt(-1)W. Собственно задаешь W получаешь N итераций и матриц соответственно.

Есть вектор Е
[2, 0, 0, 0]

Но выражение выглядит в общем виде Ax = Y, где x, y - вектора как я уже говорил.

По сути каждая строка матрицы A это константы при X из уравнений вроде 12
x1+ 26x2 + 35x3 + x4 = 100, Y - содержит значения правой части равенства. Нужно найти X. Делается эта хуйня у меня методом Краммера. То есть берется матрица A и в ней в соответствии с индексом X заменяется соответствующий столбец на вектор Y. Потом считается определитель оригинальной матрицы и измененой и делятся друг на друга выходит соответствующий X. Тут всё вроде как заебись.

Но теперь мне эту хуйню надо проверить методом Эйлера и у меня хуёво выходит.

Эйлер для моего случая выглядит как

X(i+1) = Xi + (Y - AXi)h, где A это G*C^-1 матрица, h - шаг, Y - типа как ненулевое значение вектора.

Я хуй его знает. Это что-то рисует, но выходит дичь какая-то и я не знаю правильно или нет.
#122 #563389
>>563374
Мож тебе сходимость итераций нужно нарисовать?
#123 #563390
Вай красота.

https://docs.python.org/3/library/contextlib.html

Надо всё-таки как-нибудь выучить уже от корки до корки, чтоб от зубов отскакивало.
#124 #563394
>>563389
Вряд ли. В моём случае Метод Эйлера служит для вычисления динамических характеристик эквивалентных электрических схем.
28 Кб, 901x202
#125 #563406
Есть такая проблема: надо проверить ввод на валидность. Должно быть 3 числа в строке, разделенных пробелами, первое и второе от 1 до 20000, третье от 2 до 37. Как это сделать красиво и правильно? Накатал пик-релейтед, но кажется это гавно.
#126 #563409
>>563406
Ты прав. Редкостное говно.

Делай отдельную функцию input_numbers. Внутри неё while true. Алгоритм применяй уже вне этой функции, к выходному значению.

a, b, c = input_numbers()
algo(a, b, c)

Ещё одну функцию делай для проверки и подчистки числа:

def refine_number(nstr, minv, maxv)
r = int(nstr.strip())
if not (minv <= r <= maxv):
raise ValueError('Не попали в диапазон')

В случае непопадания в диапазон выбрасывай ValueError. Хуйня вместо числа тоже выбросит ValueError, например int('abc').

while True:
inp_str = input()
try:
a, b, c = inp_str.split(' ') # вот здесь ещё тоже может быть экзепшен, так как числа может быть не 3, слови его отдельно
a = refine_number(a, 1, 20000)
b = refine_number(b, 1, 20000)
c = refine_number(c, 2, 37)
except ValueError as e:
print(e)
else:
break
#126 #563409
>>563406
Ты прав. Редкостное говно.

Делай отдельную функцию input_numbers. Внутри неё while true. Алгоритм применяй уже вне этой функции, к выходному значению.

a, b, c = input_numbers()
algo(a, b, c)

Ещё одну функцию делай для проверки и подчистки числа:

def refine_number(nstr, minv, maxv)
r = int(nstr.strip())
if not (minv <= r <= maxv):
raise ValueError('Не попали в диапазон')

В случае непопадания в диапазон выбрасывай ValueError. Хуйня вместо числа тоже выбросит ValueError, например int('abc').

while True:
inp_str = input()
try:
a, b, c = inp_str.split(' ') # вот здесь ещё тоже может быть экзепшен, так как числа может быть не 3, слови его отдельно
a = refine_number(a, 1, 20000)
b = refine_number(b, 1, 20000)
c = refine_number(c, 2, 37)
except ValueError as e:
print(e)
else:
break
33 Кб, 241x208
#127 #563410
>>563406

>эти шрифты


>этот код

#128 #563422
>>563409

Спасибо.

>>563410

>эти шрифты


Стандартный идл.

>этот код


Он работает!
#129 #563432
Посоны, проясните мне за eggs, wheels и zipimport. Почему яйца устарели, нахуй вообще нужны колёса, почему вместо яиц нельзя просто импортить из зипфайла?
#130 #563435
Что за хуйня у вас вместо ООП? Я не шучу, не толщу, мне на самом деле интересно. Все эти __init__(self) дебильные, наследование от object не по умолчанию. Вам самим разве приятно?
#131 #563436
>>563435

>наследование от object не по умолчанию


Чё?
Что не так с init?
#132 #563439
>>563436
Ну я в спеке читал, что можно class hui, а можно class hui(object). И вот во втором какие-то фичи есть дополнительные. Не помню уже.

С __init__? Нижние подчёркивания, неявная передача инстанса в качестве объекта.
#133 #563440
>>563439
То в двойке костыль был. Типа old-style oop и new-style oop. Это они так обратную совместимость кода сохраняли. В тройке уже что так, что так - разницы нет, всё new-style.

Нижние подчёркивания указывают на магический метод. В питоне их дохуя разных, не только init, и это позволяет их легко отличать от обычных. То есть init не предназначен для явного непосредственного вызова.

Передача self аргументом позволяет все функции в классе рассматривать как обычные функции, применять к ним декораторы, преобразования. Ни про какие bind this мы не вспоминаем, всё просто работает. Bound method в инстансе это такой карринг этих функций.
#134 #563442
>>563440
Про костыль понял, окей.

Я знаю, для чего они. Выглядят они премерзко.

Ах, каррирование. Ну тоже не очень приятно смотрится. А говорят, что должно радовать глаз.
#135 #563443
>>563442
Тёма, это не раздел «Типографика».
#136 #563445
>>563440

>То есть init не предназначен для явного непосредственного вызова.


А как же super().__init__()?
#137 #563447
>>563445
Ну так ты вызываешь его внутри init потомка. Больше по идее нигде, хотя явно это не запрещается. Антипаттерн это вызов init из других методов класса и напрямую у инстанса.
435 Кб, 596x720
#138 #563456
>>563447
Антипаттерн — это ООП в Python.
#139 #563458
>>563456
Ну как скажешь. Лисп учить я всё равно не буду.
#141 #563462
>>563461
Сырна_, ну хватит тебе уже так __подгорать от_змеиного синтаксиса_.
#142 #563475
>>563442
Конечно, говноеду не по вкусу.
142 Кб, 341x341
#143 #563478
>>563432
Бамп вопросу.
#144 #563479
>>563478
Иди на хуй.
#145 #563485
Посоны, такой вопрос:

Если URL содержит не-ASCII символы, то из него может выйти что-то такое:

%D1%80%D1%83%D1%81 - этот кусок представляет 'рус' на русском.

Как называется такое кодирование и как строки, содержащие такие абракадабры, сделать читаемым юникодом?
#146 #563487
>>563485
Так вроде нагуглил urllib quote / unquote
но советы по прежнему приветствуются
#147 #563493
>>563487
>>563485

Вот так кароч
import urllib.parse
text = '%D1%81%D0%B2%D0%B0%D0%B7%D0%B8%D0%BB%D0%B5%D0%BD%D0%B4'
urllib.parse.unquote(text)
свазиленд
#149 #563554
>>563485
Блять, у меня такая же проблема. Отправляю русский текст, на выходе абракадабра получается.
#150 #563564
>>563554
А кодировку UTF-8 ты забыл обозначить?
#151 #563568
>>563564
Нет, не забыл.
#152 #563573
>>563564
Блядь, магия какая-то. Один раз указываю - нихуя не робит, воторой раз всё ок. Пздц.
#153 #563682
>>563573
А в чем ты пишешь? Если PyCharm, то там в настройках проекта можешь еще попробовать кодировку поставить UTF-8
#154 #563700
>>563682
В виме.
69 Кб, 1200x800
#155 #563703
>>563700
Это консольный примитивный редактор из 70-х? Он же вообще юников не может наверное.
#156 #563726
>>563700
Ясно.
#157 #563750
>>561713 (OP)
По совету из Пасты(Священный текст!) я ныряю в питон. Он черный(как на ОПпике), скользкий как тысяча дьяволов. Омут зла. Вот к примеру, трудно заходит глава о регулярных выражениях. Ну, честно сказать, очень тяжко идет. А как у вас с ними?
#158 #563761
>>563750
Регулярные выражения одинаковая ебатория во всех языках. Что в яве что в яваскрипте что ещё где.
Другое дело, что в питоне дохуя способов вообще избегать регулярки там где не надо. Можно пользоваться всякими split, 'foo' in bar.lower() и прочими конструкциями. Ещё есть библоитеки для генерации человеко-читаемых регулярок.
Или готовые парсеры всяких форматов, так что не придется их регулярками парсить.
Вот в перле регулярки на каждом шагу и там это правда ад.
Так что не переживай, вряд ли тебе много ими придеться пользоваться.
#159 #563764
>>563761
>>563750
Вот кстати пиздатый сервис, чтобы по-упражняться и подобрать нужную регулярку

http://www.rubular.com/

Засовываешь какой-то тестовый текст и смотришь, с чем совпало, а внизу тебе и шпаргалка сразу.
#160 #563771
>>563761

> библоитеки для генерации человеко-читаемых регулярок


Молю!
#161 #563773
Хуле такого сложного вы нашли в регулярках?
43 Кб, 500x374
#162 #563774
#163 #563777
>>563771
Заебался искать. Вот нашел.
https://pyparsing.wikispaces.com/
#164 #563778
>>563773
Пока они простые всё просто. Но дальше начинается ад, когда надо всякие backwards-выражения делать и прочее.
#165 #563802
Есть какие-нибудь красивые способы разбора json с овердохуя вложенными ключ:значениями? Заебался писать циклы просто.
#166 #563823
бумп
#167 #563833
Лесенка строчится, лавэха мутится.
#168 #563847
Чому не правильно работает?
http://pastebin.com/M1UgDkMc
#169 #563849
>>563847
Питон не любит, когда в его коде присутствует мат.
#170 #563850
>>563849
А вообще, нахуя ты впихнул это всё (прямо всё) в цикл?
#171 #563851
>>563849
Лжец, Черный Змей обожает сквернословие и блуд!
#172 #563852
>>563847

>s = input


не надо так
#173 #563855
>>563852
А как надо?
s = input("Введите что-нибудь : ) ?
#174 #563864
>>563855
да убери их просто, один раз считывай инпут и все
#175 #563865
Аноны, в винде нужно узнать статус раздавалки SoftAP или как альтернативу наличие рабочей сети.
В какую сторону рыть, чтобы вывести эту инфу через питон? Гугл говорит юзать винапи, но вменяемых доков и примеров так и не нашел, везде сотни строк непонятного кода.
#176 #563900
>>563865
Cама функция в WinAPI вроде называется WlanHostedNetworkQueryStatus, но как её использовать в питоне так и не понял. Установил питоновский win32api, но оно такого метода не имеет.
47 Кб, 398x512
#177 #563908
>>563462
Он уродлив.

>>563475

>кудехт

#178 #563909
>>563855
s=input()
74 Кб, 736x981
#179 #563942
Какой форум(https://www.djangopackages.com/grids/g/forums/) ставить? Самый важный для меня параметр - простота и как следствие - надежность. Чтобы без уязвимостей потенциальных было.
И второе, дайте инфу по установке форума(или другого пакета). В выдаче гугла и ютуба одна хуита(или я в глаза долблюсь?). Добра.

Ньюфаг-кун.
#180 #564110
>>563908

>Он уродлив.


Покажи пример неуродливого, чтобы я его назвал уродливым
#181 #564111
>>563942

>Чтобы без уязвимостей потенциальных было


Размечтался, бля.
#182 #564112
Питоны, я тереблю всю литру по питону сейчас, у меня вопрос возник. Читать о алгоритмах надо уже после того, как окончишь с питоном?
#183 #564114
>>564112
до того, как начнешь.
#184 #564148
#185 #564185
Есть список [['R', 10, 'R1', '0', '0'], ['L', 15, 'L1', 0, 2]]
Нужен способ, чтобы находить определенные куски. Например ввожу L и он мне выдает ['L', 15, 'L1', 0, 2], словари не подойдут вероятнее всего, потому что таки 'L' может быть дохуя.
#186 #564186
>>564185
через циклы
#187 #564187
>>563908
Можно ныть как хуесос что синтаксис уродлив или сделать wrapper на свой вкус.
#188 #564188
>>563847
Братишка не надо делать дохуя if, в питоне конечно нет case, но зато его можно сделать через словарь. Так намного удобнее.
#189 #564189
>>564186
Ну ебать, напиши мне цикл компактный. Я пока в затруднении сообразить его. Как-то впадлу чекать весь список и потом смотреть первый элемент. Может есть лучше вариант.
#190 #564190
>>564185
[x for x in SPISOK if 'L' in x]
#191 #564191
>>564189
filter(lambda x:x[0] == 'L', SPISOK)
#192 #564210
Как меня достали эти лесенки...
#193 #564213
>>564210
Какие лесенки?
#194 #564214
>>564213
Лесенки, которые парсят json.
#195 #564219
>>564214
Рекурсию сделай. Или import json.
104 Кб, 1122x211
#196 #564351
Аноны, хэлп.

Я уже день убил на эту хуйню. Суть проблемы: Решил я поиграться с создание оконных приложений на питоне под шиндовс. Скачал сам питон, PyQt4, и как среду разработки- Pydev вместе с Liclipse. всегда ловлю такой месседж
#197 #564363
>>564351
Соси со своим иклипсом и четвёртым пукутэ.
#198 #564368
Поцоны, пистон не запускается ВИН ХР, пишет "не является приложением ВИН32", че делать?
#199 #564369
>>564368
На ставить 64разрядную версию питона на свое допотопное говно.
#200 #564375
>>564363
OK, а что тогда ставить, чтобы все работало?
#201 #564390
>>564375
Питона должно хватать. Если тупорылый, пиши в вижуал студии.
458 Кб, 2000x2320
18 Кб, 379x400
5 Кб, 225x171
#202 #564397
>>564351
c:\program fails\
уебывай
#203 #564398
>>564351
Но по теме-я писал на pygtk в прыщесреде, качал сборочку python+pygtk под винду и всё запускалось под шиндой. Тоже самое с pyqt.
Нахуй тебе запускать какие-то pydev в винде?
#204 #564415
>>564369
Но я ставлю 32разрядную версию питона на свое допотопное говно
#205 #564416
>>564398
pygtk депрекейтед в пользу pygobject, прекращайте советовать нюфакам pygtk и начинайте советовать pygobject.

Вообще забудьте про pygtk
#206 #564417
>>564416
Я не советовал. Я говорю что лет 5 назад когда я делал свой быдлокод под винду тоже pygtk работал там заебися.
#207 #564418
>>564417
Ну лан.
#208 #564419
>>564418
Но вообще gtk3 не нужен. У меня весь софтик под gtk2
#209 #564421
>>564419
$ apt-cache rdepends libgtk2.0-0 | wc -l
1194

$ apt-cache rdepends libgtk-3-0 | wc -l
528

И это еще дебиан стейбл.
145 Кб, 1600x900
#210 #564422
>>564421
твои прыщепроблемы меня не ебут
#211 #564425
>>564422
Где ты тут проблемы увидел, даун агрессивный? И нахуй мне скриншотик?
#213 #564427
>>564426
Ебать ты король хипстеров.
24 Кб, 250x291
#214 #564432
#215 #564471
>>564185
У Лутца в учебнике говорилось про дополнительную индексацию, со схожим со словарем принципом.
#216 #564707
>>561806

>кодеакадеми.


Што за кодакадеми?
#217 #564709
>>564707
Так погуглил и нашел
https://www.codecademy.com/tracks/python
Про это речь у тебя >>561806 ?
#218 #564716
>>564709
Ты из какого года?
#219 #564741
>>564716
Из 1889. У нас как раз Питон в моду входит.
#220 #564802
>>564716
Что не так? На меня просветление только пару дней назад снизошло - решил код изучать.
>>564709 - анон
#221 #564807
>>564802
Через пару дней отпустит.
#222 #564833
>>564807
Жи есть, братан.
#223 #564906
>>564709
Да, я про это
#224 #564921
>>564807

>Через пару дней отпустит.


А вдруг нет?
Я тут понемножку почитываю и мне нравится.

>>564906
Я так и понял. Только чот там все так запутанно - тыкаю пока наугад
#225 #564935
>>564422
Что с about файрфокса, лол? Похоже на прыщепроблемы.
#226 #564998
>>564935
Это фишка такая, задумка дизайнера.
#227 #565047
Почему нет в шапке вот этого? ваши рты ебал
https://automatetheboringstuff.com/
Даже закон нарушать не надо.
#228 #565049
>>565047
Добавь.
Гитхаб же, тимворк, коллабортейшон, открытое коммунити, вся хуйня.

И еще заодно добавь - Если в шапке чего-то нету - ДОБАВЬ САМ, чтоб больше подобных быкований не было.
#229 #565051
>>565049

>Добавь.


Не, ты че, я не программист.
#230 #565055
>>565051
Если ты в зк - ты программист. Тут все программисты. С зарплатой в 140к. Далларов. Иди добавляй.
#231 #565057
>>565055
Ну вообще, я правда не программист, просто хобби, так что моё мнение нерелевантно, и книга может быть говном вполне. Хотя мне понравилась. Так что я добавлять не буду.
#232 #565067
>>565057
каждая мразь мимокрокодит тредов, и не желая брать на себя ответственность, выдает всякие сентенции.
#233 #565070
>>565067
Ну меня никуда не взяли на работу, так что я вполне имею право на эти сентенции, и если программистов будут сжигать, например, я с чистой совестью скажу что я не программист, так что нахуй иди.
#234 #565071
>>565070
Уж больно ты лоичен да последователен для непрограммиста. Спалишься на первом же допросе.
#235 #565073
И вот еще охуенная тема для визуализации кода http://www.pythontutor.com
#236 #565074
>>565073
Охуенно.
#237 #565076
>>565073
Это тоже добавь. Будешь нашим добавлятором.
#238 #565077
>>565070
Сисадмин?
#239 #565078
>>565076
Нехуя. Мне в падлу аккаунт делать на гитхабе, уж извиняйте.
>>565077
Ну вообще работал техником, но в данный момент мамина корзина.
#240 #565103
Привет питонята, проясните мне следующую фигню. Собссно зачем я учу питон?
Ну, то есть, я его учу и мне он доставляет, но куда на нем пиздовать работать и что на нем вообще пилят, я просто не ебу.
301 Кб, 1920x1080
#241 #565114
#242 #565115
>>565103
веб (flask, django)
новомодные SDN сети (openstack)
девопс и сисадминство
научные вычисления (scipy)
можно и десктоп-приложения хуярить (pyqt,pyside)
игрульки (pygame)
#243 #565125
>>565047
Ну хуй знает. Ты сам-то её читал? Что извлёк интересного? Чем она тебе помогла?
#244 #565126
>>565115

>можно и десктоп-приложения хуярить (pygobject)


Починил.
#245 #565144
>>565073
Прикольно, но для нубов. Лучше бы для asyncio подобноее зделали.
>>565126
Заебал уже со своим gtk. Он явно отсталее pyqt. inb4: define "отсталее"иди нахуй
#246 #565147
>>565144
Нет ты иди нахуй. Сириусли, давай просто не форсить свое говно, а предлагать все основные варианты. Которых всего один два.
#247 #565152
>>565144

>отсталее


Поэтому гтк использует и хром, и файрфокс, и тундерберд, и дефолтные окружения 90% дистров, и небо, и даже Аллах. Отсталее не бывает.
#248 #565158
>>565147

> можно и десктоп-приложения хуярить (pygobject)


> все основные варианты


>>565152
Я не ебу почему их используют вышеназванные приложения, но qt реально заебись сделан.
#249 #565163
>>565158
Плюс, qt-loop можно с asyncio совместить благодаря quamash. С gtk такое можно?
#250 #565173
>>565152
Проиграл.
#251 #565177
>>565158
Ну ты только свое сказал, я в ответ только свое. Теперь давай уважать и друг друга и нюфагов и писать все варианты. Мы тут приличные господа жи.

>>565163
Знаю про твой квамаш только по тому что нагуглил пять секунд назад. Питоновский гтк легко тредится и асинкается нативными гткшными способами. Еще есть gbulb, полагаю это альтернатива этому квамашу.
#253 #565206
>>565186
Кому нужен checkio, когда есть codewars? Намного больше заданий, советую кароч.
#254 #565237
>>565177
Это >>565115 не я писал.

> Знаю про твой квамаш


> гтк легко тредится и асинкается нативными гткшными способами


> gbulb


> 7 downloads in the last month


> Latest commit 8548711 on 12 Aug


Я не пытаюсь обосрать, просто есть то, что развивается. Было бы очень хорошо, если бы gtk шёл в ногу с qt, но, увы, это невозможно.
#255 #565238
>>565206

>codewars


Два чаю этому господину
#256 #565239
>>565206
>>565238
Посмотрел главную.

> Correct this code


Это разве круто? Чем луче checkio?
#257 #565246
>>565237
Они там переезжали с битбакета на гитхаб недавно. Но я его все равно не тыкал, одного гтк достаточно было.
#258 #565247
>>565239
Пользователи сами добавляют задания, поэтому там есть и плохие каты. выбери режим Rank up и сложность будет расти. К тому же тут есть поддержка не только питона, но и кучи других языков, из которых зачастую переводят интересные задания(тоже пользователи). Ну и еще есть более приятный интерфейс.
Лучше сам попробуй пройти несколько заданий. Желательно начинать с заданий которые вышли из беты.
#259 #565255
>>565247

>Supported Python version is 2.7.6


Чего же всё так хуёво?
#260 #565286
>>565255
Если с юникодом не работать, то разницу не заметишь. Выполнил уже 16 кат и думал что делал в python 3ничего, 2020 уже близко
#261 #565288
>>565286
А что в 2020?
#262 #565293
>>565286

>Если с юникодом не работать, то разницу не заметишь


Проиграл. А print в python 3 ты тоже обозначаешь не как функцию?
#263 #565299
>>565293
Я про codewars. Тут как раз юникода нет, а в python 2.7 можно писать как print, так и print()
#264 #565302
>>565288
Прекратится поддержка python 2 и он наконец то станет легаси.
#265 #565306
>>565288
Питон умрет.
#266 #565348
>>565306
Басни фанатика.
#267 #565349
>>565348
Пруф ми вронг пока я не сплю. Время пошло.
#268 #565350
Время вышло.
#269 #565376
Анчоусы, почему в коде последний not stack возвращает True, а тот который внутри цикла False? http://ideone.com/kDisgI
#270 #565391
>>563144

>Нет


Почему?
#271 #565393
>>565376
http://ideone.com/EcH8O4
Он и внутри лупа возвращает True. Посмотри внимательнее на

>elif not stack or stack.pop() != b:


Что происходит, если в стеке 1 элемент и это последняя итерация цикла?
#272 #565394
>>565393
И этот посдений элемент равен b, к тому же.
#273 #565468
>>565349
Да похуй на тебя, щенок ебаный.
#274 #565534
>>565393
Я не понимаю почему она магическим образом сначала ['('], потом ['(','{'], потом ['('] и [].
Если это последняя итерация и осталься один элемент, то он должен вернуть False.
Суть скрипта в том чтобы он возвращал тру на правильную расстановку скобок. Например '([)]' и '{]}' должно вернуть False, а '({[]})' True.
#275 #565558
>>565534
Ну, раз не хочешь думать, объясню:
b = ')'
stack = [')']
Выполняется строка elif not stack or stack.pop() != b:
первое условие: not stack == False, поэтому переходим ко второму (через дополнительную переменную, чтобы показать мог):
x = stack.pop() # x = ")", Но при этом уже stack = []
(x != b) == False (так как x равен b)
итого условие ифа не выполнялось, и к строке "return False" не переходим.

А так как это была последняя итерация, то идём к коду после цилка — а там лишь return True.
#276 #565560
>>565558

>а там лишь return True.


Т.е. там return not stack, но stack уже пустой, так как из него pop'нули последний элемент внутри того самого if'а.
#277 #565561
Анончики, питон хорошо подойдёт для программы, которая будет парсить gmail, и если есть новые письма посылать сигнал на serial port?
#278 #565564
>>565561
Подойдёт.
#279 #565574
>>565564
В какую сторону гуглить, чтобы сделать десктоп-приложение? Уже есть готовые фреймворки?
#280 #565594
>>565574
RRREEEEEEEEEEEEEEEEEEEEEEEEEEE
#281 #565604
>>565574
tkinter есть встроенный, но выглядит убого
антошка выше советует gtk
есть еще wxwidgets и pyqt/pyside
#282 #565610
>>565558
Спасибо, теперь я понял почему stack пустым стал, в глаза просто долблюсь. Но мне данный способ вообще не нравится. Вот http://ideone.com/K5nL6J намного понятней.
#283 #565612
>>565574
В сторону компилируемых языков.
#284 #565618
>>565612
Ну и зачем ты так? Есть много хороших десктопных поделок на питоне, которыми я сам пользуюсь каждый день. Deluge например, самый близкий по гую к пресловутому utorrent. Comix - оче годно для чтения комиксов/манги. Meld - красивый гуевый дифф, в прошлом треде проскакивал не от меня. Все чисто питоновские. Дропбоксовский клиент опять же питон. Гуи ко всяким демонам часто на питоне пишут. Как и мелкие конфигурялки.

Не вижу ничего плохого, короче. Пишут же для десктопа на С#, на жабе и прочих монстрах.
#285 #565620
>>565618
Ещё есть известный jabber client gajim. Потом mirage, exaile, pitivi, guake. Ну и всякое говно типа ubuntu software center.
Что характерно, весь этот софт на pygtk, на pyqt ни одной поделки не знаю.
#286 #565622
>>565620

>gajim


Вот это годнота кстати, странно что забыл про него.
#287 #565626
>>565620

>pygtk


pygtk, потому что половина уже перешла на pygobject.
#288 #565633
>>565620

>Что характерно, весь этот софт на pygtk, на pyqt ни одной поделки не знаю.


Хотя бы потому, что кутя - коммерческая поделка.
#289 #565636
>>565633
Но все эти проги открытые, так что даже при старой лицензии на qt их можно было бы с использованием qt писать.
И уже давно как можно и закрытые вещи на qt делать вроде как.
И да, я знаю что pyqt вроде как платный, но есть же pyside
#290 #565647
>>565633
У них две четыре версии. Коммерческая и разные *GPL.
#291 #565950
>>563128
Бамп вопросу
#292 #565952
>>565604

>tkinter есть встроенный, но выглядит убого


ВРЁТИИИ!!! К тому же есть ttk.
#293 #565967
>>565952
Надеюсь ты троллишь.
#294 #565971
>>565967
Не совсем. tk же очень прост, обычно идёт в комплекте с питоном, а красивости для себя не нужны.
#295 #565986
>>565967
А ещё, кстати, там canvas есть
40 Кб, 836x396
77 Кб, 902x570
47 Кб, 619x394
#296 #565988
Проблема с livewires. После инсталляции нормально не работает. Ругается что нет модуля "beginners", хотя тот лежит в .egg-файле
#297 #565989
>>565988
Разве нет
from .begginners import *
должно быть
#298 #565991
>>565988

>нет модуля "beginners"


>лежит в .egg-файле


>модуль


>в .egg-файле


Чуешь связь?
#299 #565996
>>565991
Инсталлятор кривой?
Куда распаковывать содержимое egg?
57 Кб, 401x459
#300 #566030
>>565996
в лоток
#301 #566038
Анончики, пытаюсь овладеть питоном, но пока все наоборот.
Складываю два числа из окон. но СУММЫ не получается. Где я обосрался?

# -- coding: utf-8 --

# Form implementation generated from reading ui file 'gui_math_2+2.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

import math

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(262, 386)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(20, 130, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(20, 20, 113, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(20, 60, 113, 20))
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 200, 200, 13))# x, y, width, height
self.label.setObjectName(_fromUtf8("label"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 262, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.pushButton.clicked.connect(self.myFunction)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "PushButton", None))
self.label.setText(_translate("MainWindow", "TextLabel", None))

def myFunction(self):
x = self.lineEdit.text()
y = self.lineEdit_2.text()
z = x + y
self.label.setText( z)

if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
#301 #566038
Анончики, пытаюсь овладеть питоном, но пока все наоборот.
Складываю два числа из окон. но СУММЫ не получается. Где я обосрался?

# -- coding: utf-8 --

# Form implementation generated from reading ui file 'gui_math_2+2.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

import math

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(262, 386)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(20, 130, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(20, 20, 113, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(20, 60, 113, 20))
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 200, 200, 13))# x, y, width, height
self.label.setObjectName(_fromUtf8("label"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 262, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.pushButton.clicked.connect(self.myFunction)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "PushButton", None))
self.label.setText(_translate("MainWindow", "TextLabel", None))

def myFunction(self):
x = self.lineEdit.text()
y = self.lineEdit_2.text()
z = x + y
self.label.setText( z)

if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
#302 #566051
>>565971
Не красивости, а удобности. В 2015, находясь в стандартной(!) библиотеке, иметь такую ужасную документацию. Скорее даже её отсутствие, плюс пещерное api (fg, bg, StringVar что бля?). Создаётся впечатление, что скорее всего tkinter написали по приколу.
989 Кб, 500x280
#303 #566071
>>566051
Нехуй гнать, StringVar это реализация парадигмы Делегат, а доки в инете прочтешь.
Радует то что либа изначально для гуя так и не обросла всяким хламом вроде db, xml, потоками, сетью, html чего не скажешь про Qt, GTK и прочих wxWidgets.

Зацените песдадый хеловорлд:
http://pastebin.com/gEPumjMz
#305 #566091
Питонач, помоги.
Помню где-то год назад пилил на PyQt интерфейс полностью на webview, прикручивал сигналы прямо на хтмл, но уже не помню как там это всё работает.
Так вот, можно ли таким макаром намутить моднявый интерфейс с красивыми кнопочками и джаваскриптами или придется довольствоваться только чем-то упрощенным?
Вот htmlaudio, помню, точно не работало.
#306 #566109
>>566071
Какой, нахуй, делегат? Все цивилизованные фреймворки используют просто метод объекта-виджета. Зачем эта промежуточная сущность?
>>566085
Это не документация, а туториалы от Васянов. Почему на https://docs.python.org/3/library/tkinter.html я вижу кучу говна, а не стройное описание всех(!) методов, всех аргументов, всех объектов, всех стейтов?

> tkinter-does-not-suck


> it's mature


Охуенные аргументы на етих itt слайдах. Глядя на них опять убедился, какое же tk говно:
название событий строками
строковые модификаторы
v = StringVar()
e = Entry(master, textvariable=v)
бгг
self.attributes("-topmost", True)
СЕВЕР, ЮГ, ЗАПАД, ВОСТОК
расставлять виджеты кодом
ЗАТО ТРИ МЕНЕДЖЕРА РАСПОЛОЖЕНИЙ
Ну, и конечно же, когда захочется что-то сложней хеллоу ворлда, придётся жидко обсираться. Зделай на своём tk окошко автокомплита для инпута, например, или place-holder, или чтобы когда ты тыкаешь в поле таблицы, там появлялся edit виджет и всё это корректно работало.
Это говёная поделка, которая, насколько я понял, просто обёртка-транслятор в tcl.
#307 #566111
>>566091
Начсёт htmlaudio не скажу, но интерфейс сделать можно. И джаваскрипты будут.
#308 #566180
Кто поможет оливковому с функцианальщиной в пайтоне?
#309 #566211
>>566109

> название событий строками


в gtk тоже

> строковые модификаторы


если я правильно понял, то в gtk тоже есть всякие gtk.TextBuffer. а уж всякие деревья/списки через такую жопу делаются
Надо всякие TreeStore(str) делать для них в них TreeViewColumn в них всякие CellRendererText и это самый простой случай.

> окошко автокомплита для инпута, например, или place-holder, или чтобы когда ты тыкаешь в поле таблицы, там появлялся edit виджет


Но вот это делается легко

Это я не в защиту tk, т.к. tk ненужное говно.
#310 #566218
>>566211

> в gtk тоже


В qt тоже было до недавнего времени, но сейчас шибко приятнее сделано.
Я имею ввиду то, что это за строки: "<Button-1>", например. Ну, что это за огрызок?! Зачем эти угловые скобки? Что за 1? Если бы было написано "mouse-left-button-clicked", то всем бы было лучше.
#311 #566220
>>566211

> Но вот это делается легко


Зделай-покажи. Мне почему-то кажется, что это не так уж и легко.
11 Кб, 410x228
13 Кб, 428x191
#312 #566225
>>566220
Там есть встроенный такой функционал.
http://stackoverflow.com/questions/3143282/creating-columns-with-editable-cells-in-gtk-treeview-using-glade
http://www.pygtk.org/pygtk2reference/class-gtkentrycompletion.html
в pygobject тоже соотвественно
вместое с pygtk идет набор примеров там всё это есть.
#313 #566236
>>566225
Иисус, я про tk говорил, а не про gtk. На gtk-то понятно, что можно.
#314 #566237
>>566236
Весь пост был про гтк
75 Кб, 599x881
#315 #566238
>>566225
Нахуй ты pygtk нам суешь? Он депрекейтед давно уже блять, для гтк в питоне используйте pygobject.
Вот блядь, даже на главной pygtk.org пишут

>New users wishing to develop Python applications using GTK+ are recommended to use the GObject-Introspection features available in PyGObject.


>recommended to use the GObject-Introspection features available in PyGObject.


>recommended to use PyGObject.


>PyGObject


Вы что, читать не умеете? Ну ебаныйврот.

Сто раз уже говорилось
Д Е П Р Е К Е Й Т Е Д
Е
П
Р
Е
К
Е
Й
Т
Е
Д
#316 #566239
>>566238
Я же написал

>в pygobject тоже соотвественно


Будто блять они пиздец как отличаются друг от друга.
#317 #566240
>>566238
Уверен что такие посты пишут те же дебилы что в 2015 году агитируют использовать сырой пи3 под который нет библиотек и который по дефолту разве что в arch linux.
#319 #566246
>>566237
Весь пост был ответом, на пост о tk.
#320 #566247
>>566244
Ты прочитай что они пишут то.
У нас энтерпрайз и большинство кода на python2. Он будет по дефолту до 2021 а там посмотрим.
#321 #566252
>>566247

>У нас энтерпрайз


А, это все ты же. Как в школе дела?
#322 #566302
>>566030
Но в лотке же держат целые яйца, а не их содержимое.
#323 #566303
>>566038
Юзай пастебин, Люк. Без отступов твой код читать бесполезно.
#324 #566305
>>566303
Отступики-отступики.
У вас всё не запилят скобки как во всех нормальных языках?
#325 #566307
>>566305
Запилил тебе за щеку, проверяй.
125 Кб, 1440x741
#326 #566321
Почему не работает? Запускал несколько раз, результата ноль. (пикрелейтед)
#327 #566322
>>566321
Лалка, а функцию кто вызывать будет?
#328 #566323
>>566321
А вообще - я вынул глаза из жопы и посмотрел на задание - у них там индент кривой. Два вызова say() убежали на один индент вправо. Должно быть так:
def say()
..print(
say()
say()
#329 #566324
>>566321
Добавь say() после объявления функции
#330 #566326
>>566324
Бля, не заметил, что в теле функции идет ее вызов, лол
#331 #566327
Лол, я же её в теле функции вызываю, аутист я хуев, но в книге ошибочка значит, всем спасибо.
26 Кб, 822x292
#332 #566331
>>566321
Как же припекает, когда «учат» не по pep8. Эти же люди потом будут писать свой говнокод так, как их научили.
#333 #566333
>>566331
Что за рер8 ?
#334 #566334
>>566331
А я про пеп8 в курсе давно, но так и пишу функции в CamelCase. Даже спиздил кусок кода - он в snake_case, и рядом с ним дописываю свой CamelCase. Нихуя не могу с собой поделать.
#335 #566337
Так что за пеп8, в гугле только нашёл онлайн-чекер, и на линуксорге кого-то назвали мудаком, ибо пеп8 не соблюдён.
#336 #566338
>>566337
https://www.python.org/dev/peps/pep-0008/

>на линуксорге кого-то назвали мудаком, ибо пеп8 не соблюдён.


Все правильно зделоли. второй двач, епт
#337 #566339
>>566338
Благодарю.
#338 #566341
>>566331
Э, слышь, а что там не по пепу?
#339 #566345
>>566341
times = 1
#340 #566350
>>566345
Вроде норм. Как по пепу то?
#341 #566353
>>566350
times=1
#342 #566355
>>566338
пеп тупое говно для нубов
дают тупые советы типа использовать пробел вместо таба.
и пробелы расставлять как они хотят а ни как тебе удобно.
#343 #566359
>>566353

> Don't use spaces around the = sign when used to indicate a keyword argument or a default parameter value.


Чот странное решение.

>>566355
А с тебя проиграл.
#344 #566362
>>566359

> странное решение.


Шоб переносы строк нихуя не работали и всё в кашу сливалось
#345 #566367
>>566362
Какие переносы, дибил? Где ты переносить собрался? После =?
#346 #566376
Что не так?

TypeError: __init__() missing 1 required positional argument: 'massive'

a=[50, 98, 17, 79]
a.sort()
class massive_work():
def __init__(self, massive):
self.massive=massive
def sort_massive(self, massive):
self.massive.sort()
print(self.massive)
obj1=massive_work()
obj1.sort_massive(a)
#347 #566379
>>566376
исправь на
def sort_massive(self):
и
obj1=massive_work(a)
#348 #566380
>>566379
А, спасибо напомнил, а то я не то немного написал.
#349 #566381
>>566379
Забыл просто кое что.
#350 #566411
Чуваки, а какие есть системы сборки для питона? Я вот сейчас листаю, нашел pynt, paver и scons. Что лучше использовать или есть что-то еще лучше? Хочу автоматом при билде на новой машине зависимости подтягивать как минимум.
#351 #566412
>>566411

> автоматом при билде на новой машине зависимости подтягивать


Используй virtualenv и pip.
pip freeze > requirments.txt
#352 #566416
>>566412
А если я хочу все выкачать на новой машине (с установленным python, pip и virtualenv) и одним скриптом все развернуть и сбилдить? Я в питоне мимокрокодил, просто хочу запилить свою мелкоутилиту так, чтобы потом не было стыдно выложить.
#353 #566418
>>566416
Ну ты на новой машине делаешь virtualenv, активируешь его и запускаешь pip install -r requirments.txt
оно всё поставит. Можешь это делать из скрипта.
Можешь заюзать чето типа http://www.fabfile.org/ чтобы удаленно это автоматом на много машин делать
#354 #566419
>>566416
Ну да для того чтобы поставить сам virtualenv pip возможно gcc какие-то -dev библиотеки если надо могули на си ставить это из скрипта придется делать но это одна строчка.
#355 #566425
>>566416
А для исталяции своего моделя самого делаешь setup.py - погугли про него
#356 #566429
>>566416
Вот пример проекта https://github.com/pypa/sampleproject
#357 #566431
>>566429
>>566425
>>566419
>>566418
>>566412
Спасибо, господа. Пойду курить вышеозначенное.
#358 #566498
>>566350
поросёнка пеппа?
127 Кб, 1043x810
#359 #566509
Привет всем, я полгода уже не кодил на питошке, нужна ваша помощь. Надо скачать 5526 pdf статей с PubMed, план такой:
- я беру айдишники этих файлов и преобразую их в ссылки
- по адресу ссылки есть кнопка для скачивания с которой в копирую ссылку
- качаю все через wget

Как уже упоминал, я многое забыл и у меня как-то с fire bug и selenium на заладилось. Помогите парой строк кода для копирования ссылок для скачивания.
https://pubget-hrd.appspot.com/?q=26279571&pdf_only=on
вот так выглядит сайт и надо скопировать ссылку с кнопки
"direct link to its pdf".
Спасибо
#360 #566516
>>566509
это очень сложно
#361 #566522
>>566516
Да, это решение не является очень хорошим, но мне оно на один раз. Может кто-то поможет?
#363 #566530
>>566509
$ wget $(wget -qO - "https://pubget-hrd.appspot.com/?q=26279571&pdf_only=on" | grep 'id="pdfReal"' | cut -d\" -f4)
$ wget $(wget -qO - "https://pubget-hrd.appspot.com/?q=26279572&pdf_only=on" | grep 'id="pdfReal"' | cut -d\" -f4)
$ wget $(wget -qO - "https://pubget-hrd.appspot.com/?q=26279573&pdf_only=on" | grep 'id="pdfReal"' | cut -d\" -f4)
$ ls -1 *.pdf
S2211-1247(15)00794-9.pdf
S2211-1247(15)00800-1.pdf
S2211-1247(15)00820-7.pdf
48 Кб, 600x450
#364 #566534
>>566527
Да, что-то про регулярки я и забыл.
Спасибо ОЧЕНЬ БОЛЬШОЕ!
#365 #566536
>>566305
Зайди в жс-тред, там точно так же по губам проводят копипистерам в тред, потому что, внезапно, отступы используют везде, что очень сильно способствует чтению кода.
#366 #566540
>>566536
В ЖС-тред вообще нельзя зайти и не получить по губам. Или тред такой, или язык.
#367 #566541
>>566530
под Шидовским wget это будет работать? скучаю по Linux ;( и по консольке
#368 #566544
>>566541
Понятия не имею. Тут еще cut и grep же. И command substitution баша используется.
#369 #566550
>>566541
поставь project gow
(gnu on windows)
#370 #566602
Есть ли гарантия того, что за 5 лет можно научится программировать на Python так, чтобы стать джуниором?
#371 #566605
>>566602
Гарантий и на 100 лет нет,
но джуниором вполне реально стать и за полгода умеренного вjobывания.
#372 #566609
>>566605
Я как раз пол года учу Python, но до джуниора мне далеко очень. Очень много не понимаю. Видимо не умею учится по книжкам.
#373 #566617
>>566605
А вообще на курсах реально могут научить лучше и быстрее чем по книге?
#374 #566619
>>566617
Нет. Всякие эти курсы - говно для дебилов.
Гораздо лучше можно научиться если что-то начинать делать и если есть коллеги по работе, которые могут что-то подсказать, объяснить.
#375 #566621
>>566619
Коллег по работе нет, а для того, чтобы что то делать мне нужно понимание.
#376 #566657
>>566621
Двачую пациента сверху. Курсы - говно. Не умеешь программировать сам - иди учить других. На этих курсах вот такая логика.

Просто возьми и начни делать. Документации навалом. Перебери и найди подходящую себе. Если что-то непонятно - спрашиваешь у гугла. Совсем непонятно - у двача.
#377 #566675
>>566240
>>566247

>У нас энтерпрайз



ПИДАРАШКИ НЕУМЕЮТ В ЮНИКОД
http://habrahabr.ru/post/208192/

http://farmdev.com/talks/unicode/
автор - Кумар
#378 #566704
>>566303
спасибо, мастер
#379 #566719
>>566675
На хабре перевод же.
#380 #566897
Только начал разбираться в питоне тут, появился вопрос - можно ли как-то работать с текстом в командной строке ещё не введённым, то есть без нажатия ввода? То есть что-то типа такого: запустил шелл питона, там запустил программку, начал вводить слово и программа допустим сразу из списков своих в следующей строке предлагает варианты слов начинающихся с этих букв
#381 #566914
>>566897
Ну инициализированные переменные можно юзать, то есть типа:
a = "",
def func(x="Слово").
А вообще нужно чуть поконкретней.
#382 #566945
>>566914
Не, я в итоге хочу внутри cmd запускать программу, чтобы она принимала на ходу буквы и предлагала слова начинающиеся с этих букв.

То есть программа запускается, ждёт символов каких-то. Как только получает, например букву
'p' предлагает слова из списка внутри программы, допустим 'python', или 'penny'. И всё это без нажатия enter'а и собственно ввода, то есть если в строке 'pyth' стереть символы до 'p' - она снова предложит пенни и питон (ну как например ввод в поисковиках действует, живой поиск, но в командной строке). Как-то так, надеюсь нормально объяснил.
#383 #566948
>>566945
Ты, видимо, имеешь в виду автодополнение. Скорее всего ты это сможешь сделать с помощью модуля readline.
#384 #566955
>>566948
А, ну да, погуглил сейчас, как раз то что нужно. спасибо.
#385 #566962
>>566955
Заходи, если что.
#386 #566982
Здорово, бандиты.
Питон 2.7.1, urllib2, json
Скачиваю кусок json в utf-8. Пишу его в файл. В полученном файле вперемешку встречаются &#47 и '/'. Как заставить питон конвертировать &#47 в '/' ?
#387 #566988
>>566945
Модуль readline такое умеет
#388 #566997
#389 #567000
>>566675
Самая хуйня в том что афтары библиотек не хотят поддерживать две ветки библиотеки под раные питоны. Они либо забивают на одну ветку, либо делают ебучего мостра который будет работать под обоими версиями питона - это медленее и код страшнее.
#390 #567004
>>567000
Второй питон не нужен, очевидно же.
#391 #567025
>>567004
Сейчас ынтырпрайзник из школы придет и пояснит тебе по-хардкору кто нужен а кто нет.
#392 #567035
Пацаны, не учите этот питон. Работы вы на нем не найдете даже в ДС. Ваканский мало, зарплаты нищеебские типа 60-90к, а это сейчас $1k всего.
Раньше было получше с этим но как кризис то всё пизда.
Для специалистов по нормальным же языкам типа явы ваканский около тысячи в одной дс и зарплаты есть и по 200к.
#393 #567070
https://alexgaynor.net/2014/jan/03/pypi-download-statistics/
Только 3% разработчиков активно используют python3
#394 #567080
>>567070

> 2014-01-03


> 3.3

#395 #567091
хуево будет, если назову джанго-апп fixtures?
#396 #567097
>>567091
Я думаю, этот вопрос достоин отдельного треда, тут ему будет тесно.
#397 #567139
>>567080
Двоечники, что сказать.
#398 #567280
>>567035
А ты уточни какой нужен опыт работы на вакансии по 200к.
#399 #567361
Я похоже дуб в ООП.
Аноны, что вообще значит эта строка из учебника Доусона?
super(Application. self) ._init_(master)
#400 #567366
>>567361
Там еще Application класс, а master, аргумент метода конструктора.
#401 #567370
>>567361
Вызывает __init__ у всех предков класса.
#402 #567378
>>567370
Я похоже это забыл.
А super это что?
#404 #567381
>>567379
Спасибо.
#405 #567382
>>567378
Суперкласс/Родитель, т.е. класс, от которого наследовал объект. Точнее, super это функция для доступа к этим самым предкам.
#406 #567383
>>567382
Ясно, спасибо.
#408 #567386
>>567384
Спасибо, уже понял, но спасибо.
#409 #567433
посоны, подскажите как на питоне решить такую задачу:
нужно проверить есть ли одна строка в другой, но допускается неточное совпадение, например проебаный мягкий знак, тк одна строка получена машинной транслитерацией в две стороны
#410 #567487
А вот тут хз, что делать, все как в учебнике Доусона.
Выводит ошибку
Traceback (most recent call last):
File "C:/Python34/Пример приложения на tkinter с ООП.py", line 29, in <module>
app = Application(root)
File "C:/Python34/Пример приложения на tkinter с ООП.py", line 13, in __init__
self.create_widgets()
File "C:/Python34/Пример приложения на tkinter с ООП.py", line 17, in create_widgets
self.bttn1.grid()
AttributeError: 'Application' object has no attribute 'bttn1'
https://ideone.com/fOnAoh
8 Кб, 354x67
#411 #567503
>>567487
У тя там какая-то опечатка вот и выделенно другим цветем даже
#412 #567506
>>567487
Ты блять мягкий знак вместо английской бэ написал, как ты умудрился то?
#413 #567508
>>567506
>>567503
сукпиздец
Спасибо
#414 #567523
>>567506
Он патралить хотел.
7 Кб, 1007x1001
#416 #567638
Чот пичаль. Не писать мне пепоугодный код.
2014 Кб, 2776x2464
#417 #567642
>>567638

> line is too long


Отключи эту хуйню. Это тупое ограничение не актуально, 80 символов в ширину охуеть, у нас не vt100 экраны сейчас.
Конечно совсем уж слишком длинных строк стоит избегать но 80 символов слишком мало.
#418 #567647
>>567642
Тогда только на присваивание лямбды ругается. У меня она оче короткая и внутри другой функции, чот не хочется отдельно def делать, и саму лямбду по коду копипастить тоже.
#419 #567649
>>567647

> У меня она оче короткая


Ну и что

> и внутри другой функции,


Ну и что, можно делать def внутри def

> саму лямбду по коду копипастить тоже.


Зачем её копипастить? Может если ты её копипастишь то надо бы это как раз в отдельную функцию вынести причем на уровне модуля, а не внутри другой функции?
#420 #567653
>>567649
def лишняя строчка, не хочу лишнюю строчку. Присваиваю потому что лямбда используется всего два раза и
check = lambda :x
check()
check()
лучше чем копипастить саму лямбду.
#421 #567655
>>567653

> не хочу лишнюю строчку.


пиши тогда вообще всё в одну строчку. желательно на perl
#422 #567660
>>567638
Не слушай >>567638, эту хуйню не просто так придумали.
#423 #567662
>>567655
Ящитаю код должен быть компактным. Я уже в джва раза ужал.
#424 #567665
>>567660
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/

> An exception to PEP 8 is our rules on line lengths. Don’t limit lines of code to 79 characters if it means the code looks significantly uglier or is harder to read. We allow up to 119 characters as this is the width of GitHub code review; anything longer requires horizontal scrolling which makes review more difficult. This check is included when you run flake8. Documentation, comments, and docstrings should be wrapped at 79 characters, even though PEP 8 suggests 72.

#425 #567668
>>567665
Давно ли стиль Джанги стал важнее стиля Питона?
#426 #567671
>>567668
Это просто пример того что на это тупое ограничение в 80 столбцов забивают везде, хотя и следуют pep8 в остальном.
#427 #567719
Анон помоги с задачей:
Надо запилить прогу, которая выводит, в случайном порядке, все элементы из списка, без каких либо повторов.
Компилятор ругается и ничего не работает.

import random
inv = ["sword", "shield", "duck", "drug"]
y= len(inv)
while y>0:
\tx = random.randint(0, len(inv))
\tprint( inv[x])
\tinv.pop(["x"])
\ty-=1
input("Hi!")
#428 #567721
>>567719
Исправь на:
x = random.randint(0, len(inv)-1)
inv.pop(x)

вообще можешь сразу писать
print( inv.pop(x) )

или можешь сделать random.shuffle(inv) это перемешает список а потом просто выводить последовательно элементы
#429 #567723
>>567719
Или вот ещё вариант
import random
inv = ["sword", "shield", "duck", "drug"]
while inv:
..word = random.choice(inv)
..print(word)
..inv.remove(word)
#430 #567724
>>567719
Да, y= len(inv) и y-=1 не нужны просто сделай
while inv:
или
while len(inv):
что одна фигня
#431 #567725
>>567723
>>567721
Ого. Благодарю тебя, добрый Анон.
Только, я не понял, почему у меня не заработало. Я забыл, что индекс меньше длинны на единицу (в плане, значение меньше, из-за сдвига).
Но как работает это: print( inv.pop(x) ) Т.е. напечатать то, что сразу удалится?

>random.shuffle(inv) это перемешает список


Но зачем? Т.е. будет просто рендомный порядок в рэндомном списке.

>>567724
Спасибо. Действительно, проще просто указать наличие элементов списка, как условие цикла.
3 Кб, 169x80
13 Кб, 370x231
#432 #567727
>>567725
функция list.pop не просто удаляет элемент, а возвращает его значение.

> Т.е. будет просто рендомный порядок в рэндомном списке.


Ну можно сделать вот так
def randomized(lst):
..lst=lst[:] # делаем копию списка чтобы в оригинальном списке элементы не радномизировались, если мы ходим порядок сохранить в нем
..random.shuffle(lst)
..return lst

inv = ["sword", "shield", "duck", "drug"]
for element in randomized(inv):
..print(element)
#433 #567728
>>567725

> Только, я не понял, почему у меня не заработало.


inv.pop(["x"])
Что это за ["x"] ? Список из одного элемента - строки "x" ?
Тебе надо было передавать номер элемента то есть переменную x.
#434 #567743
>>567433
Hamming distance
#435 #567756
>>567671
Тупой здесь только ты. Это ограничение заставляет разбивать твои говнооднострочники на что-то читаемое. Потом тебе и 120 будет мало.
#436 #567914
Использую 120 везде, выбрал тоже исходя из ширины просмотрщика на гитхабе.
#437 #567946
>>567756
И сокращать имена до нечитаемости, ага. Это ограничение пошло от ширины текстовых терминалов, а не от чего-то ещё.
dell #438 #567950
Ребята,
https://github.com/dimka665/vk
в общем захотел поиграться с вк.апи
Статистику пособирать и т.д

Нашёл библиотеку от чувака, который её периодически дополняет.
но перед этим я установил другую библиотеку.
которая импортируется так же.

в общем сейчас у меня проблемы с авторизацией.
и думаю, что может быть это из за того, что импортируется первая библиотека, которую я установил.
Как удалять библиотеки? Т.е достаточно ли просто удалить папку? (не пинайте за тупой вопрос - не питонист)
#439 #567953
>>567950
Достаточно.

>папку


Мамку.
#440 #567971
История >>562358 получила некоторое продолжение. Еще не доделав поиск, начальство теперь планирует переписать на го весь сайт на джанге. Это с учетом что только юнит-тестов я на него исписал около 10k loc.
Мне не нравится что простое нежелание изучать орм джанги решили таким кривым способом и я отказался от предложения переходить на этот го.
Короче все явно идет к тому что я вылечу из этой говноконторы, но вопрос только в том когда. Суть моего вопроса - стоит ли рыпаться сейчас, в конце года, и искать новую удаленку или стоит все же попробовать дотянуть до следующего? При том что имею на данный момент год опыта работы с джанго.
#441 #567974
>>567971
С весны начинай искать. До НГ работы нет.
#442 #567975
Расскажите тупому, что означают термины дев, стейдж, демо, лайв и т.д.?
#443 #568007
>>567971

> нежелание изучать орм джанги


А что с ней не так? Можно алхимию к джанге прикрутить.
С поиском конечно пиздец - дохуя готовых решений же.
#444 #568008
>>567971
А насчет работы - чет хреново сейчас с поисками работы. Мало вариантов - раньше больше было. Из-за кризиса хуизиса многие конторы перестали нанисать новых, а то и сокращают народ.
10 Кб, 280x250
АлёнаА #445 #568038
Ребята, в общем не могу захуярить простую вещь:
запостить пост на стену в вк.
Мне это даже по сути не надо, но уже часа два вожусь.
не знаю в чем проблема. по сути ничего сам даже не писал
хапнул библиотеку
https://github.com/dimka665/vk
и пример простой с форума.
главное вроде бы вещи, не касающиеся авторизации работают.
В общем вот код: http://ideone.com/pwtsaE
Может кто из местных пользовался этой библиотекой.
Ошика такая : TypeError: 'module' object is not callable

Подскажите пожалуйста, где наложал.
#446 #568039
>>568038
токен вроде получаю как надо.
но как отправить сообщение или ещё что...
#447 #568042
>>567946

> 2001


> текстовые терминалы

#448 #568043
>>568039
Включи лог-левел DEBUG и посмотри выхлоп.
#449 #568060
>>568043
>>568043
cспасибо.
>>568038

чувак, просто изменил библиотеку и я пользовался неактуальными методвами
#450 #568075
Очень прошу, поясните, книга Томаса Кормэна "Алгоритмы вводный курс" может повысить навык программирования?
#451 #568076
>>568075
Прочитай, потом расскажешь.
#452 #568080
>>568076
Ну я так и поступлю. Но хотелось бы узнать есть ли тут те, кто ее читал? Какие впечатления?
#453 #568083
>>568075
Годная книжка, её многие рекомендуют.
Я правда сам не читал и почему-то у меня она называется "алгоритмы построение и анализ". Автор тот же.
Кинь ссылку на этот вводный курс.
#455 #568098
>>568096
Хоть бы на рыгхост перелил, чмырь.
#456 #568099
>>568096
Спасибо.
#457 #568100
>>568098
Да мне все равно.
АртурАЛёна #459 #568269

> {'users': [158, 991, 1389, 1543, 2088, [2328, 3879, 5659, 6333, 7330], [8157, 8607, 9968, 10278, 11792]], 'count': 49970}



Ребята. В общем в цикле обновляю словарь.

http://ideone.com/JW0TTs

Вернее нужно обновить в цикле., но не так, как наверху,
а вот так :

>> {'users': [158, 991, 1389, 1543, 2088, 2328, 3879, 5659, 6333, 7330, [8157, 8607, 9968, 10278, 11792], 'count': 49970}



Т.е цельно., без скобок. сильно не пинайте,.
И есть ли вообще разница в принципе?

Просто сейчас я хочу получить людей из группы вк. Сохранить ID.
Чтобы потом по ним пройтись и попробовать статистику пособирать
#460 #568274
>>568269
Попробуй использовать оператор '+' вместо append. Это будет слиянием списков, а не добавлением одного в другой. Если я правильно понял, ты имел в виду именно это.
#461 #568279
>>568274
для этого list.extend есть
#462 #568281
>>568279
Да, так будет правильней. Плюсик просто первым пришёл на ум.
#463 #568285
>>568281
Смотря что считать «правильным»
208 Кб, 1366x768
#464 #568286
>>568279
>>568274
>>568281

Cпасибо ребята)
Обнял.
#465 #568319
Где я могу наиболее подробно узнать про ООП в Python?
#467 #568355
>>568352
А на русском есть?
#468 #568356
>>568355
Учи язык.
#469 #568357
>>568355
teach english or go to fuck
#470 #568358
>>568357
proigral)0
#471 #568359
>>568356
>>568357
Я только со словарем могу. И у меня трудности нередко возникают при переводе это одна из причин, того, что я описал в первом предложении, а вторая это то, что я слова забываю, поскольку их очень уж много.
#472 #568360
>>568352
Я все же бегло прочел. Я это знаю, хотелось бы еще более детально.
#473 #568361
>>568359
Ну бля, а щито поделать то? Так и учат, через боль и страдания. Закачивать знания в мозг как в матрице мы пока не умеем.
#474 #568461
Прохожу тут задания на checkio.org , в элементарных дошёл до задания с классами и охуел. Чего-то я совсем принципы ооп не понимаю. Что мне почитать чтобы разобраться?
#475 #568470
>>568461
Можешь попробовать вот это почитать и выполнить упражнения. http://aliev.me/runestone/Introduction/ObjectOrientedProgramminginPythonDefiningClasses.html
15 Кб, 400x299
ВК СТАТИСТИКА ПИТОН АПИ Алёна #476 #568625
Ребята, врываюсь вновь тред.
Нужен совет.

Хотел статистику по пользователям разную пособирать питоном,
но с помощью VK API.
Дико туплю, так как вебом\урл\хттп раньше не занимался ,
да и если честно желания никогда и не было.
Но конкретно это хочу всё таки добить.

Я получил пользователей в массив, с помощью вк.апи.

Теперь из массива хочу в цикле пройтись по каждому из них чтобы проверить :
- жив ли он вообще
- открыта ли страница.
- сохранить нужную инфу (список видео, к примеру, если открыто, и т.д)
, если пользователь интересен , в файл.
файл обновляю в цикле. и в итоге по нему собираю статистику

С помощью вк апи можно получить эту инфу, но я встрял
так как мне приходится в цикле проходить по всем ID из списка.
И если их даже больше 30, то возникают проблемы :
Возникают ограничения по запросам в секунду в вк апи.

Поэтому, наверное придётся делать , то что задумал уже без апи. Напрямую.
Запросы и т.д

В общем :

- может эту задачу вообще можно как то иначе сделать? т.е какие то лишние движения
- если в общих чертах замыслил правильно, то посоветуйте в сторону каких библиотек смотреть? чисто матчасть минимум, необходимая, чтобы сделать эту херню.

Сильно не пинайте ребята,. не питонист совсем ()
15 Кб, 400x299
ВК СТАТИСТИКА ПИТОН АПИ Алёна #476 #568625
Ребята, врываюсь вновь тред.
Нужен совет.

Хотел статистику по пользователям разную пособирать питоном,
но с помощью VK API.
Дико туплю, так как вебом\урл\хттп раньше не занимался ,
да и если честно желания никогда и не было.
Но конкретно это хочу всё таки добить.

Я получил пользователей в массив, с помощью вк.апи.

Теперь из массива хочу в цикле пройтись по каждому из них чтобы проверить :
- жив ли он вообще
- открыта ли страница.
- сохранить нужную инфу (список видео, к примеру, если открыто, и т.д)
, если пользователь интересен , в файл.
файл обновляю в цикле. и в итоге по нему собираю статистику

С помощью вк апи можно получить эту инфу, но я встрял
так как мне приходится в цикле проходить по всем ID из списка.
И если их даже больше 30, то возникают проблемы :
Возникают ограничения по запросам в секунду в вк апи.

Поэтому, наверное придётся делать , то что задумал уже без апи. Напрямую.
Запросы и т.д

В общем :

- может эту задачу вообще можно как то иначе сделать? т.е какие то лишние движения
- если в общих чертах замыслил правильно, то посоветуйте в сторону каких библиотек смотреть? чисто матчасть минимум, необходимая, чтобы сделать эту херню.

Сильно не пинайте ребята,. не питонист совсем ()
132 Кб, 887x1024
#477 #568635
Анон, как работать с релизами на гитхабе? Вот есть гитхабовская релиз-система, ок, я выкатываю туда 0.1. Надо ли добавлять --version в сорцы? Если нет, как норот потом будет узнавать какую версию он юзает? Если да, как эту версию бампать между релизами во время обычных dev-коммитов?

Поясни за все за это.
#478 #568649
>>568625
Э, Алён, половину этих вопросов надо в ВК и спрашивать. И шел бы документацию покурил. А то мы тут ананимасы, вк нет, все дела.

>Возникают ограничения по запросам в секунду в вк апи.


Э, ну епт, обмажься проксями, делов то. Или личными серверами хотя бы.
#479 #568651
>>568649

Друже, так вопрос уже не по вк.
Он уже тупо по самому вебопитону.
Как это дерьмо осилить
#480 #568652
>>568625
Ограничение там нежёсткое. 5 запросов в секунду точно можно. Просто делай между ними паузу. У димки на гитхабе такого пока в апи нет, к сожалению.
>>568635
Релизы на то и релизы, чтобы во время dev-коммитов не менять версию. В тот момент как решишь сделать релиз, меняешь версию в своей поделке, дописываешь чейнджлог и тому подобное. Коммитишь и релизишь на гитхабе с той же версией до которой поднял.
#481 #568654
>>568652
А если у меня 40000 человек?)
#482 #568657
питоны, страшно и смешно. у меня не работает strip().
for item in text:
item = item.strip()
print(text)
проще некуда, блядь. а пробелы в начале и конце как были, так и остались. каков пиздец.
#483 #568658
>>568652
>>568651
Я , в принципе, и делал паузу.
Но представь , что у меня 40000 человек. И надо каждого отдельно потрогать. : 40000 человек на 5 в секунду : 8000 секунд.... В общем пара часов... Эх.
#484 #568660
>>568657
Что есть item по-твоему?
#485 #568661
>>568660
по-моему, это строка. я, конечно, могу ошибаться, но text состоит из строк.
#486 #568662
>>568661
Text - это список? Покажи как выглядит.
#487 #568663
>>568662
['kjh.',' xgdf.',' thtd']
#488 #568664
>>568657
ты text не меняешь вася

попробуй или так
print ([item.strip() for item in text])
если то, что надо, можешь сджойнить
print (''.join([item.strip() for item in text]))

а вообще, опиши, что уже есть (text - его содержимое), что надо получить и что по факту получается
#489 #568665
>>568664
ох пиздец, списки же неизменяемые
вот я реально вася
#490 #568668
>>568665
Изменяемые, но как уже написал анончик выше, ты его не меняешь.
#491 #568669
>>568668
усе, пофиксил.
for i in range(len(text)):
text = text.strip()
#492 #568671
>>568669
text = text.strip()
ебусь
#493 #568672
ахах, сука, разметка. все, надо спать.
#494 #568673
>>568657
Ахах, вот жеж ты мудель! У тебя текст как был текстом, так он текстом и остаётся; ты его не меняешь.

Сюда вот посмотри:

text = [' one ',' two ']
text = [x.strip() for x in text]
print(text)

В результате получишь ['one','two'].
#495 #568678
>>568654
>>568658
Ты так говоришь, будто бы не используя api, vk тебя не ограничит или забанит к хуям на время. Прокси, ну хуй знает, по моему опыту бесплатные очень медленные. Плюс, опять-таки, димасик не сделал такую возможность пока. Но, благо, сама либа с гулькин нос, так что форкай, дерзай и доминируй.
#496 #568681
>>568652
Спасибо за пояснение по релизам, а то я чот совсем не шарю, всегда пилил даже без версий. А тут внезапно норот и версии и релизы захотел.
#497 #568687
>>568678

> Не ограничит...



Ну одно дело 5 запросов в секунду и другое 20.
сам понимаешь
#498 #568715
>>568687
Откуда ты 20 взял?
#499 #568744
>>568715
НАУРА)
ЛОЛ
#500 #568891
Блин, я совсем запутался. Мне нужна функция, которая бесконечно обновляется

Обычный бесконечный цикл while True работает отлично, но я не знаю как запихнуть его внутрь функции, чтоб потом можно было ее линкануть из другого скрипта. А функция автоматически завершается, как только получает первое значение из while цикла и фиг чего сделаешь.
#501 #568893
>>568891
Генератор?
#502 #568894
>>568891
help(yield)
#503 #568896
>>568894
спасибо
то что нужно как раз
#504 #568955
for s in multiline_string.split('\n'):
..print(s.strip())

Как можно стрип перенести в for?

for s.strip() in multiline_string.split('\n') - не катит
for s in multiline_string.split('\n').strip() - не катит
#505 #568959
>>568955
Сам спросил, сам ответил. Постоянно забываю эти мап-редусы

for s in map(str.strip, multiline_string.split('\n')): print(s)
#506 #568981
Подскажите пожалуйста какой выбрать IDE самый лучший для питона. САМЫЙ ЛУЧШИЙ!!!!! по вашему мнению.
#507 #569012
>>568959
Тогда зачем тебе вообще for?
#508 #569044
>>568981
pycharm
285 Кб, 815x577
#509 #569075
Подскажите в atom можно обойти поеботу с input?
Когда в скрипте есть input, atom не хотет выполнять
С английским плохо. В гугле нашел ответ одного из разработчиков : "Мы не будем делать stdin" . Я как новичок нихуя не понял.
#510 #569123
>>569075
Чем пользуешься для запуска? Atom сам по себе ничего не запускает.
#511 #569125
>>568981
Подскажите лучшую фирму для ноутбука с целью коденка под иос
#512 #569126
#513 #569127
#514 #569128
>>569126
>>569127
Бля, я, видать, хуевую аналогию провел
#515 #569131
>>569123
Из пакетов установил только linter и autocomplete-python.
И потом просто запустил свой старый скрипт, который писал еще IDLE.
#516 #569132
>>569131
Как запустил?
#517 #569137
>>569012
Затем что стрип в цикле используется несколько раз, а писать s=s.strip() - лишняя строчка.
#519 #569145
>>569143
Запускай из консоли, заебал.
#520 #569149
Анчоусы, посоветуйте гайдов для быстрого вкатывания на питон
60 Кб, 300x240
#521 #569153
>>569145
Бля, сори, ебать я тупой. Я понял что ты меня спрашивал. Запускал с помощью Script и Script-runner.
6 Кб, 1392x33
#522 #569154
Нужно написать класс или модель, что-то туплю и даже не знаю как подступиться.

Нужен общий класс "Мебель", у него должен быть атрибут "Тип мебели" от которого дальше должно подгружаться дефолтный набор атрибутов соответствующие типу и которые в дальнейшем можно изменять.

Например, Тип - Ящик. У ящика 2 боковых и 2 задних стенки + может быть ручка, а может и не быть, + 2 штанги. Собственно у стенок есть свои атрибуты вроде размеров и покраски.

Чтобы я мог потом хуярить элементы ввиде строк или блоков как на пикрелейтед. Хранить в базе постоянные величины и сохранять итоговые проекты.

Даже не знаю как подступиться.
#523 #569155
>>569149
Поставим вопрос по другому: имеет ли смысл учить 2й?
#524 #569156
>>569155
Нет, если ты не далбаеб.
#525 #569157
>>569156
Вроде не замечал за собой долбоёбства (^:
#526 #569158
>>569155
Раньше в шапке был варнинг, которой говорил что "питон 2 прекращает поддержку в 2020 и пора переходить на третий", но какая-то обезьяна при перекате его выкинула.

И я даже знаю какая.
#527 #569160
>>569157
Это весьма спорное утверждение. Поскольку любой не далбаеб заглянул бы в шапку в первом посте.
#528 #569161
>>569160
Ну я туда заглянул, потом форкнул процесс и с дочернего спросил тут, потом основной продолжил читать шапку, форкнулся и пошел читать хабр, там форкнулся и пошел на кодеакадеми хоспади, какая же это годнота-то оказывается!
#529 #569162
>>569160
Долбаеб кстати через О, господин недалбаеб.
#530 #569172
>>569161
Хоспаде, какой же питон простой
#531 #569173
>>569137
Но ведь map - это лишний проход по списку. Тебе так важно сэкономить строку?
#532 #569175
>>569173
А как тогда? Никак? Ведь слева от = должен быть СТЕЙТМЕНТ, а не ЭКСПРЕШШОН.

Должен быть способ.
#533 #569176
>>569137

>стрип в цикле используется несколько раз


Вот эту фразу совсем не понял. Ты думаешь, что в map strip() выполняется один раз или что?
#534 #569178
>>569154
Связь один-ко-многим, не?
#535 #569182
>>569175
Ты очень экспрессивно выражаешься, тебя трудно понять. В чем проблема-то, в нежелании написать "лишнюю строчку"?
#536 #569183
>>569176
Короче, есть два стула.

for ..
..print('1', s.strip())
..print('2', s.strip())

и
for ..
..s = s.strip() #ЛИШНЯЯ СТРОКА НЕ НУЖНА
..print('1', s)
..print('2', s)

Поэтому хочу засунуть этот стрип в строку с for
#537 #569191
>>569183
Да чем она тебе мешает? Она претит твоему эстетическому восприятию кода?
#538 #569193
>>569191
Да. Претит. Должен быть способ.
#539 #569212
>>569193
Ну хорошо, тебе претит эта строка, но несколько
вызовов print() - нет. Может тогда лучше оставить строку s=s.strip(), но вызывать print() в цикле? Как тебе такое предложение?
#540 #569217
>>569212
Ну принт я как пример привел, тело цикла намного больше и даже без принтов, но с необходимостью юзать стрипнутую s.
#541 #569218
>>569217
Тогда да, только еще один проход по списку. Лучшего варианта, чем твои пример с map, я не могу предложить, извини.
#543 #569222
>>569217
Юзай лямбду не?
Ну или как насчет немного гугла?
http://stackoverflow.com/questions/4071396/split-by-comma-and-strip-whitespace-in-python
#544 #569223
>>569222
Да под капотом такая же хуйня как с map получится. Лишний цикл.
#545 #569224
>>569223
Ты ниже до map дочитал или как даун первые 2 посмотрел?
#546 #569225
>>569224
И чего там? Плюс нихуя к производительности? Ну заебись. Вот такой же мап >>568959

Цикол то все равно лишний. Либо лишняя строчка. Опять два стула.
#547 #569229
>>569225
И что ты пытаешься добиться?
#548 #569230
>>569229
Идеала.
#549 #569232
>>569230
Зачем?
#550 #569233
>>569225
Анон, ты посмотри на это с другой стороны. Эта строка тебе кажется не красивой, но ведь красота в ее простоте и очевидности, даже через долгий промежуток времени ты сразу поймешь что она означает, а ведь про тот же map такого не скажешь. Да и выглядит она аккуратней чем map(str.strip, multiline_string.split('\n')). А как ты помнишь дзен говорит нам, что явно лучше, чем неявное.
Может таки стоит пересмотреть свои взгляды?
#551 #569234
>>569232
Чтобы в моей всратой жизни было хоть что-то идеальное. Для разнообразия.
#552 #569235
>>569234
Ты знаком с определением слова "Идеал" хотя бы исходя из словаря Ожегова или Даля?
#553 #569333
>>569153
Не пользовался ими. Попробуй run-in-terminal, запустит твой кал в терминале без хипстерства.
>>569220
for word in map(str.strip, str.split(line)):
нормальное решение. Что тебе не нравится?
#554 #569389
Шапку не читай, сразу вопрошай, какой IDE посоветуете?
#555 #569403
>>569389
PyCharm.
#556 #569409
Пиздец, обучаюсь на этом вашем кодекадеми, грит - напишите PigLatin translator и написано как должно быть в итоге, полазил в гугле, написал с ошибкой - говорит, мол, молодец, го дальше, но я так не считал, кликнул крестик, по итогам написал рабочий код эта хуета еще и переменные не очищает перед каждым запуском, следующий урок "принтаните свинячья латынь", принтанул перед своим кодом, следующий урок - трет весь мой код и говорит "ебани сюда рав инпут братуха", ну ёб твою мать.
#557 #569425
>>569403
Спасибо
#558 #569480
Анон, замучил нубский вопрос(я уже в бешенстве), куда, блядь, вводить:
$ 2to3 example.py
https://docs.python.org/2/library/2to3.html
?
Ни cmd, ни сам питон не кушает это.
#559 #569489
>>569480
Попробуй указать полный путь к файлу 2to3.py.
#560 #569494
>>569489>>569480
Нашел:
http://stackoverflow.com/questions/11071037/how-to-use-2to3-tool-in-windows
Причем 2to3 не было подефолту(хотя вроде как должен), пришлось отсюда брать
https://bitbucket.org/python_mirrors/2to3/src/8c5b845c14fc3a4f51371531c911745817abd87f/2to3?at=default
Ну пиздос
#561 #569507
Чот проиграл. На венде даже 2to3 исполнить целая история.

Осильте вы уже хотя бы виртуалки, блядь.
#562 #569634
>>569632 (OP)
Перекат.
#563 #569692
>>565996
>>565996

>распаковывать содержимое egg


Ты на верном пути.
sudo easy_install /path/to/package.egg
#565 #569695
>>566321
Обосрался с этой рекурсии.
#566 #570005
Есть какая-нибудь разница между ' и " или просто используется то, что удобнее тыкать?
#567 #570032
>>570005
Общепринято, что '
#568 #570034
>>570005
Если у тебя внутри ' будет символ ' то надо будет его экранировать с \', а " - не надо. И наоборот.
Есть ещё """ и '''
#569 #570053
>>570034
И чем тройные отличаются?
>>570032
Ясно
#570 #570074
>>570053
В тройных ты можешь ставить кавычки без экранирования. И можешь переносы строк ставить типа
x = """ fooo bar dd
dsagfdsg " sadga" fgs
"""
#571 #570120
>>570074
Ты меня обмануть пытаешься? Это же комментирование
7 Кб, 310x146
#572 #570127
>>570120
Комментирование это #
#573 #570129
>>570127
Ну многострочное комментирование. Как ты у себя на пике вообще что-то видишь?
#574 #570134
>>570129
В питоне нет многострочного комментирования типа как / / в си. Только #
Если ты тройные кавычки будешь для комментирования использовать то это не комментирование т.к. будет создаваться строковая переменная всё равно. Часто их используют для docstring`ов но это не комментирование это другое.
#575 #570137
>>570129

> Python имеет остроумную особенность, называемую строками документации, обычно обозначаемую сокращённо docstrings. Это очень важный инструмент, которым вы обязательно должны пользоваться, поскольку он помогает лучше документировать программу и облегчает её понимание. Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!

27 Кб, 537x443
#576 #570138
>>570134
Точно не обманываешь?
#578 #570141
>>570137

>Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!


Это как? Что подразумевается точнее
#579 #570145
>>570141
Прочитал уже
#580 #570146
>>570140
print(%имяфункции%.__doc__)
28 Кб, 1391x326
#582 #570157
Всем спасибо если вас тут несколько, идем дальше: почему пункты в словарь добавились не по порядку?
#584 #570162
>>570157
Потому что словарь не имеет порядка?
#585 #570163
>>570157
Потому что порядок элементов в словаре не сохраняется. Если тебе нужно сохранять порядок используй списки или
from collections import OrderedDict
#586 #570165
Пора перекат пилить.
#587 #570170
>>570165
Напомните, что там в шапку добавить нужно?
#588 #570175
>>570162
Ну я-то откуда знаю? Поэтому и спрашиваю.
>>570163
Да вроде пока не нужно, просто обучаюсь тут помаленьку и стало интересно чому так.
#590 #570191
Перекат >>570190 (OP)
#591 #570197
>>570191
Ммм, смишнявка в шапке (:
#592 #570359
Гайс, решил написать rss-ридер для практики. Сейчас поставил feedparser, скопировал код для парсинга atom-ленты, сейчас пытаюсь получить контент статей в rss-ленте, но интерпретатор ругается на Unicode error. variable.encode('utf-8') помогает, но это херня какая-то.

Код:
import feedparser

r = feedparser.parse('randomnoye url')
print(r.entries[0])

Что я делаю не так?
5 Кб, 160x174
#593 #570551
>>567728
>>567727
Я вернулся.
Я запилил такой код:

import random
inv = ["sword", "shield", "duck", "drug"]
while inv:
(отступ)\tx=random.randint(0, len(inv)-1)
(отступ)\tprint(inv.pop(x))
input("Hi!")

Благодарю за помощь.
Прошу благородного дона поправить меня в перечне функций и их значений:

x = random.randint(0, len(inv)-1) - будет присваиваться случайное значение 0 до числа элементов списка, за вычетом единицы.
inv.pop([x]) - принтует и удаляет элемент №х. Если я не укажу аргумент х, то удалит самый последний элемент списка.
word = random.choice(inv) - просто делает случайный выбор из списка, который будет занесен в переменную ворд.
def randomized(lst) - не догнал, что это.
random.shuffle(lst) - перемешивает элементы изменяемой последовательности. Соотв. не работает с тем, что неизменяемо.
#594 #570554
И да, ещё пара "умных" вопросов про сам питон:

1.Правда ли, что списки и кортежи Пайтона являются полноценным эквивалентом массивам из других языков?
2.Правильно ли я понимаю, что в Питоне нет констант, как таковых и любую переменную можно изменить в процессе работы кода?
#595 #571264
пилю перекат
#596 #571596
>>571264
На питоне?
Тред утонул или удален.
Это копия, сохраненная 10 ноября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски