
Zart
10.12.2016
16:17:50
по крайней мере до абц не работало

arisu
10.12.2016
16:18:14
>New in version 2.4.

Zart
10.12.2016
16:18:31
new что?

arisu
10.12.2016
16:18:47
хотя вру

Google

arisu
10.12.2016
16:18:49
2.6

Zart
10.12.2016
16:18:54
абц в 2.6
а Iterable где?

arisu
10.12.2016
16:19:35
ну и почему бы не юзать это?
https://docs.python.org/2/library/collections.html#collections.Iterable
https://hg.python.org/cpython/file/2.7/Lib/_abcoll.py#l64 вот пожалуйста определение

Zart
10.12.2016
16:20:43
ну юзай, чо
мне лично абц нихера не нравится

arisu
10.12.2016
16:21:14
а мне вот наоборот
зачем ебаться с ручной проверкой атрибутов
когда во-первых объявлен интерфейс
во-вторых это самодокументируется
if isinstance([], Iterable):

Google

arisu
10.12.2016
16:22:35
а вот конструкция типа hasattr(obj, '__iter__') ниего не говорит о коде
ну атрибут, ну да
но смысл не передан

Zart
10.12.2016
16:24:02
до 2.6 это лет десять никого не смущало 8)

arisu
10.12.2016
16:24:54
аргумент ниочем

Zart
10.12.2016
16:25:57
я ж говорю - нравится, юзай

arisu
10.12.2016
16:38:33
если нужен файл, то да
а если file-like объект, то придумай сам

Zart
10.12.2016
16:39:37
увы
тем, кому нужен реальный файл - проверяют на fileno
тем кому нужен файл-лайк - обычно проверяют .read или .write

Never
10.12.2016
20:22:07
Всем приветик)
Такой вопрос, пусть нам нужно применить последовательность действий, причем такую, что, каждое четное действие - вызов некоторой фиксированной функции. Как это записать кароче, кроме как: 1) действие 1 2) функция 3) действие 2 4) функция 5) действие 3 6) функци.
Существуют ли в питоне какие подмены имен для простоты, кортежи не элементов а действий например или что-то подобное?

Igor
10.12.2016
20:32:36
извращений тред стартует прямо сейчас
нужно написать код, который проходит тест
assert(isinstance(b, Second))
класс b = B(5) объявлен в начале теста и импортируется из файла
from mb import B
Так-как импортируется только класс, мне каким-то образом нужно создать глобальную переменную в классе В, чтобы она попала в область видимости теста, в котором и написан assert(isinstance(b, Second))
Объявление global Second внутри класса никак на ситуацию не влияет

Never
10.12.2016
20:32:48
Чтобы например я записал последовательность (независимых друг от друга действий, т.е. таких что не задать просто циклом), и написал "фичу", которая бы после каждого действия вызывала бы некоторую f...

Igor
10.12.2016
20:33:55
кто знает, как создать глобальную переменную внутри класса, чтобы она была видна всем, кто импортирует содержащий её класс?)

arisu
10.12.2016
20:34:50
class A(object):
var = object()

Igor
10.12.2016
20:35:47

arisu
10.12.2016
20:35:53
с чего бы вдруг

Igor
10.12.2016
20:35:57
а хз

Google

Igor
10.12.2016
20:36:01
пробовал уже

b0g3r
10.12.2016
20:36:04

Igor
10.12.2016
20:36:41

Never
10.12.2016
20:37:07

arisu
10.12.2016
20:37:36
map не пробовали?

b0g3r
10.12.2016
20:37:40
Ну если такая последовательность, то в чем проблема?
В общем и целом - лучше описать конкретную задачу, потому что то что ты хочешь сделать - довольно странно

Never
10.12.2016
20:38:37
Как ее задать меньше чем в N строчек (где N - общее кол-во приминений любой из функций)?

b0g3r
10.12.2016
20:38:55
Наверняка есть какой-нибудь более "правильный" способ


Never
10.12.2016
20:45:01
Ну, решил значит готовиться к егэ по информатике, попалась задача: по координатам (1:8) включ для x,y определить все возможные ходы коня на пустой шахматной доске. OUTPUT: двумерный массив удовлетворительных координат.
В принципе задача тривиальна, на офф. сайте (решу егэ) предложено решение пробежки по всем из 64 клеток, проверяя условие "дальности" по модулю от исходной координаты.
Кусок текста паскаля как пример: for i := 1 to 8 do
for j := 1 to 8 do
begin
d1 := abs(i-x);
d2 := abs(j-y);
if ((d1=1) and (d2=2)) or ((d1=2) and (d2=1)) then writeln(i, ' ', j);
Но, пробежка аж по 64 клеткам... Мне не понравилось, поискав некоторые неочевидные закономерности, пришёл к минимально затруднительному графу, т.е. такой последовательности проверки каждой из 8 гипотетических клеток, чтобы от шага от i-ой к i+1-ой менялась (в 6 из двух случаев) дишь одна координата переменной (х,y). Проверку задал функцией питона, которая еще и добавляет в массив удовлетворяющие координаты:
def f(x,y):
if 0 < x and y < 9:
a.append([x,y])
Отлично, мой "граф" задался преобразованиями координат (x+=1 y+=2, y-=4, x-=2 и так далее). После каждого изменения получившиеся координаты необходимо проверить функцией f(x,y).
Получается некрасивый код:
...
y-=4
f(x,y)
x-=2
f(x,y)
y+=4
...
И так далее вниз. Для машины (насколько я понял) действий получается меньше, чем в предложенном изначально варианте.
Но как бы все это записать получше - я не знаю.
Тривиальная задача оказалсь интереснее, чем показалсь на первый взгляд. Если я морочаюсь зря - напишите почему. Я еще шарю плоховато во всём этом


