Вы видите копию треда, сохраненную 10 ноября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Кстати неплохая форма для печенья.
Перекатываю неспеша свой зоопарк скриптов на питон. Вопрос — на какой фреймворк обратить внимание, чтобы можно было прикручивать легковесные вебморды с формами-табличками-графиками. Желательно, чтоб выглядело не как говно. Пока смотрю на flask, но может я чего пропустил.
Да, я понимаю, что мне в /веб/, но они там хостингами меряются, да цмсы разворачивают. К тому же меня читабельность кода интересует в первую очередь, поэтому сюда написал.
У тестов есть методы setUp и tearDown которые вызываются на прогон каждого из тестов (перед и после соответственно). Если на каждый прям тест что-то запускать и настраивать оче накладно, это можно сделать один раз для всего класса, setUpClass, tearDownClass.
>то можно сделать один раз для всего класса, setUpClass, tearDownClass.
Можешь подробнее рассказать как это работает и что такое декораторы и что они делают?
Хороший выбор. Но верстать сам всё будешь. На любом фреймворке. Бутстрап бери.
Напиши пустой класс с 2-3 пустыми тестами. Сделай методы setUp, tearDown, setUpClass, tearDownClass, в каждом из них print('имя метода'), всё сразу поймёшь.
Django, flask, tornado(если нужна асинхронность, хотя такой модуль можно прикрутил и к фласку)
Декоратор это функция, которая принимает на вход другую функцию, оборачивает её и возвращает.
То есть аргумент функция, что-то с ней делаем и возвращаем. Украшаем какбы. Вот и название декоратор.
Да. Если просто setUp, tearDown впишешь оно у тебя заново будет открываться на каждый тест.
Максимально.
Как мне правильно сделать сравнение класса в isinstance, чтобы оно работало при любом из:
import collections
from collections import звёздочка
import collections as ASDASD
И поменяв лишь класс, из которого наследую (collections.OrderedDict, OrderedDict, ASDASD.OrderedDict), метод оставался рабочим? Есть возможность через суперкласс как-то достучаться до его неймспейса и оттуда уже напрямую брать 'defaultdict' всегда?
from collections import defaultdict as defaultdict_for_my_custom_check
дальше импортируй сколько влезет хоть по нескольку раз одно и то же.
Нет, идея была в том, чтобы кто-то другой мог это мой класс скопировать себе в скрипт (а как ему там взбредёт в голову модуль импортировать я не знаю) и ему не пришлось копаться и изменять кучу кода, а лишь наследование исправить.
Конечно, модули импортируются лишь один раз, и я могу добавить свой import прямо в класс, но это как-то не интересно.
Сделай функцию. Входной параметр - класс-предок. Выхлоп - твой йоба класс.
from yobamodule import yobafunction
YobaClass = yobafunction(OrderedDict)
И чего это изменит-то? Меня не OrderedDict волнует же, а defaultdict, который находится в том же модуле, что и OrderedDict, от которого класс наследует, и как к нему универсально обратиться без самоличного импортирования модуля я не знаю.
>>561927
>Пусть сами импорты переносят.
Ну это, конечно, разумно, просто думал, что может есть какой способ сделать совсем уж обобщённо.
We will stand afront the throne of God!
Ну вон же я тебе написал как. Импортировать уже надо твой модуль. Про defaultdict никто даже и знать не будет. OrderedDict это агрумент как бы, и он может быть любой.
Что за библиотеку ты используешь то? В pygtk можно передавать доп аргументы когда вешаешь функцию.
Попробуй
from functools import partial
button.bind(partial(your_func, keyname))
А что ты имеешь ввиду под кнопкой? Клавишу на клавиатуре или кнопку на окне?
Anyway вот несколько вариантов:
1) partial
2) что-то типа button.bind("<Button-1>", lambda event: your_func(event, "button1"))
3) получать в твоей функции номер кнопки или объект по которому ткнули из аргумента event эти данные в нем содержатся.
http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
Вообще научись использовать repl - запускаешь python или лучше ipython
И набираешь
import Tkinter
help(Tkinter.Event)
Там всё описано.
Не возвращайся никогда.
Фриланс доски и репорзитории опен сурс проектов.
Есть вектор N1.
Нужно реализовать метод Краммера. Для этого надо менять для неизвестной под номер i столбец в матрице под номером i на вектор. Как эту хуйню заебашить?
Пока что только дошел до одной итерации, как сделать для N не могу понять. http://ideone.com/ac2Pfp
Спасибо, капитан. Эту ссылку я нашел наверное недели 2 как уже. Однако, если ты присмотришься внимательно эта хуита работает лишь в случае 3x3 и 2x2 системах, у меня же нет ограничений NxN. Поэтому данный быдлокод мне не подходит.
Посоны, а где в петону поглядеть как он логарифм, к примеру считает?
The math module consists mostly of thin wrappers around the platform C math library functions
Thank you, u so useful Mr Anglichaneen
Для логарифмов там вообще, по-моему, отдельные наборы инструкций на процессорах имеются, так что простенькой однострочной формулы в сорцах ты не увидишь. А так раскладывают в ряды и считают до нужной точности.
Изучая библиотеку для взаиможействия с АПИ твиттора, я написал пару скриптов для подписки\отписки\постинга и т.д.
Подскажите, пожалуйста, как сделать бота так, чтобы работали несколько аккаунтов параллельно. Для каждого аккаунта свои настройки (задержки, теги, количество подписок и т.д.) И чтобы был единый ГУИ для всего этого дерьма. На Qt или даже веб морда
Просто я тупой и не понимаю как это все структурировать. Вот есть у меня один скрипт, а что с ним делать хз. Написать еще один скрипт, который будет вызывать кучу скриптов с определенными параметрами? Как-то это костыльно. Хотелось бы веб морду, настройки в бд, чтобы все как у людей
Модно-молодёжно: asyncio, aiohttp, quamash+PyQt/websocket+browser.
Дедово-пердёжно: threads, PyQt/pyside/gtk/tkinter
mamka= dvach(a = "2", b = "c")
Прилежно переписываю. И он мне подчеркивает пробелы, a = "2" вокруг присваивания. И ссылается на пеп8. Это важно? Или мой вопрос не имеет смысла? А вообще пока я писал, то решил что пеп8 авторитетнее учебника, и я буду писать так как велит ИДЛЕ. А Чтобы все это время написания поста небыло потрачено впустую, я его отправлю.
>Написать еще один скрипт, который будет вызывать кучу скриптов
А разве бывает по-другому? Те же вебфреймворки выглядят как-то иначе?
Не ветеран, а ньюфаг. Я действительно не понимаю, что имеется в виду "по-другому". Не приведешь пример?
Благодарю.
Попытаюсь освоить вот это вот все.
Еще вопрос, нужна ли мне бд и какую использовать? nosql?
Я хочу попробовать использовать какой-нибудь поисковый движок из этих
https://github.com/rosarior/awesome-django#search
но не знаю какой выбрать. Нужен быстрой поиск по моделям без изъебств вроде сементики и пр. Что посоветуете?
(На беке python27 и джанга 18)
Собственно django-haystack может использовать разные поисковые движки под капотом. ( Solr, Elasticsearch, Whoosh, Xapian, etc.)
Какие из них лучше - хороший вопрос, наверное где-то есть статьи которые их сравнивают.
>Вызывать скрипт один раз, очевидно.
У него есть скрипт, выполняющий действие. Это действие нужно повторить на нескольких аккаунтах. Как тут обойтись без вызова скрипта несколько раз-то? (Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один?)
>Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один
Именно наоборот. Вызов скрипта - это как раз запуск .py файла , всё остальное - вызываются функции, инициализируются классы, выполняются методы.
[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 для меня загадка.
>Вызывать скрипт один раз, очевидно.
Эм. Ты называешь скриптом файл или содержимое файла? Вообще можно тупо сделать словарь с данными акков и распараллелить внутри твоего скрипта чтобы создавал новый тред под новую пару логин/пароль.
2015 год пора перебираться на тройку, а не сосать хуи на двойке.
Лол. Жалкий червь-ретроград сокрушается на тяготы жизни.
Че бля?
Я делал, но он получился такой неявный, что я нихуя не заметил.
Системно стоит допотопная 2.4, приложение работает на 2.7-его исполняемый файл и pip2.7 я уже нашёл. Приложение крутиться на Wsgi, Nginx.
inb4: find / -name "activate"
> Написать еще один скрипт, который будет вызывать кучу скриптов
и
> Вызывать скрипт один раз
Совершенно разное.
>>562479
Именно запуск .py файла. Не знаю откуда у кого-то может возникнуть ассоциация «скрипт» → «часть кода». Вот, допустим, был у тебя код в файле, ты его назвал «скрипт», потом добавил туда код из другого файла, который тоже «скрипт» и что, у тебя теперь два «скрипта» в одном файле? Бред же.
>>562547
Скрипт — это файл, точно вам говорю, посоны.
>>562505
С таким подходом вообще всё, что написано на пифоне, выполняется при «запуске файла». Изначально я намекал лишь на то, что запускать много инстансов пифона aka «скрипт, который будет вызывать кучу скриптов» архаично.
ок
>Скрипт — это файл, точно вам говорю, посоны.
Мне кажется, ты путаешь причину со следствием. Скрипт - это программа, обычно состоящая из одного файла, который, как следствие, так же называют скриптом. Но это не значит, что скрипт должен состоять из одного файла.
Я в конце дня стараюсь написать пост в жж. Что сделал, что не сделал и почему. И теги: хорошо, плохо. Соответственно: сделал всё намеченное и не сделал ничего. Само собой все записи скрыты.
У тебя дневник скорее, в которм ты отслеживаешь свою ификтивность, а я просто вместо тетрадки для заметок на стекле пишу. Хотя дневник надо бы завести,
Этот дневник для меня, а не для кого-то, чтобы потом прочитали. Два тега, для того что бы потом сделать анализ, какой день прошел хорошо, всё в этот день сделано, почему, и какой день плохо, почему.
Оценочные суждения.
Кек. Видимо да. Похоже очень. Ну это лучше чем целый декоратор впиливать.
В котором он недоспёрт из f#.
http://pastebin.com/bkJ4Ey3U
Обратите внимание на test3_link_following. Просто ни в какую не хочет кликать по ссылке. В чем может быть проблема?
Selenium + WebDriver // Python 3.5
Если объявить переменную глобальной в model.py (Например у меня действия после сохранения http://djbook.ru/rel1.4/topics/db/models.html#overriding-predefined-model-methods) я её достану в view.py?
У меня таблицы: сообщения, "страница" и "предок-потомок". В таблице "предок-потомок" одноименные поля. Таб. сообщения связаны по ключу с предком-потомком. И таб. страницы и связаны по ключу с предком потомком. В эти поля предок-потомок я хочу записывать комменты.
После request.method == 'POST' в view.py, я сохраняю в таблицу 'сообшения' пришедшееи хочу после сохранения в model.py объявить глобальной переменной и прописать её в RequestContext и шаблон чтобы вставить в data-id="глобальную переменную которая будет равна id в таб. сообщения".
Эта же функция опять принимает post с комментом если data-id (найду на странице на что ответ и отправлю его если он есть) не none, то там id и это потомок в табл. "предки-потомки".
Решил вопрос переключением между окнами, так как ссылка имела target = _blank, что открывало её в новом окне. Всем похуй, но мне приятно, что я разобрался.
Молодец, рад что ты разобрался. Правда, я не имею ни малейшего представления о том, что ты вообще делал. Но это только увеличивает ценность твоего достижения. Поздравляю.
То есть ты во вью её используешь?
Почему не сделать просто
if request.method == 'POST':
..m = Message()
..m.save()
..return render_to_response('temlate.html', context={data:m.id})
Вообще ты меня запутал. Покажи пример кода.
Но использовать глобальные перменные нельзя, особенно в джанге. Вообще.
Дело хотя бы в том, что когда ты будешь запускать этот свой джанго проект на рабочем сервере типа uwsgi или gunicorn - у тебя будет несколько тредов там. И это глобальная перменная будет между ними общей. И всё сломается.
Да. Но только после того, как ты сделал 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.
Делал printenv, ничего похожего не было, кроме того, что написал выше.
Похоже на то. Не пойму, как это работает, если по умолчанию стоит 2.4.
Есть цикл в котором я получаю вектора. С каждым шагом значение вектора пересчитывается. Как мне блять из этого отрисовать график с 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
Гугление ошибки выдаёт какую-то дичь без решения данной задачи. Ясное дело, что вся проблема в лишних скобках, но как от них избавиться или хотя бы отрисовать значения.
Хз.
Нужно решить ОДУ методом Эйлера и отрисовать его на экране. Оду выглядят в виде Ax=Y, где x и Y - векторы, а А - матрица.
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 из уравнений вроде 12x1+ 26x2 + 35x3 + x4 = 100, Y - содержит значения правой части равенства. Нужно найти X. Делается эта хуйня у меня методом Краммера. То есть берется матрица A и в ней в соответствии с индексом X заменяется соответствующий столбец на вектор Y. Потом считается определитель оригинальной матрицы и измененой и делятся друг на друга выходит соответствующий X. Тут всё вроде как заебись.
Но теперь мне эту хуйню надо проверить методом Эйлера и у меня хуёво выходит.
Эйлер для моего случая выглядит как
X(i+1) = Xi + (Y - AXi)h, где A это G*C^-1 матрица, h - шаг, Y - типа как ненулевое значение вектора.
Я хуй его знает. Это что-то рисует, но выходит дичь какая-то и я не знаю правильно или нет.
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 из уравнений вроде 12x1+ 26x2 + 35x3 + x4 = 100, Y - содержит значения правой части равенства. Нужно найти X. Делается эта хуйня у меня методом Краммера. То есть берется матрица A и в ней в соответствии с индексом X заменяется соответствующий столбец на вектор Y. Потом считается определитель оригинальной матрицы и измененой и делятся друг на друга выходит соответствующий X. Тут всё вроде как заебись.
Но теперь мне эту хуйню надо проверить методом Эйлера и у меня хуёво выходит.
Эйлер для моего случая выглядит как
X(i+1) = Xi + (Y - AXi)h, где A это G*C^-1 матрица, h - шаг, Y - типа как ненулевое значение вектора.
Я хуй его знает. Это что-то рисует, но выходит дичь какая-то и я не знаю правильно или нет.
https://docs.python.org/3/library/contextlib.html
Надо всё-таки как-нибудь выучить уже от корки до корки, чтоб от зубов отскакивало.
Вряд ли. В моём случае Метод Эйлера служит для вычисления динамических характеристик эквивалентных электрических схем.
Ты прав. Редкостное говно.
Делай отдельную функцию 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
Ты прав. Редкостное говно.
Делай отдельную функцию 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
Ну я в спеке читал, что можно class hui, а можно class hui(object). И вот во втором какие-то фичи есть дополнительные. Не помню уже.
С __init__? Нижние подчёркивания, неявная передача инстанса в качестве объекта.
То в двойке костыль был. Типа old-style oop и new-style oop. Это они так обратную совместимость кода сохраняли. В тройке уже что так, что так - разницы нет, всё new-style.
Нижние подчёркивания указывают на магический метод. В питоне их дохуя разных, не только init, и это позволяет их легко отличать от обычных. То есть init не предназначен для явного непосредственного вызова.
Передача self аргументом позволяет все функции в классе рассматривать как обычные функции, применять к ним декораторы, преобразования. Ни про какие bind this мы не вспоминаем, всё просто работает. Bound method в инстансе это такой карринг этих функций.
Про костыль понял, окей.
Я знаю, для чего они. Выглядят они премерзко.
Ах, каррирование. Ну тоже не очень приятно смотрится. А говорят, что должно радовать глаз.
>То есть init не предназначен для явного непосредственного вызова.
А как же super().__init__()?
Ну так ты вызываешь его внутри init потомка. Больше по идее нигде, хотя явно это не запрещается. Антипаттерн это вызов init из других методов класса и напрямую у инстанса.
Ну как скажешь. Лисп учить я всё равно не буду.
Если URL содержит не-ASCII символы, то из него может выйти что-то такое:
%D1%80%D1%83%D1%81 - этот кусок представляет 'рус' на русском.
Как называется такое кодирование и как строки, содержащие такие абракадабры, сделать читаемым юникодом?
Блять, у меня такая же проблема. Отправляю русский текст, на выходе абракадабра получается.
Нет, не забыл.
Блядь, магия какая-то. Один раз указываю - нихуя не робит, воторой раз всё ок. Пздц.
А в чем ты пишешь? Если PyCharm, то там в настройках проекта можешь еще попробовать кодировку поставить UTF-8
Это консольный примитивный редактор из 70-х? Он же вообще юников не может наверное.
Ясно.
По совету из Пасты(Священный текст!) я ныряю в питон. Он черный(как на ОПпике), скользкий как тысяча дьяволов. Омут зла. Вот к примеру, трудно заходит глава о регулярных выражениях. Ну, честно сказать, очень тяжко идет. А как у вас с ними?
Регулярные выражения одинаковая ебатория во всех языках. Что в яве что в яваскрипте что ещё где.
Другое дело, что в питоне дохуя способов вообще избегать регулярки там где не надо. Можно пользоваться всякими split, 'foo' in bar.lower() и прочими конструкциями. Ещё есть библоитеки для генерации человеко-читаемых регулярок.
Или готовые парсеры всяких форматов, так что не придется их регулярками парсить.
Вот в перле регулярки на каждом шагу и там это правда ад.
Так что не переживай, вряд ли тебе много ими придеться пользоваться.
>>563750
Вот кстати пиздатый сервис, чтобы по-упражняться и подобрать нужную регулярку
http://www.rubular.com/
Засовываешь какой-то тестовый текст и смотришь, с чем совпало, а внизу тебе и шпаргалка сразу.
Пока они простые всё просто. Но дальше начинается ад, когда надо всякие backwards-выражения делать и прочее.
http://pastebin.com/M1UgDkMc
Лжец, Черный Змей обожает сквернословие и блуд!
да убери их просто, один раз считывай инпут и все
В какую сторону рыть, чтобы вывести эту инфу через питон? Гугл говорит юзать винапи, но вменяемых доков и примеров так и не нашел, везде сотни строк непонятного кода.
Cама функция в WinAPI вроде называется WlanHostedNetworkQueryStatus, но как её использовать в питоне так и не понял. Установил питоновский win32api, но оно такого метода не имеет.
s=input()
И второе, дайте инфу по установке форума(или другого пакета). В выдаче гугла и ютуба одна хуита(или я в глаза долблюсь?). Добра.
Ньюфаг-кун.
до того, как начнешь.
phpbb
Нужен способ, чтобы находить определенные куски. Например ввожу L и он мне выдает ['L', 15, 'L1', 0, 2], словари не подойдут вероятнее всего, потому что таки 'L' может быть дохуя.
Можно ныть как хуесос что синтаксис уродлив или сделать wrapper на свой вкус.
Братишка не надо делать дохуя if, в питоне конечно нет case, но зато его можно сделать через словарь. Так намного удобнее.
Ну ебать, напиши мне цикл компактный. Я пока в затруднении сообразить его. Как-то впадлу чекать весь список и потом смотреть первый элемент. Может есть лучше вариант.
[x for x in SPISOK if 'L' in x]
filter(lambda x:x[0] == 'L', SPISOK)
Рекурсию сделай. Или import json.
Я уже день убил на эту хуйню. Суть проблемы: Решил я поиграться с создание оконных приложений на питоне под шиндовс. Скачал сам питон, PyQt4, и как среду разработки- Pydev вместе с Liclipse. всегда ловлю такой месседж
Питона должно хватать. Если тупорылый, пиши в вижуал студии.
Но по теме-я писал на pygtk в прыщесреде, качал сборочку python+pygtk под винду и всё запускалось под шиндой. Тоже самое с pyqt.
Нахуй тебе запускать какие-то pydev в винде?
Но я ставлю 32разрядную версию питона на свое допотопное говно
pygtk депрекейтед в пользу pygobject, прекращайте советовать нюфакам pygtk и начинайте советовать pygobject.
Вообще забудьте про pygtk
Я не советовал. Я говорю что лет 5 назад когда я делал свой быдлокод под винду тоже pygtk работал там заебися.
$ apt-cache rdepends libgtk2.0-0 | wc -l
1194
$ apt-cache rdepends libgtk-3-0 | wc -l
528
И это еще дебиан стейбл.
Где ты тут проблемы увидел, даун агрессивный? И нахуй мне скриншотик?
У Лутца в учебнике говорилось про дополнительную индексацию, со схожим со словарем принципом.
Из 1889. У нас как раз Питон в моду входит.
Жи есть, братан.
Это фишка такая, задумка дизайнера.
https://automatetheboringstuff.com/
Даже закон нарушать не надо.
Добавь.
Гитхаб же, тимворк, коллабортейшон, открытое коммунити, вся хуйня.
И еще заодно добавь - Если в шапке чего-то нету - ДОБАВЬ САМ, чтоб больше подобных быкований не было.
Если ты в зк - ты программист. Тут все программисты. С зарплатой в 140к. Далларов. Иди добавляй.
Ну вообще, я правда не программист, просто хобби, так что моё мнение нерелевантно, и книга может быть говном вполне. Хотя мне понравилась. Так что я добавлять не буду.
каждая мразь мимокрокодит тредов, и не желая брать на себя ответственность, выдает всякие сентенции.
Ну меня никуда не взяли на работу, так что я вполне имею право на эти сентенции, и если программистов будут сжигать, например, я с чистой совестью скажу что я не программист, так что нахуй иди.
Уж больно ты лоичен да последователен для непрограммиста. Спалишься на первом же допросе.
Охуенно.
Ну, то есть, я его учу и мне он доставляет, но куда на нем пиздовать работать и что на нем вообще пилят, я просто не ебу.
веб (flask, django)
новомодные SDN сети (openstack)
девопс и сисадминство
научные вычисления (scipy)
можно и десктоп-приложения хуярить (pyqt,pyside)
игрульки (pygame)
Ну хуй знает. Ты сам-то её читал? Что извлёк интересного? Чем она тебе помогла?
Нет ты иди нахуй. Сириусли, давай просто не форсить свое говно, а предлагать все основные варианты. Которых всего один два.
>отсталее
Поэтому гтк использует и хром, и файрфокс, и тундерберд, и дефолтные окружения 90% дистров, и небо, и даже Аллах. Отсталее не бывает.
Плюс, qt-loop можно с asyncio совместить благодаря quamash. С gtk такое можно?
Проиграл.
Ну ты только свое сказал, я в ответ только свое. Теперь давай уважать и друг друга и нюфагов и писать все варианты. Мы тут приличные господа жи.
>>565163
Знаю про твой квамаш только по тому что нагуглил пять секунд назад. Питоновский гтк легко тредится и асинкается нативными гткшными способами. Еще есть gbulb, полагаю это альтернатива этому квамашу.
http://blog.jetbrains.com/pycharm/2015/10/announcing-pycharm-edu-2-0-2-checkio-integration/
Кому нужен checkio, когда есть codewars? Намного больше заданий, советую кароч.
Это >>565115 не я писал.
> Знаю про твой квамаш
> гтк легко тредится и асинкается нативными гткшными способами
> gbulb
> 7 downloads in the last month
> Latest commit 8548711 on 12 Aug
Я не пытаюсь обосрать, просто есть то, что развивается. Было бы очень хорошо, если бы gtk шёл в ногу с qt, но, увы, это невозможно.
Они там переезжали с битбакета на гитхаб недавно. Но я его все равно не тыкал, одного гтк достаточно было.
Пользователи сами добавляют задания, поэтому там есть и плохие каты. выбери режим Rank up и сложность будет расти. К тому же тут есть поддержка не только питона, но и кучи других языков, из которых зачастую переводят интересные задания(тоже пользователи). Ну и еще есть более приятный интерфейс.
Лучше сам попробуй пройти несколько заданий. Желательно начинать с заданий которые вышли из беты.
Если с юникодом не работать, то разницу не заметишь. Выполнил уже 16 кат и думал что делал в python 3ничего, 2020 уже близко
>Если с юникодом не работать, то разницу не заметишь
Проиграл. А print в python 3 ты тоже обозначаешь не как функцию?
Я про codewars. Тут как раз юникода нет, а в python 2.7 можно писать как print, так и print()
Прекратится поддержка python 2 и он наконец то станет легаси.
http://ideone.com/EcH8O4
Он и внутри лупа возвращает True. Посмотри внимательнее на
>elif not stack or stack.pop() != b:
Что происходит, если в стеке 1 элемент и это последняя итерация цикла?
И этот посдений элемент равен b, к тому же.
Да похуй на тебя, щенок ебаный.
Я не понимаю почему она магическим образом сначала ['('], потом ['(','{'], потом ['('] и [].
Если это последняя итерация и осталься один элемент, то он должен вернуть False.
Суть скрипта в том чтобы он возвращал тру на правильную расстановку скобок. Например '([)]' и '{]}' должно вернуть False, а '({[]})' True.
Ну, раз не хочешь думать, объясню:
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.
>а там лишь return True.
Т.е. там return not stack, но stack уже пустой, так как из него pop'нули последний элемент внутри того самого if'а.
В какую сторону гуглить, чтобы сделать десктоп-приложение? Уже есть готовые фреймворки?
RRREEEEEEEEEEEEEEEEEEEEEEEEEEE
tkinter есть встроенный, но выглядит убого
антошка выше советует gtk
есть еще wxwidgets и pyqt/pyside
Спасибо, теперь я понял почему stack пустым стал, в глаза просто долблюсь. Но мне данный способ вообще не нравится. Вот http://ideone.com/K5nL6J намного понятней.
Ну и зачем ты так? Есть много хороших десктопных поделок на питоне, которыми я сам пользуюсь каждый день. Deluge например, самый близкий по гую к пресловутому utorrent. Comix - оче годно для чтения комиксов/манги. Meld - красивый гуевый дифф, в прошлом треде проскакивал не от меня. Все чисто питоновские. Дропбоксовский клиент опять же питон. Гуи ко всяким демонам часто на питоне пишут. Как и мелкие конфигурялки.
Не вижу ничего плохого, короче. Пишут же для десктопа на С#, на жабе и прочих монстрах.
Ещё есть известный jabber client gajim. Потом mirage, exaile, pitivi, guake. Ну и всякое говно типа ubuntu software center.
Что характерно, весь этот софт на pygtk, на pyqt ни одной поделки не знаю.
>Что характерно, весь этот софт на pygtk, на pyqt ни одной поделки не знаю.
Хотя бы потому, что кутя - коммерческая поделка.
Но все эти проги открытые, так что даже при старой лицензии на qt их можно было бы с использованием qt писать.
И уже давно как можно и закрытые вещи на qt делать вроде как.
И да, я знаю что pyqt вроде как платный, но есть же pyside
Бамп вопросу
Не совсем. tk же очень прост, обычно идёт в комплекте с питоном, а красивости для себя не нужны.
А ещё, кстати, там canvas есть
Складываю два числа из окон. но СУММЫ не получается. Где я обосрался?
# -- 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_())
Складываю два числа из окон. но СУММЫ не получается. Где я обосрался?
# -- 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_())
Не красивости, а удобности. В 2015, находясь в стандартной(!) библиотеке, иметь такую ужасную документацию. Скорее даже её отсутствие, плюс пещерное api (fg, bg, StringVar что бля?). Создаётся впечатление, что скорее всего tkinter написали по приколу.
Нехуй гнать, StringVar это реализация парадигмы Делегат, а доки в инете прочтешь.
Радует то что либа изначально для гуя так и не обросла всяким хламом вроде db, xml, потоками, сетью, html чего не скажешь про Qt, GTK и прочих wxWidgets.
Зацените песдадый хеловорлд:
http://pastebin.com/gEPumjMz
>ужасную документацию
ГОДНЫЕ ДОКИ И МАНЫ ПО TKINTER:
http://effbot.org/tkinterbook/
http://www.tkdocs.com/tutorial/index.html
http://zetcode.com/gui/tkinter/
http://www.tutorialspoint.com/python/python_gui_programming.htm
http://www.python-course.eu/tkinter_menus.php
Для нубья:
http://younglinux.info/tkinter.php
И ВООБЩЕ:
http://www.slideshare.net/r1chardj0n3s/tkinter-does-not-suck
ОП, добавь в шапку
Помню где-то год назад пилил на PyQt интерфейс полностью на webview, прикручивал сигналы прямо на хтмл, но уже не помню как там это всё работает.
Так вот, можно ли таким макаром намутить моднявый интерфейс с красивыми кнопочками и джаваскриптами или придется довольствоваться только чем-то упрощенным?
Вот htmlaudio, помню, точно не работало.
Какой, нахуй, делегат? Все цивилизованные фреймворки используют просто метод объекта-виджета. Зачем эта промежуточная сущность?
>>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.
Начсёт htmlaudio не скажу, но интерфейс сделать можно. И джаваскрипты будут.
> название событий строками
в gtk тоже
> строковые модификаторы
если я правильно понял, то в gtk тоже есть всякие gtk.TextBuffer. а уж всякие деревья/списки через такую жопу делаются
Надо всякие TreeStore(str) делать для них в них TreeViewColumn в них всякие CellRendererText и это самый простой случай.
> окошко автокомплита для инпута, например, или place-holder, или чтобы когда ты тыкаешь в поле таблицы, там появлялся edit виджет
Но вот это делается легко
Это я не в защиту tk, т.к. tk ненужное говно.
> в gtk тоже
В qt тоже было до недавнего времени, но сейчас шибко приятнее сделано.
Я имею ввиду то, что это за строки: "<Button-1>", например. Ну, что это за огрызок?! Зачем эти угловые скобки? Что за 1? Если бы было написано "mouse-left-button-clicked", то всем бы было лучше.
Там есть встроенный такой функционал.
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 идет набор примеров там всё это есть.
Нахуй ты 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
Вы что, читать не умеете? Ну ебаныйврот.
Сто раз уже говорилось
Д Е П Р Е К Е Й Т Е Д
Е
П
Р
Е
К
Е
Й
Т
Е
Д
Я же написал
>в pygobject тоже соотвественно
Будто блять они пиздец как отличаются друг от друга.
Уверен что такие посты пишут те же дебилы что в 2015 году агитируют использовать сырой пи3 под который нет библиотек и который по дефолту разве что в arch linux.
Весь пост был ответом, на пост о tk.
Ты прочитай что они пишут то.
У нас энтерпрайз и большинство кода на python2. Он будет по дефолту до 2021 а там посмотрим.
Но в лотке же держат целые яйца, а не их содержимое.
Запилил тебе за щеку, проверяй.
Лалка, а функцию кто вызывать будет?
А вообще - я вынул глаза из жопы и посмотрел на задание - у них там индент кривой. Два вызова say() убежали на один индент вправо. Должно быть так:
def say()
..print(
say()
say()
Бля, не заметил, что в теле функции идет ее вызов, лол
Как же припекает, когда «учат» не по pep8. Эти же люди потом будут писать свой говнокод так, как их научили.
Что за рер8 ?
А я про пеп8 в курсе давно, но так и пишу функции в CamelCase. Даже спиздил кусок кода - он в snake_case, и рядом с ним дописываю свой CamelCase. Нихуя не могу с собой поделать.
https://www.python.org/dev/peps/pep-0008/
>на линуксорге кого-то назвали мудаком, ибо пеп8 не соблюдён.
Все правильно зделоли. второй двач, епт
Благодарю.
пеп тупое говно для нубов
дают тупые советы типа использовать пробел вместо таба.
и пробелы расставлять как они хотят а ни как тебе удобно.
Какие переносы, дибил? Где ты переносить собрался? После =?
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)
А, спасибо напомнил, а то я не то немного написал.
Забыл просто кое что.
> автоматом при билде на новой машине зависимости подтягивать
Используй virtualenv и pip.
pip freeze > requirments.txt
А если я хочу все выкачать на новой машине (с установленным python, pip и virtualenv) и одним скриптом все развернуть и сбилдить? Я в питоне мимокрокодил, просто хочу запилить свою мелкоутилиту так, чтобы потом не было стыдно выложить.
Ну ты на новой машине делаешь virtualenv, активируешь его и запускаешь pip install -r requirments.txt
оно всё поставит. Можешь это делать из скрипта.
Можешь заюзать чето типа http://www.fabfile.org/ чтобы удаленно это автоматом на много машин делать
Ну да для того чтобы поставить сам virtualenv pip возможно gcc какие-то -dev библиотеки если надо могули на си ставить это из скрипта придется делать но это одна строчка.
поросёнка пеппа?
- я беру айдишники этих файлов и преобразую их в ссылки
- по адресу ссылки есть кнопка для скачивания с которой в копирую ссылку
- качаю все через wget
Как уже упоминал, я многое забыл и у меня как-то с fire bug и selenium на заладилось. Помогите парой строк кода для копирования ссылок для скачивания.
https://pubget-hrd.appspot.com/?q=26279571&pdf_only=on
вот так выглядит сайт и надо скопировать ссылку с кнопки
"direct link to its pdf".
Спасибо
Да, это решение не является очень хорошим, но мне оно на один раз. Может кто-то поможет?
import urllib,re
p=urllib.urlopen('https://pubget-hrd.appspot.com/?q=26279571&pdf_only=on').read()
re.findall("ol\('(.*pdf)'",p )
#Out[7]: ['http://www.cell.com/cell-reports/pdf/S2211-1247(15)00820-7.pdf']
$ 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
Зайди в жс-тред, там точно так же по губам проводят копипистерам в тред, потому что, внезапно, отступы используют везде, что очень сильно способствует чтению кода.
В ЖС-тред вообще нельзя зайти и не получить по губам. Или тред такой, или язык.
под Шидовским wget это будет работать? скучаю по Linux ;( и по консольке
Понятия не имею. Тут еще cut и grep же. И command substitution баша используется.
Гарантий и на 100 лет нет,
но джуниором вполне реально стать и за полгода умеренного вjobывания.
Я как раз пол года учу Python, но до джуниора мне далеко очень. Очень много не понимаю. Видимо не умею учится по книжкам.
Нет. Всякие эти курсы - говно для дебилов.
Гораздо лучше можно научиться если что-то начинать делать и если есть коллеги по работе, которые могут что-то подсказать, объяснить.
Двачую пациента сверху. Курсы - говно. Не умеешь программировать сам - иди учить других. На этих курсах вот такая логика.
Просто возьми и начни делать. Документации навалом. Перебери и найди подходящую себе. Если что-то непонятно - спрашиваешь у гугла. Совсем непонятно - у двача.
>>566247
>У нас энтерпрайз
ПИДАРАШКИ НЕУМЕЮТ В ЮНИКОД
http://habrahabr.ru/post/208192/
http://farmdev.com/talks/unicode/
автор - Кумар
спасибо, мастер
На хабре перевод же.
Ну инициализированные переменные можно юзать, то есть типа:
a = "",
def func(x="Слово").
А вообще нужно чуть поконкретней.
Не, я в итоге хочу внутри cmd запускать программу, чтобы она принимала на ходу буквы и предлагала слова начинающиеся с этих букв.
То есть программа запускается, ждёт символов каких-то. Как только получает, например букву
'p' предлагает слова из списка внутри программы, допустим 'python', или 'penny'. И всё это без нажатия enter'а и собственно ввода, то есть если в строке 'pyth' стереть символы до 'p' - она снова предложит пенни и питон (ну как например ввод в поисковиках действует, живой поиск, но в командной строке). Как-то так, надеюсь нормально объяснил.
Ты, видимо, имеешь в виду автодополнение. Скорее всего ты это сможешь сделать с помощью модуля readline.
Заходи, если что.
Питон 2.7.1, urllib2, json
Скачиваю кусок json в utf-8. Пишу его в файл. В полученном файле вперемешку встречаются / и '/'. Как заставить питон конвертировать / в '/' ?
Самая хуйня в том что афтары библиотек не хотят поддерживать две ветки библиотеки под раные питоны. Они либо забивают на одну ветку, либо делают ебучего мостра который будет работать под обоими версиями питона - это медленее и код страшнее.
Сейчас ынтырпрайзник из школы придет и пояснит тебе по-хардкору кто нужен а кто нет.
Раньше было получше с этим но как кризис то всё пизда.
Для специалистов по нормальным же языкам типа явы ваканский около тысячи в одной дс и зарплаты есть и по 200к.
Только 3% разработчиков активно используют python3
Я думаю, этот вопрос достоин отдельного треда, тут ему будет тесно.
Двоечники, что сказать.
А ты уточни какой нужен опыт работы на вакансии по 200к.
Аноны, что вообще значит эта строка из учебника Доусона?
super(Application. self) ._init_(master)
Там еще Application класс, а master, аргумент метода конструктора.
Спасибо.
Суперкласс/Родитель, т.е. класс, от которого наследовал объект. Точнее, super это функция для доступа к этим самым предкам.
Спасибо, уже понял, но спасибо.
нужно проверить есть ли одна строка в другой, но допускается неточное совпадение, например проебаный мягкий знак, тк одна строка получена машинной транслитерацией в две стороны
Выводит ошибку
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
Ты блять мягкий знак вместо английской бэ написал, как ты умудрился то?
Он патралить хотел.
> line is too long
Отключи эту хуйню. Это тупое ограничение не актуально, 80 символов в ширину охуеть, у нас не vt100 экраны сейчас.
Конечно совсем уж слишком длинных строк стоит избегать но 80 символов слишком мало.
Тогда только на присваивание лямбды ругается. У меня она оче короткая и внутри другой функции, чот не хочется отдельно def делать, и саму лямбду по коду копипастить тоже.
> У меня она оче короткая
Ну и что
> и внутри другой функции,
Ну и что, можно делать def внутри def
> саму лямбду по коду копипастить тоже.
Зачем её копипастить? Может если ты её копипастишь то надо бы это как раз в отдельную функцию вынести причем на уровне модуля, а не внутри другой функции?
def лишняя строчка, не хочу лишнюю строчку. Присваиваю потому что лямбда используется всего два раза и
check = lambda :x
check()
check()
лучше чем копипастить саму лямбду.
Ящитаю код должен быть компактным. Я уже в джва раза ужал.
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.
Это просто пример того что на это тупое ограничение в 80 столбцов забивают везде, хотя и следуют pep8 в остальном.
Надо запилить прогу, которая выводит, в случайном порядке, все элементы из списка, без каких либо повторов.
Компилятор ругается и ничего не работает.
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!")
Исправь на:
x = random.randint(0, len(inv)-1)
inv.pop(x)
вообще можешь сразу писать
print( inv.pop(x) )
или можешь сделать random.shuffle(inv) это перемешает список а потом просто выводить последовательно элементы
Или вот ещё вариант
import random
inv = ["sword", "shield", "duck", "drug"]
while inv:
..word = random.choice(inv)
..print(word)
..inv.remove(word)
>>567721
Ого. Благодарю тебя, добрый Анон.
Только, я не понял, почему у меня не заработало. Я забыл, что индекс меньше длинны на единицу (в плане, значение меньше, из-за сдвига).
Но как работает это: print( inv.pop(x) ) Т.е. напечатать то, что сразу удалится?
>random.shuffle(inv) это перемешает список
Но зачем? Т.е. будет просто рендомный порядок в рэндомном списке.
>>567724
Спасибо. Действительно, проще просто указать наличие элементов списка, как условие цикла.
функция list.pop не просто удаляет элемент, а возвращает его значение.
> Т.е. будет просто рендомный порядок в рэндомном списке.
Ну можно сделать вот так
def randomized(lst):
..lst=lst[:] # делаем копию списка чтобы в оригинальном списке элементы не радномизировались, если мы ходим порядок сохранить в нем
..random.shuffle(lst)
..return lst
inv = ["sword", "shield", "duck", "drug"]
for element in randomized(inv):
..print(element)
> Только, я не понял, почему у меня не заработало.
inv.pop(["x"])
Что это за ["x"] ? Список из одного элемента - строки "x" ?
Тебе надо было передавать номер элемента то есть переменную x.
Hamming distance
Тупой здесь только ты. Это ограничение заставляет разбивать твои говнооднострочники на что-то читаемое. Потом тебе и 120 будет мало.
И сокращать имена до нечитаемости, ага. Это ограничение пошло от ширины текстовых терминалов, а не от чего-то ещё.
https://github.com/dimka665/vk
в общем захотел поиграться с вк.апи
Статистику пособирать и т.д
Нашёл библиотеку от чувака, который её периодически дополняет.
но перед этим я установил другую библиотеку.
которая импортируется так же.
в общем сейчас у меня проблемы с авторизацией.
и думаю, что может быть это из за того, что импортируется первая библиотека, которую я установил.
Как удалять библиотеки? Т.е достаточно ли просто удалить папку? (не пинайте за тупой вопрос - не питонист)
Мне не нравится что простое нежелание изучать орм джанги решили таким кривым способом и я отказался от предложения переходить на этот го.
Короче все явно идет к тому что я вылечу из этой говноконторы, но вопрос только в том когда. Суть моего вопроса - стоит ли рыпаться сейчас, в конце года, и искать новую удаленку или стоит все же попробовать дотянуть до следующего? При том что имею на данный момент год опыта работы с джанго.
С весны начинай искать. До НГ работы нет.
> нежелание изучать орм джанги
А что с ней не так? Можно алхимию к джанге прикрутить.
С поиском конечно пиздец - дохуя готовых решений же.
А насчет работы - чет хреново сейчас с поисками работы. Мало вариантов - раньше больше было. Из-за кризиса хуизиса многие конторы перестали нанисать новых, а то и сокращают народ.
запостить пост на стену в вк.
Мне это даже по сути не надо, но уже часа два вожусь.
не знаю в чем проблема. по сути ничего сам даже не писал
хапнул библиотеку
https://github.com/dimka665/vk
и пример простой с форума.
главное вроде бы вещи, не касающиеся авторизации работают.
В общем вот код: http://ideone.com/pwtsaE
Может кто из местных пользовался этой библиотекой.
Ошика такая : TypeError: 'module' object is not callable
Подскажите пожалуйста, где наложал.
Ну я так и поступлю. Но хотелось бы узнать есть ли тут те, кто ее читал? Какие впечатления?
Годная книжка, её многие рекомендуют.
Я правда сам не читал и почему-то у меня она называется "алгоритмы построение и анализ". Автор тот же.
Кинь ссылку на этот вводный курс.
Спасибо.
Да мне все равно.
> {'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.
Чтобы потом по ним пройтись и попробовать статистику пособирать
Попробуй использовать оператор '+' вместо append. Это будет слиянием списков, а не добавлением одного в другой. Если я правильно понял, ты имел в виду именно это.
Смотря что считать «правильным»
proigral)0
Я все же бегло прочел. Я это знаю, хотелось бы еще более детально.
Ну бля, а щито поделать то? Так и учат, через боль и страдания. Закачивать знания в мозг как в матрице мы пока не умеем.
Можешь попробовать вот это почитать и выполнить упражнения. http://aliev.me/runestone/Introduction/ObjectOrientedProgramminginPythonDefiningClasses.html
Нужен совет.
Хотел статистику по пользователям разную пособирать питоном,
но с помощью VK API.
Дико туплю, так как вебом\урл\хттп раньше не занимался ,
да и если честно желания никогда и не было.
Но конкретно это хочу всё таки добить.
Я получил пользователей в массив, с помощью вк.апи.
Теперь из массива хочу в цикле пройтись по каждому из них чтобы проверить :
- жив ли он вообще
- открыта ли страница.
- сохранить нужную инфу (список видео, к примеру, если открыто, и т.д)
, если пользователь интересен , в файл.
файл обновляю в цикле. и в итоге по нему собираю статистику
С помощью вк апи можно получить эту инфу, но я встрял
так как мне приходится в цикле проходить по всем ID из списка.
И если их даже больше 30, то возникают проблемы :
Возникают ограничения по запросам в секунду в вк апи.
Поэтому, наверное придётся делать , то что задумал уже без апи. Напрямую.
Запросы и т.д
В общем :
- может эту задачу вообще можно как то иначе сделать? т.е какие то лишние движения
- если в общих чертах замыслил правильно, то посоветуйте в сторону каких библиотек смотреть? чисто матчасть минимум, необходимая, чтобы сделать эту херню.
Сильно не пинайте ребята,. не питонист совсем ()
Нужен совет.
Хотел статистику по пользователям разную пособирать питоном,
но с помощью VK API.
Дико туплю, так как вебом\урл\хттп раньше не занимался ,
да и если честно желания никогда и не было.
Но конкретно это хочу всё таки добить.
Я получил пользователей в массив, с помощью вк.апи.
Теперь из массива хочу в цикле пройтись по каждому из них чтобы проверить :
- жив ли он вообще
- открыта ли страница.
- сохранить нужную инфу (список видео, к примеру, если открыто, и т.д)
, если пользователь интересен , в файл.
файл обновляю в цикле. и в итоге по нему собираю статистику
С помощью вк апи можно получить эту инфу, но я встрял
так как мне приходится в цикле проходить по всем ID из списка.
И если их даже больше 30, то возникают проблемы :
Возникают ограничения по запросам в секунду в вк апи.
Поэтому, наверное придётся делать , то что задумал уже без апи. Напрямую.
Запросы и т.д
В общем :
- может эту задачу вообще можно как то иначе сделать? т.е какие то лишние движения
- если в общих чертах замыслил правильно, то посоветуйте в сторону каких библиотек смотреть? чисто матчасть минимум, необходимая, чтобы сделать эту херню.
Сильно не пинайте ребята,. не питонист совсем ()
Поясни за все за это.
Э, Алён, половину этих вопросов надо в ВК и спрашивать. И шел бы документацию покурил. А то мы тут ананимасы, вк нет, все дела.
>Возникают ограничения по запросам в секунду в вк апи.
Э, ну епт, обмажься проксями, делов то. Или личными серверами хотя бы.
Ограничение там нежёсткое. 5 запросов в секунду точно можно. Просто делай между ними паузу. У димки на гитхабе такого пока в апи нет, к сожалению.
>>568635
Релизы на то и релизы, чтобы во время dev-коммитов не менять версию. В тот момент как решишь сделать релиз, меняешь версию в своей поделке, дописываешь чейнджлог и тому подобное. Коммитишь и релизишь на гитхабе с той же версией до которой поднял.
for item in text:
item = item.strip()
print(text)
проще некуда, блядь. а пробелы в начале и конце как были, так и остались. каков пиздец.
['kjh.',' xgdf.',' thtd']
ты text не меняешь вася
попробуй или так
print ([item.strip() for item in text])
если то, что надо, можешь сджойнить
print (''.join([item.strip() for item in text]))
а вообще, опиши, что уже есть (text - его содержимое), что надо получить и что по факту получается
Ахах, вот жеж ты мудель! У тебя текст как был текстом, так он текстом и остаётся; ты его не меняешь.
Сюда вот посмотри:
text = [' one ',' two ']
text = [x.strip() for x in text]
print(text)
В результате получишь ['one','two'].
>>568658
Ты так говоришь, будто бы не используя api, vk тебя не ограничит или забанит к хуям на время. Прокси, ну хуй знает, по моему опыту бесплатные очень медленные. Плюс, опять-таки, димасик не сделал такую возможность пока. Но, благо, сама либа с гулькин нос, так что форкай, дерзай и доминируй.
Спасибо за пояснение по релизам, а то я чот совсем не шарю, всегда пилил даже без версий. А тут внезапно норот и версии и релизы захотел.
Обычный бесконечный цикл while True работает отлично, но я не знаю как запихнуть его внутрь функции, чтоб потом можно было ее линкануть из другого скрипта. А функция автоматически завершается, как только получает первое значение из while цикла и фиг чего сделаешь.
Генератор?
..print(s.strip())
Как можно стрип перенести в for?
for s.strip() in multiline_string.split('\n') - не катит
for s in multiline_string.split('\n').strip() - не катит
Сам спросил, сам ответил. Постоянно забываю эти мап-редусы
for s in map(str.strip, multiline_string.split('\n')): print(s)
pycharm
Когда в скрипте есть input, atom не хотет выполнять
С английским плохо. В гугле нашел ответ одного из разработчиков : "Мы не будем делать stdin" . Я как новичок нихуя не понял.
Из пакетов установил только linter и autocomplete-python.
И потом просто запустил свой старый скрипт, который писал еще IDLE.
Затем что стрип в цикле используется несколько раз, а писать s=s.strip() - лишняя строчка.
Бля, сори, ебать я тупой. Я понял что ты меня спрашивал. Запускал с помощью Script и Script-runner.
Нужен общий класс "Мебель", у него должен быть атрибут "Тип мебели" от которого дальше должно подгружаться дефолтный набор атрибутов соответствующие типу и которые в дальнейшем можно изменять.
Например, Тип - Ящик. У ящика 2 боковых и 2 задних стенки + может быть ручка, а может и не быть, + 2 штанги. Собственно у стенок есть свои атрибуты вроде размеров и покраски.
Чтобы я мог потом хуярить элементы ввиде строк или блоков как на пикрелейтед. Хранить в базе постоянные величины и сохранять итоговые проекты.
Даже не знаю как подступиться.
Раньше в шапке был варнинг, которой говорил что "питон 2 прекращает поддержку в 2020 и пора переходить на третий", но какая-то обезьяна при перекате его выкинула.
И я даже знаю какая.
Это весьма спорное утверждение. Поскольку любой не далбаеб заглянул бы в шапку в первом посте.
Ну я туда заглянул, потом форкнул процесс и с дочернего спросил тут, потом основной продолжил читать шапку, форкнулся и пошел читать хабр, там форкнулся и пошел на кодеакадеми хоспади, какая же это годнота-то оказывается!
Долбаеб кстати через О, господин недалбаеб.
А как тогда? Никак? Ведь слева от = должен быть СТЕЙТМЕНТ, а не ЭКСПРЕШШОН.
Должен быть способ.
>стрип в цикле используется несколько раз
Вот эту фразу совсем не понял. Ты думаешь, что в map strip() выполняется один раз или что?
Связь один-ко-многим, не?
Ты очень экспрессивно выражаешься, тебя трудно понять. В чем проблема-то, в нежелании написать "лишнюю строчку"?
Короче, есть два стула.
for ..
..print('1', s.strip())
..print('2', s.strip())
и
for ..
..s = s.strip() #ЛИШНЯЯ СТРОКА НЕ НУЖНА
..print('1', s)
..print('2', s)
Поэтому хочу засунуть этот стрип в строку с for
Ну хорошо, тебе претит эта строка, но несколько
вызовов print() - нет. Может тогда лучше оставить строку s=s.strip(), но вызывать print() в цикле? Как тебе такое предложение?
Ну принт я как пример привел, тело цикла намного больше и даже без принтов, но с необходимостью юзать стрипнутую s.
Тогда да, только еще один проход по списку. Лучшего варианта, чем твои пример с map, я не могу предложить, извини.
Юзай лямбду не?
Ну или как насчет немного гугла?
http://stackoverflow.com/questions/4071396/split-by-comma-and-strip-whitespace-in-python
Анон, ты посмотри на это с другой стороны. Эта строка тебе кажется не красивой, но ведь красота в ее простоте и очевидности, даже через долгий промежуток времени ты сразу поймешь что она означает, а ведь про тот же map такого не скажешь. Да и выглядит она аккуратней чем map(str.strip, multiline_string.split('\n')). А как ты помнишь дзен говорит нам, что явно лучше, чем неявное.
Может таки стоит пересмотреть свои взгляды?
Ты знаком с определением слова "Идеал" хотя бы исходя из словаря Ожегова или Даля?
Спасибо
$ 2to3 example.py
https://docs.python.org/2/library/2to3.html
?
Ни cmd, ни сам питон не кушает это.
Нашел:
http://stackoverflow.com/questions/11071037/how-to-use-2to3-tool-in-windows
Причем 2to3 не было подефолту(хотя вроде как должен), пришлось отсюда брать
https://bitbucket.org/python_mirrors/2to3/src/8c5b845c14fc3a4f51371531c911745817abd87f/2to3?at=default
Ну пиздос
Осильте вы уже хотя бы виртуалки, блядь.
Перекат.
Обосрался с этой рекурсии.
Если у тебя внутри ' будет символ ' то надо будет его экранировать с \', а " - не надо. И наоборот.
Есть ещё """ и '''
В тройных ты можешь ставить кавычки без экранирования. И можешь переносы строк ставить типа
x = """ fooo bar dd
dsagfdsg " sadga" fgs
"""
В питоне нет многострочного комментирования типа как / / в си. Только #
Если ты тройные кавычки будешь для комментирования использовать то это не комментирование т.к. будет создаваться строковая переменная всё равно. Часто их используют для docstring`ов но это не комментирование это другое.
> Python имеет остроумную особенность, называемую строками документации, обычно обозначаемую сокращённо docstrings. Это очень важный инструмент, которым вы обязательно должны пользоваться, поскольку он помогает лучше документировать программу и облегчает её понимание. Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!
>Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!
Это как? Что подразумевается точнее
Прочитал уже
print(%имяфункции%.__doc__)
Потому что порядок элементов в словаре не сохраняется. Если тебе нужно сохранять порядок используй списки или
from collections import OrderedDict
Напомните, что там в шапку добавить нужно?
Ммм, смишнявка в шапке (:
Код:
import feedparser
r = feedparser.parse('randomnoye url')
print(r.entries[0])
Что я делаю не так?
>>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) - перемешивает элементы изменяемой последовательности. Соотв. не работает с тем, что неизменяемо.
1.Правда ли, что списки и кортежи Пайтона являются полноценным эквивалентом массивам из других языков?
2.Правильно ли я понимаю, что в Питоне нет констант, как таковых и любую переменную можно изменить в процессе работы кода?
На питоне?
Вы видите копию треда, сохраненную 10 ноября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.