python程序控制结构——水仙花数


problem:"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。????????????????????????????????

mine:

s=0 for i in range(1,10):     a=i     for k in range(10):         b=k         for t in range(10):             c=t             s=a*100+b*10+c             if s==pow(a,3)+pow(b,3)+pow(c,3) :                       print(s,end=",")    #i是线性递增的不要任意改变i的值   输出:153,370,371,407, ——解决这个逗号

思路:
可以加一个flag,一开始flag=0,然后在输出的数字前面加上一个判断

如果flag=0,flag=1

如果flag=1,输出一个逗号

这样就能在输出数字前面输出逗号了

改进:

s=0 flag=0 for i in range(1,10):     a=i     for k in range(10):         b=k         for t in range(10):             c=t             s=a*100+b*10+c             if s==pow(a,3)+pow(b,3)+pow(c,3) :                 if flag==0:                      flag=1                 elif flag==1:   #if条件语句判断情况    !!!注意缩进                     print(",",end="")                                 print(s,end="")   参考解答: s = "" for i in range(100, 1000):     t = str(i)     if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :         s += t+"," // s += "{},".format(i) print(s[:-1])   s是字符串,t就是i的字符串形式,然后每次又用eval把字符串中的一个字符转化回int,然后判断等式是否成立

成立就在s的后面加字符,他也是数字+逗号这样加进去的,所以最后输出s时候要s[:-1],这样就不会把最后一个逗号加进去。


s += "{},".format(i) 那这个是怎么理解 字符串+=

s后面接入i的字符串形式

你试试改成s+=t应该是一样的——# +连接两个字符串