除以整数位的幂

时间:2019-02-11 06:00:35

标签: python loops floating-point exponent

这就是我要完成的事情:

a = 1235

我的结果r应该计算为1/2 + 2 /(2 * 2)+ 3 /(2 * 2 * 2)+ 5 /(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)

但不起作用。

1 个答案:

答案 0 :(得分:2)

不要使用index(速度很慢,并且会一遍又一遍地返回第一个索引,这是错误的),只需使用enumerate对字符串的索引(加1)进行迭代。

然后直接输入sum

顺便说一句,您的代码可以简化为直接在一行中编写代码:

y  = sum(int(x)/(2**i) for i,x in enumerate(str(1235),1))

结果:

1.6875