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应该是一样的——# +连接两个字符串