Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2010 20:08:37

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

reduce(lambda y,x: x==0 and print(y) or x+y, iter(input, 99999))
2,6 -> SyntaxError: invalid syntax
3.1 -> NameError: name 'reduce' is not defined
Eсли это 2,6 - то print() нужно импортировать из футуры.
А если это 3,1 - то reduce() должен быть спрятан в итертулс? Что то я его там е нахожу.
Судя по голенькому input() (вместо raw_input()) это таки 3,1…

А вообще то - учится мне ещё и учится…



Отредактировано (Март 1, 2010 20:10:44)

Офлайн

#2 Март 1, 2010 22:45:41

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Гы. Вообще-то это был 2.5

PS: Хм. Что же это было? В 2.5, который дома, не работает. Завтра посмотрю на работе.



Отредактировано (Март 1, 2010 22:56:45)

Офлайн

#3 Март 1, 2010 23:26:31

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Ed
PS: Хм. Что же это было? В 2.5, который дома, не работает. Завтра посмотрю на работе.
print(y) # Синтаксис эррор.
iter(input, 99999)) # Хитрый ход, позволяет избавится от (float(raw_input(" -> ")) for i in itertools.count()), но разве input() безопасен?

iter(lambda: float(raw_input(" -> ")), 99999) # Опять я всё усложняю :)

import pprint
reduce(lambda y,x: x==0 and pprint.pprint(y) or x+y, iter(input, 99999)) # в принципе так работает.
reduce(lambda y,x: x==0 and pprint.pprint(y) or x+y, iter(lambda: float(raw_input(" -> ")), 99999)) # И так тоже работает. Всёравно проще чем у меня.
Но моё решение первое потому мифические $30 мои :)



Офлайн

#4 Март 1, 2010 23:31:59

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Дело в том, что у меня работало под чем-то. Я проверял прежде чем сюда постить. Что же это было ? :)



Офлайн

#5 Март 1, 2010 23:40:08

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Ed
Дело в том, что у меня работало под чем-то.
Неизвестно, говорят лучше всего работает под амфетаминами :)
Ни в 2.6 ни в 3.1 не запускается. Может была какая то хитрая ошибка и удачные цифры ввода?
А если предварительно были неконтролируемые импорты…

Где есть простая (очень простая) неанглийская документация по itertools?
Чем больше пытаюсь им пользоваться тем меньше понимаю как оно работает :)



Офлайн

#6 Март 1, 2010 23:40:37

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

но разве input() безопасен?
Вообще весь этот код - это извращение. Так писать нельзя.
Но если хотите, то да, ваше извращение более безопасное, чем мое :)

Но моё решение первое потому мифические $30 мои :)
Я не претендую. Могу даже добавить мифических денег, если хотите :)



Офлайн

#7 Март 1, 2010 23:53:31

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Ed
Вообще весь этот код - это извращение. Так писать нельзя.
Так задача не в том чтоб решить задачу (масло масляное), а в том чтоб решить задачу правильно, но так чтобы её невозможно было сдать неразобравшись :)
Достаточно преподавателю взглянуть на исходники и хорошее настроение на весь день - гарантировано :)



Офлайн

#8 Март 1, 2010 23:56:19

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

knkd
Неизвестно, говорят лучше всего работает под амфетаминами :)
Мда, видимо это как раз тот случай. Зашел на рабочий комп - там действительно 2.5 и не работает.
Можно еще через sys.stdout.write, но все равно нужно тогда sys импортировать.

Где есть простая (очень простая) неанглийская документация по itertools?
Чем больше пытаюсь им пользоваться тем меньше понимаю как оно работает :)
насчет документации не знаю. А что непонятно-то?



Офлайн

#9 Март 2, 2010 00:03:11

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Ed
А что непонятно-то?
Ничего не понятно :)

[    
'chain', #
'combinations', #
'count', # Бесконечный счётчик.
'cycle', #
'dropwhile', #
'groupby', #
'ifilter', # filter-итератор
'ifilterfalse', # filter-итератор
'imap', # map-итератор
'islice', # срез-итератор?
'izip', # zip-итератор.
'izip_longest', # zip-итератор.
'permutations', # не вполне понятно.
'product', # не вполне понятно.
'repeat', #
'starmap', #
'takewhile', #
'tee' #
]



Офлайн

#10 Март 2, 2010 01:02:12

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Люди помогите решить задачки в питоне!

Если с английским туго, то рекомендую пробовать. Если чего не получится - спрашивайте здесь.
Вот, например возьмем chain. Непонятно чего он делает, но судя по этому http://docs.python.org/library/itertools.html#itertools.chain принимает некую последовательность итераторов.
пробуем ему ее дать и посмотреть на результат:

In [1]: import itertools
In [2]: list(itertools.chain([1,2,3], ['a','n', 'z'], [0,0,0]))
Out[2]: [1, 2, 3, 'a', 'n', 'z', 0, 0, 0]
Сразу стало более понятно, не правда ли? А если напрячься и поискать значение слова chain в англо-русском словаре, то станет еще понятнее.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version