2024-06-12 18:58:29 发布
网友
就像我告诉程序n=10,如何使它返回10*9*8*7*6*5....1?
n=10
10*9*8*7*6*5....1
我想了一会儿,但我觉得我把事情搞砸了,因为它没有把序列中的所有数字加起来。
我当前的代码如下
def product(n): i=n a=n-1 while a>0: return i * a b=i * a a=a-1 i=i-1
有没有更好的方法不使用递归来做呢?很抱歉问了一个难以置信的初学者问题,但我正在努力自学如何编写代码。你得从某个地方开始!
谢谢!
好吧,这是另一种Python疗法。
>>> import operator >>> numbers = range(1, 11) >>> numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> reduce(operator.mul, numbers) 3628800
假设您所指的是阶乘函数,您只需使用math.factorial():
math.factorial()
>>> import math >>> math.factorial(10) 3628800
既然你想学编程,我不会给你一个完整的解决方案,但是 我会给你一些提示:
有一个从1到n的for循环(使用range(1, n+1)),而不是while-循环。这将生成您想要倍增的值,并迭代正确的次数(这对于while循环有时可能有点棘手)。
for
range(1, n+1)
while
有一个名为product的变量来存储每次循环的乘法结果。
product
在进入product循环之前初始化for。进入后,您只需更新product的值。
完成循环后,可以使用return语句返回product的值。
return
最后,出于测试目的,您可能希望从一个较小的值n(如4)开始,并打印出在循环中计算的值,以验证代码的工作方式。
n
有更多简洁和pythonic的方法可以做到这一点,但这使用了您已经设置的代码结构。当然是递归的,你也提到过。
一旦你掌握了基本知识,你就会喜欢用更习惯的方式来编写,或者调用合适的函数来完成这项工作。
好吧,这是另一种Python疗法。
假设您所指的是阶乘函数,您只需使用
math.factorial()
:既然你想学编程,我不会给你一个完整的解决方案,但是 我会给你一些提示:
有一个从1到n的
for
循环(使用range(1, n+1)
),而不是while
-循环。这将生成您想要倍增的值,并迭代正确的次数(这对于while
循环有时可能有点棘手)。有一个名为
product
的变量来存储每次循环的乘法结果。在进入
product
循环之前初始化for
。进入后,您只需更新product
的值。完成循环后,可以使用
return
语句返回product
的值。最后,出于测试目的,您可能希望从一个较小的值
n
(如4)开始,并打印出在循环中计算的值,以验证代码的工作方式。有更多简洁和pythonic的方法可以做到这一点,但这使用了您已经设置的代码结构。当然是递归的,你也提到过。
一旦你掌握了基本知识,你就会喜欢用更习惯的方式来编写,或者调用合适的函数来完成这项工作。
相关问题 更多 >
编程相关推荐