Найти - Пользователи
Полная версия: Проблемы с выводом формулы
Начало » Центр помощи » Проблемы с выводом формулы
1 2 3
STS
Вот задачка: Даны действительное число a и натуральное n. Вычислить:
a(a+1)…(a+n-1)
я не могу формулу вывести, помогите пожалуйста… но если не трудно можно и полностью задачку…заранее спасибо…
Dimka665
reduce(lambda x, y: x*y, xrange(a, n))
STS
если не трудно а по русски как это читается?=) (просто чтоб понять)
ZZZ
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.
P.S. Dimka665, +1 за красивый ответ.
igor.kaist
ZZZ, я тоже сначала так подумал, но вроде не он..
STS, а как это по русски? Тебе задачу задали решить на русском языке, либо всетаки на лекциях по программированию на питоне?
Ferroman
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
ZZZ
Dimka665, ошибочка вышла…
print reduce(lambda x, y: x*y, xrange(a, a+n))
Скорее так, STS:
a = float(raw_input("Enter a: "))
n = int(raw_input("Enter n: "))

result = 1
for i in xrange(n):
result *= a + i
print result
Очень рекомендую пореже использовать while, потому что программа хуже читается.
Dimka665
ZZZ
Dimka665, ошибочка вышла…
print reduce(lambda x, y: x*y, xrange(a, a+n))
да. но у тебя тоже неправильно))))
при a действительном, xrange выдаст предупреждение и будет возвращать целые.
reduce(lambda x, y: x*y, (a+z for z in xrange(n)))
ZZZ
Dimka665
да. но у тебя тоже неправильно))))
при a действительном, xrange выдаст предупреждение и будет возвращать целые.
Хм… Красивое решение. Я не додумался.
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