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应该是一样的——# +连接两个字符串
浙公网安备 33010602011771号