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

posted @ 2022-03-02 15:11  taahira  阅读(312)  评论(0)    收藏  举报