Since it's about translating, a dictionary is a good idea:
translations = {
'divided by': '//',
'multiplied by' : '*',
'times' : '*',
'seven': '7',
}
def evaluate(sentence):
for k, v in translations.items():
sentence = sentence.replace(k, v)
result = eval(sentence)
return result
#examples
sentences = [
"45 divided by 8",
"45 multiplied by 8",
"4 times 2 divided by seven",
"4 times 2 times seven",
]
for s in sentences:
print(s, 'evaluates to ', evaluate(s))
# displays:
# 45 divided by 8 evaluates to 5
# 45 multiplied by 8 evaluates to 360
# 4 times 2 divided by seven evaluates to 1
# 4 times 2 times seven evaluates to 56
Note that people often recommend ast.literal_eval instead of eval, see e.g. Using python's eval() vs. ast.literal_eval()?