Zart
10.12.2016
20:48:54

Never
10.12.2016
20:50:27
чем "действие" отличается от функции?
Мне пока сложно перестроиться, для меня пока что функция - отображение из X в Y, таких что/такое что. Не знаю, возможно в программировании разницы особо нет, я не знаю.

Скрудж
10.12.2016
20:52:42
все

тнн Itjunky
10.12.2016
20:54:57
Бобровый вечер, коллеги ;)

Скрудж
10.12.2016
20:55:12

Never
10.12.2016
20:55:19

Скрудж
10.12.2016
20:55:48

тнн Itjunky
10.12.2016
20:56:09
Есть фрилансеры или сочувствующие?
Ботика затестировать помогите моего

Google

тнн Itjunky
10.12.2016
20:57:04
Питончик позволил в 200 строк снова уложить вполне рабочий продукт =)

Скрудж
10.12.2016
20:57:05
дуров ввел кнопки, а ты сделал команды. Мда

тнн Itjunky
10.12.2016
20:57:27
Будут и кнопки

Скрудж
10.12.2016
20:57:47

Boris
10.12.2016
20:57:57

Admin
ERROR: S client not available

Never
10.12.2016
20:59:48

Boris
10.12.2016
21:00:26
не знаю. сделай два варианта и посмотри что быстрее

Zart
10.12.2016
21:00:38
может сперва запилишь работающий вариант, а потом ускорять начнешь..

Never
10.12.2016
21:00:53

тнн Itjunky
10.12.2016
21:01:07
Правда я по-ходу не осилил в полной мере алхимию. И у меня похоже сессии не закрываются. Что приводит к тому, что бот может не видеть новых записей в БД, а значит и последних спарсеных джобов

Zart
10.12.2016
21:01:33
эта задачка вообще решается в 1-2 строки на питоне
как-то так
_KNIGHT_MOVES = (-1, -2), (1, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, -1), (2, 1)
def valid_cell(x, y):
"""Возвращает True, если координаты клетки лежат в пределах доски"""
return x in range(1, 9) and y in range(1, 9)
def knight_moves(x, y):
"""Для коня в клетке x, y возвращает список возможных ходов"""
return filter(valid_cell, ((x+i, y+j) for i, j in _KNIGHT_MOVES))
легко нахерачить аналоги для других фигур, но лучше создать какойнить класс для координат
чтобы свести к return filter(valid_cell, (cell+offset for offset in moves))

Denis
10.12.2016
21:12:56

Zart
10.12.2016
21:13:25
тут пока неясно может ли он вообще трогать те классы

Google

Never
10.12.2016
21:14:10
как-то так
_KNIGHT_MOVES = (-1, -2), (1, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, -1), (2, 1)
def valid_cell(x, y):
"""Возвращает True, если координаты клетки лежат в пределах доски"""
return x in range(1, 9) and y in range(1, 9)
def knight_moves(x, y):
"""Для коня в клетке x, y возвращает список возможных ходов"""
return filter(valid_cell, ((x+i, y+j) for i, j in _KNIGHT_MOVES))
спасибо

Denis
10.12.2016
21:14:38
Мокнуть b.__class__ можно попробовать
Можно переопределить isinstance

Zart
10.12.2016
21:15:18
О.о

Igor
10.12.2016
21:15:23
классы A и B я могу трогать, менять нельзя только сам test и условия в нем
сейчас попробую)

Zart
10.12.2016
21:15:37
я нихуя не понял
сперва у него B и Second
теперь у него A и B
если можно менять B, то что мешает тупо вписать class B(Second): и всё?

Igor
10.12.2016
21:19:00

Zart
10.12.2016
21:19:15
можно полностью условия внятно?
>>> class Second: pass
...
>>> class B(Second): pass
...
>>> b = B()
>>> isinstance(b, Second)
True

Denis
10.12.2016
21:23:30
Неинтересно

Zart
10.12.2016
21:23:45
конечно нет

arisu
10.12.2016
21:24:08
куда интересней девочек щупать

Johnnie
10.12.2016
21:27:29
Эта группа больше не существует