【问题标题】:Dividing by the power of digit position of integer除以整数位数的幂
【发布时间】:2019-02-11 06:00:34
【问题描述】:

这是我想要完成的:

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】:

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

    然后直接喂给sum

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

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

    结果:

    1.6875
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 2017-02-03
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多