簡體   English   中英

Python:使用列表中的運算符的數學運算

[英]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]

所以在這里你指定了一個函數,它接受參數xy並計算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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM