Хочу передать в функцию переменную из списка через цикл
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
А зачем вам названия переменных, передавайте значения переменных через список, это работает и программа вполне понятная:
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]