Могу ли я использовать калькулятор оболочки Python в собственном коде? - PullRequest
0 голосов
/ 17 июня 2020

Итак, я работаю над маленьким помощником, который должен читать веб-сайты, конвертировать единицы измерения и т. Д. c. Я и мой друг все еще работаем над получением первых команд, поэтому мы попытались сделать калькулятор. Предполагается, что он может выполнять вычисления с использованием нескольких операторов и скобок, как это делает Python Shell. Но, похоже, нет способа просто ввести строку в оболочку, чтобы использовать ее для этого. Все найденные нами коды калькуляторов были очень длинными и не могли обрабатывать более одного оператора. Придется ли для этого использовать длинный сценарий или есть более простой способ? Мой партнер написал что-то вроде этого, казалось, самый простой вариант:

calc = input()
calc2 = calc.split()
num1 = float(calc2[0])
num2 = float(calc2[2])
operator = calc2[1]

if operator == "+":
    print(num1 + num2)
elif operator == "-":
    print(num1 - num2)
elif operator == ("*" or "x"):
    print(num1 * num2)
elif operator == ("/" or ":"):
    print(num1 / num2)
elif operator == "//":
    print(num1 // num2)
elif operator == "**":
    print(num1 ** num2)
elif operator == "%":
    print(num1 % num2)
else:
    print("ERROR")

Ответы [ 4 ]

1 голос
/ 17 июня 2020

Вот что вы можете сделать:

if "+" in s:
    print(s[0]+s[-1])
if "-" in s:
    print(s[0]-s[-1])

Использование подписок [0] и [-1] (первый элемент и последний элемент)
будет ли пользователь добавляет пробелы между числами и оператором (необязательно).

1 голос
/ 17 июня 2020

Да, вы можете легко сделать это с помощью функции eval:

#!/usr/bin/env python3
calc = input()
result = eval(calc)
print(calc + " = " + str(result))

Однако то, что вы называете «калькулятором оболочки Python», на самом деле является полным интерпретатором Python , поэтому, как и в оболочке Python, вы можете вводить строки, которые будут не только вычислять выражения, но и, например, удалять все ваши файлы:

import os; os.system("rm -f /")

Будет ли это проблемой, решать вам.

0 голосов
/ 17 июня 2020

Вы также можете использовать exe c

calc = input()
exec('res='+calc)
print(res)
0 голосов
/ 17 июня 2020

, если вы хотите ввести строку типа «4 + 5», вам нужно проверить, какой оператор там, поэтому вместо того, чтобы говорить if operator == X (потому что это руководство), скажите

if "+" in String:
    String = String.split(" + ")
    print(String[0] + String[1])
if "-" in String:
    String = String.split(" - ")
    print(String[0] - String[1])
...