@python_beginnersЭта группа больше не существует

Страница 905 из 1885
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
я ж говорю - нравится, юзай

зачем ебаться с ручной проверкой атрибутов
есть небольшая проблема с этой логикой если тебе нужен файл, что ты будешь проверять? isintance(x, file)?

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
class A(object): var = object()
не проходит)

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

Igor
10.12.2016
20:35:57
а хз

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

Igor
10.12.2016
20:36:41
с чего бы вдруг
NameError: global name 'Second' is not defined

Never
10.12.2016
20:37:07
Стоит уточнить что такое "действие"
Простые операции с переменными, к которым применяется f-ция. Можно конечно последовательность переписать как f1 f0 f2 f0 f3 f0 f4 f0...

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 ... И так далее вниз. Для машины (насколько я понял) действий получается меньше, чем в предложенном изначально варианте. Но как бы все это записать получше - я не знаю.

Тривиальная задача оказалсь интереснее, чем показалсь на первый взгляд. Если я морочаюсь зря - напишите почему. Я еще шарю плоховато во всём этом

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

Скрудж
10.12.2016
20:52:42
Тривиальная задача оказалсь интереснее, чем показалсь на первый взгляд. Если я морочаюсь зря - напишите почему. Я еще шарю плоховато во всём этом
Ты стоишь в точке X Y, ты можешь попасть во все точки X+1 Y+2 ; X-1 Y-2; X+2 Y+1 и т.д. Просто все эти точки добавляешь в очередь, проверяя на "возможность" хода

все

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

Скрудж
10.12.2016
20:55:12
Never
10.12.2016
20:55:19
Ты стоишь в точке X Y, ты можешь попасть во все точки X+1 Y+2 ; X-1 Y-2; X+2 Y+1 и т.д. Просто все эти точки добавляешь в очередь, проверяя на "возможность" хода
В принципе я же так и делаю, только моя проверка == f(x,y) Вопрос - как избавиться от тучи коротких стрчоек...

Скрудж
10.12.2016
20:55:48
В принципе я же так и делаю, только моя проверка == f(x,y) Вопрос - как избавиться от тучи коротких стрчоек...
я прочитал только первый абзац, а потом пошла гуманитарная вода, мне плохо стало

тнн 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
Я в телеге то меньше месяца, не придирайся
ладно-ладно, красавчик, я своего бота до сих пор не осилил, который пишется за 2 дн

Boris
10.12.2016
20:57:57
В принципе я же так и делаю, только моя проверка == f(x,y) Вопрос - как избавиться от тучи коротких стрчоек...
тебе дана клетка на доске. дальше делаешь список потенциально подходящих клеток, то есть (x+2, y+1) итд. этот список будет включать и невозможные клетки, типа (10,9) итд

В принципе я же так и делаю, только моя проверка == f(x,y) Вопрос - как избавиться от тучи коротких стрчоек...
дальше делаешь цикл, в котором каждую клетку проверяешь своей функцией. если клетка легальная - все ок, если нет - удаляешь из списка. в итоге получишь ответ на исходную задачу

Admin
ERROR: S client not available

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

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

тнн 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))

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

Google
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

Страница 905 из 1885

Эта группа больше не существует Эта группа больше не существует