我正在构建一个使用我已定义的另一个函数的函数。第一个完成的函数是get_value_at_location,它告诉我列表中的位置(一个元组)的值(拼图)。
以下是该功能的代码:
def get_value_at_location(puzzle,loc):
val_loc= puzzle[loc[0]][loc[1]]
return val_loc
现在我正在尝试构建一个名为is_valid_solution的函数,该函数接受参数puzzle(给定列表)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]],'+',1,[(0,0)])→真
([[1,2],[2,1]],' - ',1,[(0,0),(1,0)])→真
([[1,2],[2,1]],'+',4,[(0,0),(0,1)])→False
显然这是正确的,我只是不知道做我想做的方法?我该如何实现呢?
答案 0 :(得分:1)
选项A
不要尝试将"+"
或"*"
用作字符串,而是使用operator
模块。
> import operator
> operator.add(2, 3)
5
> operator.mul(2, 3)
6
您可以将operator.add
作为op
参数传递,然后调用您的函数:
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