Деление на степень разрядности позиции целого числа - PullRequest
0 голосов
/ 11 февраля 2019

Вот что я хочу сделать:

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 голосов
/ 11 февраля 2019

Не используйте index (медленно и будет возвращать первый индекс снова и снова, что неверно), просто итерируйте по индексу (плюс 1) строки, используя enumerate.

Затем введите sum.

Кстати, ваш код может быть упрощен, чтобы записать это прямо в одну строку:

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

результат:

1.6875
...