assign operator to variable in python?

Usual method of applying mathematics to variables is

a * b

Is it able to calculate and manipulate two operands like this?

a = input('enter a value')
b = input('enter a value') 
op = raw_input('enter a operand')

Then how do i connect op and two variables a and b?
I know I can compare op to +, -, %, $ and then assign and compute….

But can i do something like a op b, how to tell compiler that op is an operator?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can use the operator module and a dictionary:

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.div
}   
op_char = input('enter a operand')
op_func = ops[op_char]
result = op_func(a, b)

Method 2

The operator module http://docs.python.org/library/operator.html exposes functions corresponding to practically all Python operators. You can map operator symbols to those functions to retrieve the proper function, then assign it to your op variable and compute op(a, b).

Method 3

You’ll need to compare the user’s inputted string to your list of operands by hand. There is no analogue of int() here, since operators are keywords in the language and not values.

Once you’ve compared that input string to your list of operands and determined the operator that it corresponds to, you can use the Python standard library’s operator module to calculate the result of applying the operator to your two operands.

Method 4

I know this is a really old thread, but I believe at the time people didn’t know about the eval function (Maybe it came with Python 3). So here’s an updated answer to the question

a = input('enter a value')
b = input('enter a value') 
op = input('enter an operand')
expression = a + op + b # simple string concatenation
result = eval(expression)

If the input is not expected to be valid all the time ast.literal_eval can be used instead. It raises an exception if the input isn’t a valid Python datatype, so the code won’t be executed if it’s not.
Eg. if a, b and op are respectively 5, 10, + then
result is 15

Method 5

You can use the operator module to create a dictionary. From the Python 3 documentation of that module:

“The operator module exports a set of efficient functions
corresponding to the intrinsic operators of Python. For example,
operator.add(x, y) is equivalent to the expression x+y.”

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.truediv
}   
op_char = input('enter a operand')
a = 1
b = 2
result = ops[op_char](a,b)
print(result)


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x