def jump_to(self, position_piece, target_position):
middle_position = Position((position_piece.line + target_position.line)/2,
(position_piece.column + target_position.column)/2)
if position_piece not in self.cases:
return False
elif (target_position not in position_piece.four_position_jumps() and
target_position in self.cases):
return False
elif target_position in self.cases:
if self.cases[position_piece] == self.cases[middle_position]:
return False
return True
我已经创建了上面的函数,但是我意识到我返回了3次False。对我来说,实现起来似乎很糟糕。这是一个很好的实现吗?如何修改该代码以使其更具pythonic功能?我想知道如何一次返回False而不是三个。
一个简短的答案:
def jump_to(self, position_piece, target_position):
middle_position = Position((position_piece.line + target_position.line)/2,
(position_piece.column + target_position.column)/2)
if position_piece not in self.cases or ((target_position not in position_piece.four_position_jumps() or self.cases[position_piece] == self.cases[middle_position])and target_position in self.cases):
return False
return True
这可能是另一种方式,尽管我不会说它更具可读性或直观性,并且我还以示例的更简化形式编写了代码:
cases = ['a', 'b', 'c', 'e']
position_piece = 'w'
target_position = 'r'
def jump_to():
check1 = not any([True if each_case == position_piece else False for each_case in cases])
check2 = any([True if each_case == target_position else False for each_case in cases])
return False if check1 or check2 else True
print(checker())
注意:因为您正在检查target_position in self.cases:
,所以and
比较器意味着只检查它就足以解决问题。