Как превратить оператор IF в функцию для многократного вызова с другими строками? - PullRequest
1 голос
/ 18 июня 2019

Мне нужно проверить, существует ли перестановка переменной в другой переменной, и увеличить переменную счетчика, если она не существует.

Мне удалось создать условный оператор с циклами for, чтобы составить список необходимых перестановок и проверить, существует ли переменная в нем.Мне нужно превратить его в функцию, чтобы я мог сделать код чище, так как мне нужна функция для проверки нескольких переменных по нескольким переменным.

charList = ['A', 'B', 'C'] #actual code has other items in this list

name = "JOHN" #actual variable whose permutations are to be made for checking

checkName = "JOAN" #target variable to check against the permutations of above variable

counter = 0

if checkName is name:
    print('found1')
elif checkName in (name[:i] + c + name[i + 1:] for i in range(len(name)) for c in charList):
    print('found2')
elif checkName in ([name[:i] + c + name[i:] for i in range(len(name)) for c in charList]):
    print('found3')
elif checkName in ([name[0:i] + name[i+1] + name[i] + name[i+2:] for i in range(len(name) - 1)]):
    print('found4')
else:
    counter += 1
    print(counter)

Как превратить это в функцию, чтобы, просто используя другую переменную имени, я непосредственно получал вывод либо оператора print, либо приращения в счетчике?

Я только начинающий, поэтому, пожалуйста, помогите мне понять концепцию создания функций на этом примере.Мне приходится иметь дело с двумя переменными, одна из которых проходит по списку, и, будучи нубом, я понятия не имею, что делать.

PS Я только учусь, и приведенный выше код является пробным прогоном, поэтому, пожалуйста,игнорировать функции печати после каждого оператора if.

1 Ответ

2 голосов
/ 18 июня 2019

Вы можете попробовать вот так

charList = ['A', 'B', 'C'] #actual code has other items in this list

name = "JOHN" #actual variable whose permutations are to be made for checking

checkName = "JOAN" #target variable to check against the permutations of above variable

def checkName_fun(checkName, name):
    counter = 0

    if checkName is name:        
        return ('found1')
    elif checkName in (name[:i] + c + name[i + 1:] for i in range(len(name)) for c in charList):        
        return ('found2')
    elif checkName in ([name[:i] + c + name[i:] for i in range(len(name)) for c in charList]):        
        return ('found3')
    elif checkName in ([name[0:i] + name[i+1] + name[i] + name[i+2:] for i in range(len(name) - 1)]):        
        return ('found4')
    else:
        counter += 1
        return (counter)

checkName_fun(checkName, name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...