Хочу передать в функцию переменную из списка через цикл

variables=["a","b","module","fa","fb","c","fc"]
array=[]
for i in variables:
    array.append(round(i, 4))

Пробовал через формат подставлять и переводить во float, но это не даёт результата, так как оно не подставляет значение переменной.(У этих переменных в моей программе есть значения типа float.

Изначально в моей программе это делалось так, но я хочу сократить объём кода и сделать его более читаемым.

array=[]
array.append(round(a,4))
array.append(round(b,4))
array.append(round(module,4))
array.append(round(fa,4))
array.append(round(fb,4))
array.append(round(c,4))
array.append(round(fc,4))

Ответы (3 шт):

Автор решения: Денис Буторин

Вы, по сути, строки добавляете, а не значения переменных.

Попробуйте "посчитать" значения через eval:

for i in variables:
  array.append(eval(i))

Ссылочка: https://docs.python.org/3/library/functions.html#eval

→ Ссылка
Автор решения: CrazyElf

А зачем вам названия переменных, передавайте значения переменных через список, это работает и программа вполне понятная:

variables=[a, b, module, fa, fb , c, fc]
...

А если вам всё-таки зачем-то нужны символьные обозначения переменных, то заведите словарь и работайте через него.

data = {
    'a': 1.23456,
    'b': 3.456789,
}
variables=["a","b"]
array=[]
for i in variables:
    array.append(round(data[i], 4))
→ Ссылка
Автор решения: Алексей Р

Есть функция globals(), которая возвращает словарь со значениями переменных, представляющий текущую глобальную область видимости модуля.

a, b, module, fa, fb, c, fc = 117 / 11, 3 / 18, 12 / 557, 18.9, 1 / 3, 5 / 12, 7 / 6
variables = ["a", "b", "module", "fa", "fb", "c", "fc"]
array = [round(globals()[i], 4) for i in variables]
print(array)
[10.6364, 0.1667, 0.0215, 18.9, 0.3333, 0.4167, 1.1667]
→ Ссылка