hugga
@hugga

Как оптимизировать мой код в Python?

Как в цикле заменить одну цифру таким образом, чтобы тип "строка" стал типом "переменная" и выводил содержание переменной?
По компиляции в конце поста поймете о чём я.
Ну и совместный вопрос, как оптимизировать бороду которую вы наблюдаете?))
list_iter = []
O = 1
b = 2.7
rou = 3
c0 = round(O/(b-1), rou)
c1 = round((O + c0) / (b-1), rou)
c2 = round((O + c0 + c1) / (b-1), rou)
c3 = round((O + c0 + c1 + c2) / (b-1), rou)
c4 = round((O + c0 + c1 + c2 + c3) / (b-1), rou)
c5 = round((O + c0 + c1 + c2 + c3 + c4) / (b-1), rou)
c6 = round((O + c0 + c1 + c2 + c3 + c4 + c5) / (b-1), rou)
c7 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6) / (b-1), rou)
c8 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6 + c7) / (b-1), rou)
c9 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8) / (b-1), rou)
c10 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9) / (b-1), rou)
c11 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 + c10) / (b-1), rou)
c12 = round((O + c0 + c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 + c10 + c11) / (b-1), rou)

x = 0
while x != 12:
    list_iter.append('c%s' % x)
    x += 1

print(c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
print(list_iter)


>>> Вывод:
0.588 0.934 1.484 2.356 3.742 5.944 9.44 14.993 23.812 37.819 60.066 95.399 151.516
['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'c10', 'c11']
  • Вопрос задан
  • 226 просмотров
Решения вопроса 3
@iSergios
Python-разработчик
list_iter = []
o = 1  # 'O' - одно из самых неудачных наименований переменной (в прочем, 'o' не многим лучше :))
b = 2.7
rou = 3
for c in range(13):
	list_iter.append(round((o+sum(list_iter))/(b-1), rou))
>>> list_iter
[0.588, 0.934, 1.484, 2.356, 3.742, 5.944, 9.44, 14.993, 23.812, 37.819, 60.066, 95.399, 151.516]
Ответ написан
AnnTHony
@AnnTHony
Интроверт
result = [0] * 13
initial_value = 1
b = 2.7
divider = b - 1
round_value = 3

for i in range(13):
	if result:
		initial_value += result[i - 1]
	result[i] = round(initial_value / divider, round_value)

for i in range(13):
	print('c{0:d} = {1:.3f}'.format(i, result[i]))
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
>>> count = 13
>>> list_iter = []
>>> O = 1
>>> b = 2.7
>>> rou = 3
>>> for im in xrange(count):
...    list_iter.append(round((O+sum(list_iter))/(b-1), rou))
... 
>>> list_iter
[0.588, 0.934, 1.484, 2.356, 3.742, 5.944, 9.44, 14.993, 23.812, 37.819, 60.066, 95.399, 151.516]


Чтоы преобразовать в переменные - можно использовать такой костыль:
>>> for im in xrange(count):
...     exec 'c'+str(im)+'='+str(list_iter[im])
... 
>>> c3
2.356
>>> c0
0.588
>>> c12
151.516
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы