码迷,mamicode.com
首页 > 编程语言 > 详细

python 学习总结4

时间:2017-10-28 21:09:31      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:改进   编写   value   题目   []   class   学习总结   new   div   

今天在codewears上做了一道题,仅为6kyu级别,但自己收获良多

题目为:编写一个函数,sum_dig_pow(a, b),找到range [a, b]之间所有符合特殊规则的的数字,将其放入列表中,并返回。

这种特殊规则,如下所示;

135 = 1^1 + 3^2 + 5^3

89 = 8^1 + 9^2

自己最开始写的函数为:

import math
def sum_dig_pow(a, b): 
    lis=[]
    for i in range(a,b+1):
        li=[]
        new_i=i
        #找到数字是几位数
        k=int(math.log10(new_i))

        #将数字切分,如将135切分为[1,3,5]
        for j in range(k+1):
            li.append(int(new_i/(math.pow(10,k-j))))
            new_i=new_i%(math.pow(10,k-j))
        
        #求如 1^1 + 3^2 + 5^3所示的和值
        ex=1
        sum=0
        for x in li:
            sum+=math.pow(x,ex)
            ex+=1
        
        #判断和值是否与当前数字相等
        if sum==i:
            lis.append(i)
                         
    return lis
     

  之后复习了之前的一些内容,对上述代码进行改进;

lis=[]
def sum_dig_pow(a, b): 
    for i in range(a,b+1):
        #将数字切分字符串,如将135切分为[‘1‘,‘3‘,‘5‘]
        li=re.findall(‘[0-9]‘,str(i))
        sum=0
        
        #求和
        for key,value in enumerate(li):
            sum+=pow(int(value),int(key)+1)
            
            #判断
            if sum==i:
                lis.append(i)
    return lis   

  

python 学习总结4

标签:改进   编写   value   题目   []   class   学习总结   new   div   

原文地址:http://www.cnblogs.com/xiaolong1989/p/7747958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!