2015-12-06 2 views
0

У меня есть этот код:!оператор импорта в функции

if sudo_prob[a][b][0] in column[x] and x!=a: 
    column[x].remove(sudo_prob[a][b][0]) 
if sudo_prob[a][b][0] in line[x] and x!=b: 
    line[x].remove(sudo_prob[a][b][0]) 
if sudo_prob[a][b][0] in square[x] and (x%3!=b%3) and (a%3!=0+(x>2)+(x>5)): 
    square[x].remove(sudo_prob[a][b][0]) 

Это та же операция в стороне от переменной call'd (строка/столбец/квадрат) и условие (х = а/х = b ...)

Есть ли способ вызвать функцию, которая принимает в качестве параметров переменную & условие?

+1

Да. Ты это пробовал? Примечание: http://refactoring.com/catalog/extractVariable.html –

ответ

0

Извлечение общих частей в функцию:

def conditional_remove(list, element, condition): 
    if condition and element in list: 
     list.remove(element) 

conditional_remove(column[x], sudo_prob[a][b][0], x != a) 
conditional_remove(line[x], sudo_prob[a][b][0], x != b) 
conditional_remove(square[x], sudo_prob[a][b][0], (x%3!=b%3) and (a%3!=0+(x>2)+(x>5))) 
Смежные вопросы