您的位置:首页 > 编程语言 > Python开发

python基础编程_10_生成水仙花数

2018-03-26 09:13 363 查看
什么是水仙花数?水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。Python练习题问题如下:要求:打印输出所有的"水仙花数"。Python解题思路分析:
可以利用for循环控制流语句来完成操作。从100-9999个数,每个数分解出个位、十位和百位。
方案一:from numpy import *
for n in range(100,10000):
#将整形数转换成字符串
numberStr=str(n)
length=len(numberStr)
a=zeros(length)
#将字符串中的每一位数取出,赋值给数组
for i in range(length):
a[i]=int(numberStr[i])
#数组a**value相当于对数组中的每个数**value操作
if n==sum(a**length):
print (n)
153
370
371
407
1634
8208
9474
方案二:from numpy import *
for n in range(100,10000):
#将整形数转换成字符串
numberStr=str(n)
length=len(numberStr)
if length==3:
#/100得到的结果为高位,%100得到的结果为低位
baiwei=int(n/100)
#此处加入int()函数,保证333/100=3而不是3.33
'''在python中33%10=3,333/100=3.33'''
shiwei=int(n/10)%10
gewei=n%10

if n == baiwei ** 3 + shiwei ** 3 + gewei ** 3:
print(n)
elif length==4:
qianwei=int(n/1000)
baiwei=int(n/100)%10
shiwei=int(n%100/10)
gewei=n%10
if n == qianwei ** 4+ baiwei ** 4 + shiwei ** 4+gewei**4:
print(n)
153 370 371 407 1634 8208 9474
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: