Найти - Пользователи
Полная версия: Люди помогите решить задачки в питоне!
Начало » Python для новичков » Люди помогите решить задачки в питоне!
1 2 3 4 5 6
Ed
Кроме того там много функций - ленивых аналогов уже известных. map, filter, zip
Вот тут по-русски немножко есть и не только про итераторы:
http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%9F%D0%B8%D1%82%D0%BE%D0%BD%D0%B5#.D0.98.D1.82.D0.B5.D1.80.D0.B0.D1.82.D0.BE.D1.80.D1.8B
pyuser
Ed
reduce(lambda y,x: x==0 and print(y) or x+y, iter(input, 99999))
Вы будете смеяться. python 2.6.4 - работает
Ed
Я не буду смеяться. У меня же вчера под чем-то работало.
Однако сегодня я вижу это:
$ python2.6 --version
Python 2.6.4+
$ python2.6 -c 'reduce(lambda y,x: x==0 and print(y) or x+y, iter(input, 99999))'
File "<string>", line 1
reduce(lambda y,x: x==0 and print(y) or x+y, iter(input, 99999))
^
SyntaxError: invalid syntax
чудеса, блин.
knkd
pyuser
Вы будете смеяться. python 2.6.4 - работает
Работает только если from __future__ import print_function
Иначе не работает, внутри лямбда-выражения не может быть print

Ed
Если с английским туго, то рекомендую пробовать.
Будем пробовать, если не отравимся :)

Сначала попробую остальные две задачки так само решить :D
pyuser
knkd
pyuser
Вы будете смеяться. python 2.6.4 - работает
Работает только если from __future__ import print_function
Иначе не работает, внутри лямбда-выражения не может быть print
О том что statement недопустим в lambda я знаю, и все же…
На работе WinXP SP3 python 2.6.4 - работает (без всяких from __future__ import print_function)
Дома Win7 python 2.6.4 - SyntaxError

ЗЫ. Как файл прикрепить? Сделал снимок консольного окна, а положить его сюда не получается (отсутствует поле “Прикрепленные файлы”)
asv13
knkd
Сначала попробую остальные две задачки так само решить :D
Долго что-то пишешь :). Формула для одной из задач выглядит в более читабельном виде так:

http://en.wikipedia.org/wiki/Natural_logarithm
knkd
asv13
Долго что-то пишешь
Так ведь хочется покрасивше :)
А спешить некуда - служба в армии дело неспешное.
pyuser
knkd
Так ведь хочется покрасивше :)
самое красивое решение:
import math
math.log1p(x)
жаль только, что eps из задачи не используется :(
не очень красивое:
from itertools import count, takewhile

lambda x, eps: reduce(lambda x, y: x + y,
takewhile(lambda v: abs(v) >= eps,
(pow(x, i) * float(pow(-1, i + 1)) / i for i in count(1))))
knkd
Третья задача.
Впринципе тут нужно было использовать takewhile() но я её написал на работе, в понедельник, а про магию *while() узнал только сегодня :)
Потому там унутре грязный хак xrange(1,171) :D
In [1]: lgr = lambda x, exp: 1 + sum (z for z in ((x**float(a))/float(reduce(lambda n,m: m > 1 and n*m or 1, xrange(1,a+1))) for a in xrange(1,171)) if z > exp)
In [2]: print lgr(1, 0.00000000001)
------> print(lgr(1, 0.00000000001))
2.71828182846
pyuser
не очень красивое:
Пытался сегодня сделать четвёртую, таким же способом самостоятельно - не выходит каменный цветок :(

А в стандартной библиотеке или в мат-пакетах есть float неограниченой длины?

ЗЫ Топикстартер догадается вернуться сюда за ответами? :D
pyuser
knkd
А в стандартной библиотеке или в мат-пакетах есть float неограниченой длины?
я не в курсе :(. напишите в личку Андрею Светлову, на этом форуме он, как никто другой ориентируется в потрохах Python'а
knkd
Пытался сегодня сделать четвёртую, таким же способом самостоятельно - не выходит каменный цветок
а Ваш код разве не есть решение? Подставил в него takewhile
form operator import mul
from itertools import count, takewhile

lambda x, eps: sum(takewhile(lambda v: v > eps,
(float(pow(x, i)) / reduce(mul, xrange(2,i+1), 1) for i in count())))
knkd
Топикстартер догадается вернуться сюда за ответами?
в смысле, после армии?
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