Форум сайта python.su
Вот задачка: Даны действительное число a и натуральное n. Вычислить:
a(a+1)…(a+n-1)
я не могу формулу вывести, помогите пожалуйста… но если не трудно можно и полностью задачку…заранее спасибо…
Офлайн
reduce(lambda x, y: x*y, xrange(a, n))
Офлайн
если не трудно а по русски как это читается?=) (просто чтоб понять)
Офлайн
STS… Что-то мне твоё имя попоминает… Или кого-то… :-)
По-русски не знаю, но предлагаю тебе разобрать каждую строчку из приведённого ниже кода и, если справишься, поймёшь и запомнишь.
Last login: Tue Dec 2 21:13:18 on ttys000
ttys000 /Users/zzz $ python [0:46]
Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> help(reduce)
Help on built-in function reduce in module __builtin__:
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
Офлайн
ZZZ, я тоже сначала так подумал, но вроде не он..
STS, а как это по русски? Тебе задачу задали решить на русском языке, либо всетаки на лекциях по программированию на питоне?
Офлайн
STS
Попробуй разобрать каждое действие отдельно, и выложи сюда. Поправим что не так понимаешь.
Офлайн
Незнаю насчет “reduce(lambda x, y: x*y, xrange(a, n))” а так не легче?:
print “Enter a”
a=float(raw_input())
print “Enter n”
n=int(raw_input())
i=1
result=1
while i<n:
m=a+i
result=result*m
i=i+1
result=result*a
print result
Офлайн
Dimka665, ошибочка вышла…
print reduce(lambda x, y: x*y, xrange(a, a+n))
a = float(raw_input("Enter a: "))
n = int(raw_input("Enter n: "))
result = 1
for i in xrange(n):
result *= a + i
print result
Офлайн
ZZZда. но у тебя тоже неправильно))))
Dimka665, ошибочка вышла…print reduce(lambda x, y: x*y, xrange(a, a+n))
reduce(lambda x, y: x*y, (a+z for z in xrange(n)))
Офлайн
Dimka665Хм… Красивое решение. Я не додумался.
да. но у тебя тоже неправильно))))
при a действительном, xrange выдаст предупреждение и будет возвращать целые.
Офлайн