Вы неправильно используете операцию нарезки для num2
.
Общий синтаксис для нарезки: "a[start:stop:step]"
, где
- start An целое число, указывающее, с какой позиции начинать нарезку. По умолчанию 0
- end Целое число, указывающее, в какой позиции заканчивать нарезку
- step Целое число, определяющее шаг нарезки. По умолчанию 1
Рассмотрим выражение expression = "10/20"
, здесь индекс оператора равен 2
, и когда вы вызываете expression[operator + 1: -1]
, это вернет 2
, а не 20
, как требуется.
Итак, вам нужно позвонить expression[operator + 1:]
, чтобы он вернул 20
. Вот правильный код:
def binop(expression):
"""expression = math expression"""
if expression.find("+") != -1:
operator = expression.find("+")
num1 = int(expression[0:operator])
num2 = int(expression[operator + 1:])
return num1 + num2
elif expression.find("-") != -1:
operator = expression.find("-")
num1 = int(expression[0:operator])
num2 = int(expression[operator + 1:])
return num1 - num2
elif expression.find("/") != -1:
operator = expression.find("/")
num1 = int(expression[0:operator])
num2 = int(expression[operator + 1:])
return num1 / num2
elif expression.find("*") != -1:
operator = expression.find("*")
num1 = int(expression[0:operator])
num2 = int(expression[operator + 1:])
return num1 * num2