fan1993423 发表于 2018-3-3 22:52:39

求水仙花数

for a in range(100,1000):
    b=a//100
    c=a%10
    d=(a-b*100-c)/10
if a==b**3+c**3+d**3:
    print('三位数的水仙花数有%d'%a)
else:
    print('三位数的水仙花数不存在')
为什么这个显示水仙花数不存在呢?

soonna 发表于 2018-3-4 00:01:39

看不出来if跟else有没有在while回圈内,假如是有的话,在一开始,a = 100 一路run到if回圈中,会重制为 a =1 所以水仙花数不存在

纳兰小寒 发表于 2018-3-4 00:04:39

for a in range(100,1000):
    b=a//100
    c=a%10
    d=(a-b*100-c)/10
    #print(b,c,d)
    if a==(b**3)+(c**3)+(d**3):
      print('三位数的水仙花数有%d'%a)

fan1993423 发表于 2018-3-4 00:07:48

soonna 发表于 2018-3-4 00:01
看不出来if跟else有没有在while回圈内,假如是有的话,在一开始,a = 100 一路run到if回圈中,会重制为 a = ...

我没有用while

fan1993423 发表于 2018-3-4 00:11:38

纳兰小寒 发表于 2018-3-4 00:04


哎,疏忽了,缩进问题

fan1993423 发表于 2018-3-4 00:21:34

纳兰小寒 发表于 2018-3-4 00:04


def f(n):
    if n==1:
      return 1
    else:
      return n*f(n-1)
    for a in range(100,1000):
      b=a//100
      c=a%10
      d=(a-b*100-c)/10
      if a==f(b)+f(c)+f(d):
            print('%d等于其各位数字的阶乘是'%a)
这个又是什么问题?
   

纳兰小寒 发表于 2018-3-4 10:42:55

本帖最后由 纳兰小寒 于 2018-3-4 10:44 编辑


两个问题:
1、for 起头的缩进不合理
2、b,c,d存在0的情况未处理

def f(n):
    if n == 0:
      return 0
    elif n == 1:
      return 1
    else:
      return n *f(n-1)
for a in range(100,1000):
    b=a//100
    c=a%10
    d=(a-b*100-c)/10
    if a== f(b) + f(c) + f(d):
      print('%d等于其各位数字的阶乘是'%a)

fan1993423 发表于 2018-3-4 23:36:36

纳兰小寒 发表于 2018-3-4 10:42


谢谢,我对什么时候缩进什么时候不缩进用的时候还是很迷茫,你能讲讲该以什么思路确定该不该缩进了,就被比如这个为什么def和for是同一关系了?

纳兰小寒 发表于 2018-3-5 12:47:56

fan1993423 发表于 2018-3-4 23:36
谢谢,我对什么时候缩进什么时候不缩进用的时候还是很迷茫,你能讲讲该以什么思路确定该不该缩进了,就被 ...

我个人的理解好
缩进呢,属于上一行代码的下级执行命令
如:
1、
def():
    for x in a:
      、、、
2、
def():
    、、、
for x in a:
    、、、
def 是方法体,有缩进的都是在方法里面执行,如果没有缩进,就是平级关系。
上面1的话就是只有执行了def方法后才能执行里面的for循环,2的是默认是先执行for循环,def方法体被调用的时候,才执行里面的代码

fan1993423 发表于 2018-3-5 17:11:13

纳兰小寒 发表于 2018-3-5 12:47
我个人的理解好
缩进呢,属于上一行代码的下级执行命令
如:


似乎理解了
页: [1]
查看完整版本: 求水仙花数