[英]Python: Mathematical Operations using Operators from a list
假設我有一個包含數學運算符的列表,就像這樣
operators = ['+','-','*','/']
而且我從這里開始隨機操作,就像這樣
op = random.choice(operators)
如果我取兩個數字,比如4和2,我怎樣才能讓Python用數字進行數學運算(名為'op')?
您最好不要將運算符指定為文本 。 只需使用lambda表達式或operator
模塊:
import operator
import random
operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
op = random.choice(operators)
然后,您可以通過使用兩個參數調用它來調用op
,例如:
result = op(2,3)
例如:
>>> import operator
>>> import random
>>>
>>> operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
>>> op = random.choice(operators)
>>> op
<built-in function sub>
>>> op(4,2)
2
所以你可以看到, random
選擇了sub
運算符,所以它從4
減去2
。
如果你想定義一個operator
不支持的函數,你可以使用lambda表達式,如:
operators = [operator.add,lambda x,y:x+2*y]
所以在這里你指定了一個函數,它接受參數x
和y
並計算x+2*y
(當然你可以自己定義一個任意表達式)。
如果您完全確定傳遞給它的內容是安全的,您可以使用eval
:
num1 = 4
num2 = 2
operators = ['+','-','*','/']
op = random.choice(operators)
res = eval(str(num1) + op + str(num2))
請記住, eval
執行代碼而不對其進行任何檢查,因此請小心。 請參閱此使用時,詳細了解該主題ast
做了安全評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.