如何存储和使用数学运算符作为python变量
我是python新手,尝试编写下面这样的代码(代码A),因此它与代码B非常相似。我想使用数学运算符的用户输入作为如何存储和使用数学运算符作为python变量,python,Python,我是python新手,尝试编写下面这样的代码(代码A),因此它与代码B非常相似。我想使用数学运算符的用户输入作为do\u what变量。我们如何用python编写这段代码(A),使其像代码B一样工作 代码A num1 = input("Enter a number: ") num2 = input("Enter another number: ") do_what = input("Enter a calculation symbol for calculation you want to pe
do\u what
变量。我们如何用python编写这段代码(A),使其像代码B一样工作
代码A
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
do_what = input("Enter a calculation symbol for calculation you want to perform: ")
result = float(num1) do_what float(num2)
print("result is: " + str(result))
代码B
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
result = int(num1) + int(num2)
print("result is: " + str(result))
您可以使用for common运算符并创建查找字典以将符号映射到函数。如果您不希望在该模块中使用运算符,您可以简单地定义自定义函数并添加它们,然后以相同的方式查找它们:
import operator
operatorlookup = {
'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.truediv
}
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
do_what = input("Enter calculation symbols for calculation you want to perform: ")
op = operatorlookup.get(do_what)
if op is not None:
result = op(float(num1), float(num2))
else:
result = "Unknown operator"
print("result is: " + str(result))
您可能还对了解内置函数感兴趣。对于您的这个特定示例,这将
if
和else
循环减少为单个语句
num1 = input("Enter a number: ")
num2 = input("Enter another number: ")
do_what = input("Enter calculation symbols for calculation you want to perform: ")
result = eval(num1 + do_what + num2)
print("result is: %s" %result)
# Enter a number: 3
# Enter another number: 18
# Enter calculation symbols for calculation you want to perform: *
# result is: 54
编辑
为了使eval
在这种特殊情况下稍微安全,您可以使用类似的方法
if do_what in ['+', '-', '*', '**', '/']:
result = eval(num1 + do_what + num2)
print("result is: %s" %result)
else:
print ("Enter an arithmetic operator")
如果您不关心安全性,您可以使用eval来实现这一点
result = eval(str(num1) + do_what + str(num2))
问题是eval会逐字计算您作为python代码编写的所有内容,因此如果您想让其他人使用它,请不要这样做它必须看起来像中缀运算符吗?不确定中缀的含义,但它可能是变量-+,-,X etcThanks!这是可行的,但是如果用
dou\u what
替换符号就好了。我已经看到过很多次,不推荐使用eval
,但它似乎可以完成任务。有什么缺点需要担心吗?@hqkhan:看看答案。根据一条评论,似乎只要您的输入不直接在eval()
中,您就是fine@hqkhan:还有,它的价值reading@hqkhan:检查我的编辑。这样会稍微安全一点
result = eval(str(num1) + do_what + str(num2))