首页 > 代码库 > Python 小议1: 求一个不确定列表中的每个数的对应数的次幂和。
Python 小议1: 求一个不确定列表中的每个数的对应数的次幂和。
最近在开始学Python,刚开始,很多不懂也很多不会,今天看函数的参数,函数的参数可以设置为可变参数,定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*
号。结合之前看到的求次幂的函数,突然自己想到一个,就是求一个可变列表中的所有数的对应的次幂的和,例如,一个可变列表里有(2,3,4,5)这几个数,我想要的就是求2的2次方,3的3次方,4的4次方,5的5次方,然后对着几个次方后进行求和。
思路:第一步是求n的n次方,第二步是求和。
结合之前求 x的n次方的函数:
def power(x,n):
s =1
while n >0:
s = s*x
n = n-1
return s
而我要求的是n的n次方,不存在x这个参数,把x换成n后,发现当执行n-1的时候,就把新的值传给了n,求的其实是n*(n-1)这种递减的了,一直困扰我到下班没有解决,请原谅我的小白水平吧。
下班在车上,突然想到,我可以把n在循环外面赋值给另外一个变量啊,到家吃过饭立马尝试,于是:
def power(n):
s = 1
j = n
while n >0:
s = s*j
n = n-1
return s
一试,果然可以,求出的是n的n次方。
接下来就是求和了,结合可变参数,最终函数是:
def calc(*num):
sum = 0
for n in num:
s =1
j = n
while n>0:
s = s*j
n = n-1
sum = sum +s
return sum
这个就是求一个可变列表中,所有数的对应数的次幂后的和。
例如 print calc(1,2,3,4,5),结果就是:3413
以后还得继续努力,不知道这个是不是比较快的算法,有好的算法的同学,可以和我说,谢谢!
本文出自 “中原火麒麟” 博客,请务必保留此出处http://robertoji.blog.51cto.com/1165386/1590826
Python 小议1: 求一个不确定列表中的每个数的对应数的次幂和。