Найти - Пользователи
Полная версия: Люди помогите решить задачки в питоне!
Начало » Python для новичков » Люди помогите решить задачки в питоне!
1 2 3 4 5 6
knkd
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…

А вообще то - учится мне ещё и учится…
Ed
Гы. Вообще-то это был 2.5

PS: Хм. Что же это было? В 2.5, который дома, не работает. Завтра посмотрю на работе.
knkd
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 мои :)
Ed
Дело в том, что у меня работало под чем-то. Я проверял прежде чем сюда постить. Что же это было ? :)
knkd
Ed
Дело в том, что у меня работало под чем-то.
Неизвестно, говорят лучше всего работает под амфетаминами :)
Ни в 2.6 ни в 3.1 не запускается. Может была какая то хитрая ошибка и удачные цифры ввода?
А если предварительно были неконтролируемые импорты…

Где есть простая (очень простая) неанглийская документация по itertools?
Чем больше пытаюсь им пользоваться тем меньше понимаю как оно работает :)
Ed
но разве input() безопасен?
Вообще весь этот код - это извращение. Так писать нельзя.
Но если хотите, то да, ваше извращение более безопасное, чем мое :)

Но моё решение первое потому мифические $30 мои :)
Я не претендую. Могу даже добавить мифических денег, если хотите :)
knkd
Ed
Вообще весь этот код - это извращение. Так писать нельзя.
Так задача не в том чтоб решить задачу (масло масляное), а в том чтоб решить задачу правильно, но так чтобы её невозможно было сдать неразобравшись :)
Достаточно преподавателю взглянуть на исходники и хорошее настроение на весь день - гарантировано :)
Ed
knkd
Неизвестно, говорят лучше всего работает под амфетаминами :)
Мда, видимо это как раз тот случай. Зашел на рабочий комп - там действительно 2.5 и не работает.
Можно еще через sys.stdout.write, но все равно нужно тогда sys импортировать.

Где есть простая (очень простая) неанглийская документация по itertools?
Чем больше пытаюсь им пользоваться тем меньше понимаю как оно работает :)
насчет документации не знаю. А что непонятно-то?
knkd
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' #
]
Ed
Если с английским туго, то рекомендую пробовать. Если чего не получится - спрашивайте здесь.
Вот, например возьмем 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 в англо-русском словаре, то станет еще понятнее.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB