这是我想要完成的:
a = 1235
我的结果 r 应该计算 1/2 + 2/(2*2( + 3/(2*2*2( + 5/(2*2*2*2*2(,所以r 将输出 1.6875
我试过了。。
s = 123
l = list(map(int, str(s))) # converted into list
print(l)
y = [int(x)/(2**s.index(x)) for x in l]
print(y)
但它不起作用。
不要使用
index
(慢,会一遍又一遍地返回第一个索引,这是错误的(,只需使用 enumerate
迭代字符串的索引(加 1(。
然后直接喂给sum
。
顺便说一句,您的代码可以简化为直接在一行中编写:
y = sum(int(x)/(2**i) for i,x in enumerate(str(1235),1))
结果:
1.6875