2014-10-29 3 views
-1
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 

Что способ сделать это?

+1

'выход = Eval (ул (с плавающей точкой (а)) + оп + ул (с плавающей точкой (б)))' – Jakob

+1

Почему на земле вы бы ожидать, например, '' 5 "+"/"+" 2 "' будет '2.5'? Это всего лишь строка, она не будет волшебной оценкой как расчет (не говоря уже о том, что в Python 2.x этот расчет оценивается как '2'). – jonrsharpe

ответ

1

Самый простой способ заключается в использовании словарь, который отображает символы на функции, которые выполняют операцию, которую можно найти в 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 
0

Для этого вы можете использовать функцию 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 
1

Используйте operator модуль:

a, b = 5, 2 
for op in (operator.div, operator.mul, operator.add, operator.sub): 
    print(op(a, b)) 
Смежные вопросы