Python 练习实例13
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
程序源代码:
实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for n in range(100,1000):
i = n / 100
j = n / 10 % 10
k = n % 10
if n == i ** 3 + j ** 3 + k ** 3:
print n
实例(Python 3.0+)
for n in range(100,1000):
i = n // 100
j = n // 10 % 10
k = n % 10
if n == i*i*i + j*j*j + k*k*k:
print(n)
以上实例输出结果为:
153 370 371 407
Python 100例
苹果pai
646***039@qq.com
将三位数看成由三个数组成,并判断其各位数字立方和是否等于该数本身:
#!/usr/bin/python # -*- coding: UTF-8 -*- for x in range(1,10): for y in range(0,10): for z in range(0,10): s1=x*100+y*10+z s2=pow(x,3)+pow(y,3)+pow(z,3) if s1==s2: print "水仙花数有:%7ld" %(s1)苹果pai
646***039@qq.com
等一个人
252***465@qq.com
参考方案:
#!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(100, 1000): s = str(i) if int(s[0]) ** 3 + int(s[1]) ** 3 + int(s[2]) ** 3 == i: print(i)等一个人
252***465@qq.com
程程
sun***ne_xcc@163.com
水仙花数及其个数
#!/usr/bin/env python # -*- coding: UTF-8 -*- L = [] for n in range(100,1000): i = n / 100 j = n /10 % 10 k = n % 10 if n == i ** 3 + j ** 3 + k ** 3: if n == pow(i,3) + pow(j,3) +pow(k,3): L.append(n) print(L) print len(L)程程
sun***ne_xcc@163.com
Kunz
sun***gup@163.com
兼容 Python2.x 与 Python3.x,Python3.x 取整为 //,而不是 /, 参考方法:
#!/usr/bin/python3 # -*- coding: UTF-8 -*- for i in range(100,1000): h=i//100 t=(i-100*h)//10 s=i-100*h-10*t if i==h**3+t**3+s**3: print(i)Kunz
sun***gup@163.com
cytoplasm
kon***ngjie2008@163.com
参考方法:
#!/usr/bin/env python # -*- coding: UTF-8 -*- a = 1 b = 1 c = 1 for a in range(0,10): for b in range(0,10): for c in range(0,10): if int(a)**3+int(b)**3+int(c)**3 == a*100+b*10+c and a != 0: x = a*100+b*10+c print(x)cytoplasm
kon***ngjie2008@163.com
fish
353***832@qq.com
参考方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- for x in range(10): for y in range(10): for z in range(10): w = x*100 + y*10 + z if (w>100) and (w == x**3 + y**3 + z**3): print wfish
353***832@qq.com
lcy
776***508@qq.com
参考方法:
lcy
776***508@qq.com
poppy
710***15@qq.com
参考方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- for n in range(100,1000): m = n sumValue = 0 while(m>0): (m,r) = divmod(m, 10) sumValue += r ** 3 if n == sumValue: print(n)poppy
710***15@qq.com
张三
10k***aizhang@gmail.com
列表生成式:
张三
10k***aizhang@gmail.com
阳光不锈
173***979@qq.com
Python3 参考:
#水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身 #生成器函数ppdi,可生成十进制自然数中的所有水仙花数,共有88个 def ppdi(): n=3 while 1: #生成器推导式 l=(i for i in range(10**(n-1),10**n) if sum([int(str(i)[j])**n for j in range(n)])==i) yield l n+=1 #最大的水仙花数有39位 def f(max): for i in ppdi(): for j in i: if j<10**max: print(j) else: break if j>10**max: break #为环保起见,建议7位以内即可 f(5)阳光不锈
173***979@qq.com