2017-03-29 29 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 
相关问题