#java #python
#java #python
Вопрос:
Итак, у меня есть 2 разных кода для калькулятора, один немного продвинутый, а другой незавершенный. Я пытаюсь получить помощь, чтобы либо сделать мой готовый калькулятор немного базовым, потому что я не знаю, какой подход предпринять, чтобы снизить его уровень, либо помочь мне закончить мой другой код.
Итак, я попытался заставить калькулятор работать очень просто, но у него было 3 разных ввода, и мне нужно обработать его только с одним входом.
Готовый продукт (своего рода продвинутый)
Незавершенный продукт
Комментарии:
1. У вас есть вопрос?
2. первая версия хороша и проста. Только я бы написал все,
print(...)
потому что это делает код менее читаемым.3. как говорит @furas, к тому времени, когда вы заработаете свой второй, он не будет более сложным, чем первый. Я бы посоветовал вам вычислить
result
переменную в каждомif
, напримерresult = int(exp[0]) - int(exp[1])
. Затем выведите ответ внизу всего однимint
приведение, потому что ваши выражения уже производятint
s .4. я не знаю, что вы хотите сделать во второй версии, но она начинает выглядеть очень похоже на первую версию. Если вам нужно что-то другое (вам нужен вызов), тогда создайте синтаксический анализатор, используя PLY — Python Lex Yacc или ANTLR
Ответ №1:
Не уверен, будет ли это считаться базовым или нет, но рассмотрим функцию eval() . В основном он преобразует входные данные в код python и запускает его, и поскольку пользовательский ввод, вероятно, будет таким же, как код python, вы можете просто запустить ввод.
expr = input("In: ")
print(eval(expr))
Ответ №2:
Я не верю, что вы станете намного менее сложными, чем первая версия.
Единственная корректировка, которую я мог бы предложить, это если вы имеете дело только с вычислениями, в которых используется один математический оператор, вы можете использовать операторы elif, чтобы не утруждать себя проверкой, как только вы нашли правильный. Аналогично тому, как вы начали свою вторую версию.
user_input = input("In:")
if ' ' in user_input:
exp = user_input.split(' ')
print("The result is: {0}".format(int(int(exp[0]) int(exp[1]))))
elif '-' in user_input:
exp = user_input.split('-')
print("The result is: {0}".format(int(int(exp[0]) - int(exp[1]))))
elif '*' in user_input:
exp = user_input.split('*')
print("The result is: {0}".format(int(int(exp[0]) * int(exp[1]))))
elif '/' in user_input:
exp = user_input.split('/')
print("The result is: {0}".format(int(int(exp[0]) / int(exp[1]))))
elif '%' in user_input:
exp = user_input.split('%')
print("The result is: {0}".format(int(int(exp[0]) % int(exp[1]))))