python小知识点

问题:求列表中每个元素的元素次方之和
>>> a=[1,2,3,4]
>>> k=len(a)
第一种解法
#    s=0
#    for x in a:
#        s+=x**k
第二种解法
列表解析,每个元素的元素数次方
>>> [x**k for x in a]
[1, 16, 81, 256]

求列表元素之和
>>> sum([x**k for x in a])
354

水仙花数

一。先在python交互式中寻找算法
>>> 12345 %10
5
>>> 1234 %10
4
>>> 12345/10
1234
>>> 1234/10
123
>>>

>>> k=12345
>>> while k>0:
...     print k%10
...     k/=10
...
5
4
3
2
1

二。再在脚本中设计具体的实现,加判断,加循环,加输入与输出。
fgy@fgy-QTH6:~/Documents/python$ cat num.py def isA(n): a=[] t=n while t>0: a.append(t%10) t/=10 k=len(a) return sum(x**k for x in a)==n # s=0 # for x in a: # s+=x**k # return s==n begin=raw_input('please input start num: ') end=raw_input('please input end num: ') for x in range(int(begin),int(end)): if isA(x):print x

三。执行时验证。
fgy@fgy-QTH6:~/Documents/python$ python num.py
please input start num: 100
please input end num: 1000
153
370
371
407

找出不重复的三位数,下面这个程序使用了3重for循环,如果是4位,5位就不太适用了

num is : 986
num is : 987
count 648
fgy@fgy-QTH6:~/Documents/python$ cat num2.py
#encoding=utf-8
#a: 1-9
#b: 0-9
#c: 0-9

l=range(10)
count=0
for a in l[1:]:
    for b in l:
        if a==b:continue    #过滤a!=b的情况
        for c in l:
            if c!=a and c!=b:    #过滤b!=c,c!=a的情况,得到了互不相等的情况
                print 'num is : %d%d%d' %(a,b,c)
                count+=1
print 'count',count
原文地址:https://www.cnblogs.com/createyuan/p/5745932.html