Я пытаюсь решить задачу «Математический интерпретатор» из набора задач 1 Гарвардского курса Python CS50. Вопрос в следующем: в файле с именем интерпретатор.py реализовать программу, которая запрашивает у пользователя арифметическое выражение, а затем вычисляет и выводит результат в виде значения с плавающей запятой, отформатированного до одного десятичного знака. Предположим, что ввод пользователя будет отформатирован как x y z с одним пробелом между x и y и одним пробелом между y и z, где:
x — целое число
y — + , -, * или /
z — целое число
Например, если пользователь вводит 1 + 1, ваша программа должна вывести 2.0. Предположим, что если y равно /, то z не будет равно 0.
Я сделал следующее:
Код: Выделить всё
expression=input("Enter the expression: ").replace(" ","")
if "+" in expression:
operation="+"
elif "-" in expression:
operation="-"
elif "*" in expression:
operation="*"
else:
operation="/"
position=expression.find(operation)
x=int(expression[:position])
y=int(expression[position:])
print(x)
print(operation)
print(y)
here
Я попробовал убрать пробелы, а затем проверить, какую операцию выполняет пользователь. Затем я попытался найти позицию операции, используя ключевое слово find, чтобы разрезать строку на две части, то есть x (которая будет содержать первое целое число) и y (которая будет содержать второе целое число). Тогда я собирался сделать операцию. Но ошибка заключается в том, что когда я ввожу «55 + 6» в качестве входных данных, x назначается как 55, а y назначается как 6. Однако, когда я ввожу «55 - 6» в качестве входных данных, x назначается как 55 и y присваивается как -6. Почему y присвоено значение -6?
Подробнее здесь:
https://stackoverflow.com/questions/751 ... ilar-input