operation = ['/','*','+','-']
a =5
b= 2
for op in operation:
output = a+op+b
print output
Вот результат, который я получаю:
5/2
5*2
5+2
5-2
но я хочу
2.5
10
7
3
Как это сделать?
operation = ['/','*','+','-']
a =5
b= 2
for op in operation:
output = a+op+b
print output
Вот результат, который я получаю:
5/2
5*2
5+2
5-2
но я хочу
2.5
10
7
3
Как это сделать?
Самый простой способ - использовать словарь, который сопоставляет символы с функциями, выполняющими операцию, который можно найти в модуле operator
.
import operator
d = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.div }
operation = d.keys()
a = 5
b = 2
for op in operation:
output = d[op](a, b)
print output
Используйте модуль operator
:
a, b = 5, 2
for op in (operator.div, operator.mul, operator.add, operator.sub):
print(op(a, b))
Для этого вы можете использовать функцию eval
:
print eval(output)
Примечание: eval
оценивает что-либо в строке, даже если это опасно. Кроме того, поскольку вы заранее знаете своих операторов, вы можете использовать модуль операторов:
import operators
operation = [operators.div, operators.mul, operators.add, operators.sub]
a = 5
b = 2
for op in operation:
output = op(a, b)
print output
"5" + "/" + "2"
быть2.5
? Это просто строка, она не будет волшебным образом оценена как вычисление (не говоря уже о том, что в Python 2.x это вычисление оценивается как2
). - person jonrsharpe   schedule 29.10.2014