通过的整数的数位位置中的动力分配

问题描述 投票:1回答:1

这是我想要完成的任务:

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)

但它不工作。

python loops floating-point exponent
1个回答
2
投票

不要使用index(慢,会一遍又一遍返回第一个索引,这是错误的),只是重复使用enumerate字符串的指数(加上1)。

然后直接进料到sum

BTW您的代码可以简化为直接在一行中这样写:

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

结果:

1.6875
© www.soinside.com 2019 - 2024. All rights reserved.