求水仙花数
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('三位数的水仙花数不存在')
为什么这个显示水仙花数不存在呢? 看不出来if跟else有没有在while回圈内,假如是有的话,在一开始,a = 100 一路run到if回圈中,会重制为 a =1 所以水仙花数不存在 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)
soonna 发表于 2018-3-4 00:01
看不出来if跟else有没有在while回圈内,假如是有的话,在一开始,a = 100 一路run到if回圈中,会重制为 a = ...
我没有用while 纳兰小寒 发表于 2018-3-4 00:04
哎,疏忽了,缩进问题 纳兰小寒 发表于 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: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) 纳兰小寒 发表于 2018-3-4 10:42
谢谢,我对什么时候缩进什么时候不缩进用的时候还是很迷茫,你能讲讲该以什么思路确定该不该缩进了,就被比如这个为什么def和for是同一关系了? 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方法体被调用的时候,才执行里面的代码 纳兰小寒 发表于 2018-3-5 12:47
我个人的理解好
缩进呢,属于上一行代码的下级执行命令
如:
似乎理解了
页:
[1]