Я пытаюсь создать очень простой калькулятор, который может работать с одним входом, но я немного борюсь

#java #python

#java #python

Вопрос:

Итак, у меня есть 2 разных кода для калькулятора, один немного продвинутый, а другой незавершенный. Я пытаюсь получить помощь, чтобы либо сделать мой готовый калькулятор немного базовым, потому что я не знаю, какой подход предпринять, чтобы снизить его уровень, либо помочь мне закончить мой другой код.

Итак, я попытался заставить калькулятор работать очень просто, но у него было 3 разных ввода, и мне нужно обработать его только с одним входом.

Готовый продукт (своего рода продвинутый)

Незавершенный продукт

Комментарии:

1. У вас есть вопрос?

2. первая версия хороша и проста. Только я бы написал все, print(...) потому что это делает код менее читаемым.

3. как говорит @furas, к тому времени, когда вы заработаете свой второй, он не будет более сложным, чем первый. Я бы посоветовал вам вычислить result переменную в каждом if , например result = int(exp[0]) - int(exp[1]) . Затем выведите ответ внизу всего одним print утверждением. Кроме того, вам не нужно внешнее 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]))))