我可以在自己的代码中使用Python外壳的计算器吗?

我可以在自己的代码中使用Python外壳的计算器吗?,python,calculator,Python,Calculator,所以我正在做一个小助手,用来阅读网站,转换单位等等。我和我的朋友还在做第一个命令,所以我们试着做一个计算器。它应该能够像pythonshell一样,使用多个操作符和括号来计算。但是似乎没有办法只在shell中输入一个字符串来使用它。我们发现的所有计算器代码都很长,不能处理多个运算符。我们是否需要使用一个长的脚本,还是有更简单的方法?我的搭档写了这样的东西,这似乎是最简单的选择: calc = input() calc2 = calc.split() num1 = float(calc2[0])

所以我正在做一个小助手,用来阅读网站,转换单位等等。我和我的朋友还在做第一个命令,所以我们试着做一个计算器。它应该能够像pythonshell一样,使用多个操作符和括号来计算。但是似乎没有办法只在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+5”的字符串 然后你需要检查有什么操作符,而不是说如果操作符==X(因为这是手动的),那么说


是的,您可以使用
eval
功能轻松完成此操作:

#!/usr/bin/env python3
calc = input()
result = eval(calc)
print(calc + " = " + str(result))
但是,您所谓的“Python shell的计算器”实际上是一个完整的Python解释器,因此就像在Python shell中一样,您可以输入字符串,这些字符串不仅可以计算表达式,还可以删除所有文件:

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

这是否是问题取决于您。

您也可以使用exec

calc = input()
exec('res='+calc)
print(res)

以下是您可以做的:

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

使用订阅
[0]
[-1]
(第一个元素和最后一个元素)
将使用户是否在数字和运算符之间添加空格成为可选。

您最好强调这段代码是危险的,否则初学者会不假思索地随机复制并粘贴到他们的解释器中。我删除了
-r
,这样他们就可以自由复制粘贴代码了将“删除所有文件”片段放入解释器中使用
exec()
over
eval()的好处是什么
exec
只执行语句,不返回任何语句。这就是为什么我在字符串中添加了
'res='
。与此相比,eval只接受一个stament,但返回reuslt,因此在本例中,
res=
是在外部编写的。这也已经讨论过了
if "+" in s:
    print(s[0]+s[-1])
if "-" in s:
    print(s[0]-s[-1])