初学Python,记录学习路径
水仙花数指的是其各位数字的3次方和等于该数本身。
三位数的水仙花数
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 += "{},".format(i)#这里的逗号指的是数字之间的分割符
print(s[:-1])#这里采用了s[:-1]方式不输出最后一个逗号。也可以把所有结果放到一个列表中,采用字符串的.join()方法输出结果。
然后我试图用.join()函数去写这段代码
第一次:
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 += "{},".format(i)
print(",".join(s))
然后发现结果是
1,5,3,3,7,0,3,7,1,4,0,7
仔细一想原来是s在被合并后没有了间隔
于是为了人为的创造间隔,我选用了列表
第二次:
s=[]#creat a new list
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.append( "{}".format(i))#这里的我直接在列表后面附上值
print(','.join(str(i) for i in d))
效果还行
我这里用的是嵩天老师的方法,输入的是三位数,那么可不可以直接输入abc计算呢,我觉得应该也是可以的,读者可以自行编写。
部分原创
第一个代码见https://python123.io/student/courses/1521/groups/12964/problems/programmings/6938