首页 > 代码库 > 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: 求一个不确定列表中的每个数的对应数的次幂和。