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
Для этого вы можете использовать функцию eval
:
print eval(output)
Примечание: eval
оценивает что-либо в строке, даже если его опасно. Кроме того, как вы знаете, ваши операторы заранее, вы можете использовать operators модуль:
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
Используйте operator
модуль:
a, b = 5, 2
for op in (operator.div, operator.mul, operator.add, operator.sub):
print(op(a, b))
'выход = Eval (ул (с плавающей точкой (а)) + оп + ул (с плавающей точкой (б)))' – Jakob
Почему на земле вы бы ожидать, например, '' 5 "+"/"+" 2 "' будет '2.5'? Это всего лишь строка, она не будет волшебной оценкой как расчет (не говоря уже о том, что в Python 2.x этот расчет оценивается как '2'). – jonrsharpe