2017-03-29 62 views
0

我正在構建一個使用我已經定義的另一個函數的函數。第一個完成的功能是get_value_at_location,它告訴我的價值在該位置(一個元組)列表中Python-如何在函數調用上執行操作?

下面是這個函數的代碼(拼圖):我想

def get_value_at_location(puzzle,loc): 
    val_loc= puzzle[loc[0]][loc[1]] 
    return val_loc 

現在構建一個名爲is_valid_solution的函數,該函數接受參數謎題(給定列表)op(要執行的操作,例如:+ - *,)期望總數(我們想要的結果)和位置(元組),以確定操作是否產生預期結果,然後返回True或False。

這裏是我有,所以你可以看到我在想什麼代碼:

def is_valid_solution(puzzle, op, expected_total, locations): 
    loc=location 
    if (get_value_at_location(puzzle,loc)) +(op) ==expected_total: 
     return True 
    else: 
     return False 

例如輸入/輸出:

([[1]], '+' ,[(0,0)])→True

([[1,2],[2,1]],' - ',1,[(0,0),(1,0) ])→True

([[1,2],[2,1]],'+',4,[(0,0),(0,1)])→假

顯然這是正確的,我只是不知道做我想做的方法?我怎樣才能實現這個?

回答

1

選項A

而是試圖使用"+""*"爲字符串,使用operator模塊。

> import operator 
> operator.add(2, 3) 
5 
> operator.mul(2, 3) 
6 

您可以通過operator.addop參數,然後在你的函數調用:

def apply(a, b, op): 
    return op(a, b) 

apply(2, 3, operator.add) # 5 

選項B

使用if其字符串名稱來選擇操作:

def apply(a, b, op): 
    if op == '+': 
     return a + b 
    if op == '*': 
     return a * b 

apply(2, 3, '*') # 6 
相關問題