Как сделать калькулятор на много чисел в строке? - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно создать калькулятор в Python.В начале у меня есть строка с числами и словом вроде: str = '5 plus 5' Я могу сделать это для 2 чисел, но когда строка выглядит следующим образом: hard_str = '5 plus 10 divide 2' Мне нужно знать, как выполнять вычисления в этом случае.В основном, как Google Voice Assistant делает вычисления, когда я говорю str = '2 minus 20 divide 4'?

def math (текст):

'' 'текст - это строка типа "22 плюс 5"' ''

ADD = ['+', 'plus',]
SUBTRACT = ['-', 'minus',]
MULTIPLY = ['*', 'multiply', 'x']
DIVIDE = ['/', 'divide',]


expression = text


expression = expression.lower().split()

expression_left = expression[0]
expression_middle = expression[1]
expression_right = expression[2]

answer = None

if expression_middle in ADD:
    answer = int(expression_left) + int(expression_right)
if expression_middle in SUBTRACT:
    answer = int(expression_left) - int(expression_right)
if expression_middle in MULTIPLY:
    answer = int(expression_left) * int(expression_right)
if expression_middle in DIVIDE:
    answer = int(expression_left) / float(expression_right)

result = str(answer)
return f'Result of, {text} is {result}'

Работает на 2 номера, что делать если есть 2 + 2 * 50 \ 8 * 3

1 Ответ

0 голосов
/ 01 февраля 2019

К сожалению, я не мог решить эту проблему без eval () ... пока ... вот как я это сделал:

divide = '/' multiply = '*' minus = '-' plus = '+'

def hard_math(*text): result = eval(text[0].replace('плюс', plus).replace('минус', minus).replace('x', multiply).replace('x', multiply).replace('/',divide)) return str(result)

...