菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python 练习实例13

Python 100例 Python 100例

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python# -*- coding: UTF-8 -*-forninrange(100,1000): i = n / 100j = n / 10 % 10k = n % 10ifn == i ** 3 + j ** 3 + k ** 3: printn

实例(Python 3.0+)

forninrange(100,1000): i = n // 100j = n // 10 % 10k = n % 10ifn == i*i*i + j*j*j + k*k*k: print(n)

以上实例输出结果为:

153
370
371
407

Python 100例 Python 100例

AI 思考中...

10 篇笔记 写笔记

  1. #0

    苹果pai

    646***[email protected]

    23

    将三位数看成由三个数组成,并判断其各位数字立方和是否等于该数本身:

    #!/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***[email protected]

    9年前 (2017年04月13日)
  2. #0

    等一个人

    252***[email protected]

    65

    参考方案:

    #!/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***[email protected]

    9年前 (2017年04月25日)
  3. #0

    程程

    sun***[email protected]

    2

    水仙花数及其个数

    #!/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***[email protected]

    9年前 (2017年05月04日)
  4. #0

    Kunz

    sun***[email protected]

    8

    兼容 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***[email protected]

    9年前 (2017年05月09日)
  5. #0

    cytoplasm

    kon***[email protected]

    1

    参考方法:

    #!/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***[email protected]

    9年前 (2017年05月14日)
  6. #0

    fish

    353***[email protected]

    2

    参考方法:

    #!/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 w
    

    fish

    353***[email protected]

    9年前 (2017年06月25日)
  7. #0

    lcy

    776***[email protected]

    1

    参考方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    #列表解析法
    l=[x**3+y**3+z**3 for x in range(0,10) for y in range(0,10) for z in range(0,10) if (str(x)+str(y)+str(z))==str(x**3+y**3+z**3)]
    print(l)

    lcy

    776***[email protected]

    9年前 (2017年06月29日)
  8. #0

    poppy

    710***[email protected]

    1

    参考方法:

    #!/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***[email protected]

    9年前 (2017年07月07日)
  9. #0

    张三

    10k***[email protected]

    1

    列表生成式:

    #coding:UTF-8
    print [i for i in range(100,1000) if (i/100)**3+((i-i/100*100)/10)**3+(i%10)**3 == i]

    张三

    10k***[email protected]

    9年前 (2017年09月25日)
  10. #0

    阳光不锈

    173***[email protected]

    3

    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***[email protected]

    9年前 (2018年02月12日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /