Python的简单应用

编写函数is_narcissistic,该函数接收一个整数,判断其是否为水仙花数。如果是水仙花数,返回True,反之返回False。函数编写完成后,调用该函数打印所有的水仙花数。

def is_narcissistic(n):
    a=n%10
    b=n//10%10
    c=n//100
    return a**3+b**3+c**3==n
for i in range(100,1000):
    if is_narcissistic(i):
        print(i,end=' ')

水仙花数一般指三位数的:
方法一:

def is_narcissistic(n):
    if not 99<n<1000:
        return False
    a,b,c = n//100, (n//10)%10, n%10
    return n==a**3+b**3+c**3

for i in range(100,1000):
    if is_narcissistic(i):
        print(i)

方法二: 可以算出任意位数的水仙花数:

def is_narcissistic(n):
    i, j = 0, n
    while j:
        k = j%10
        i += k**len(str(n))
        j //= 10
    return n==i+j

for i in range(100,100000):
    if is_narcissistic(i):
        print(i)

三位水仙花数是立方和,四位的是四次方和,以此类推
方法二的100~100000间的水仙花数有:
153
370
371
407
1634
8208
9474
54748
92727
93084

验证: 9^5+3^5+8^5+4^5==93084