三位数水仙花数的计算与改进

初学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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值