Как вызвать функцию внутри оператора if? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь найти самый длинный палиндром в заданной строке. Я столкнулся со странным поведением оператора if. размещая здесь оба кода, в 1-м коде, когда я пытался отладить, все работает нормально до оператора if, но даже после получения True он не получает доступ к следующему коду внутри.

Тогда как во втором коде я сохранил возвращаемое значение функции палиндрома в логической переменной var, а затем использовал его в операторе if. теперь он обращается к внутреннему коду.

Думаю, мне не хватает чего-то очень важного в python. Подскажите, пожалуйста, почему это происходит?

Код 1:

def palindrom(temp):
    if(temp==temp[::-1]):
        return True
    else:
        return False

word=input("enter the string to check  ")
maxx=""                                    #to store the longest palindrome till now
l=len(word)
for i in range(0,l):
    # if(len(maxx)>l-i):                   ## to check if remaining string is smaller than maxx
    #     print(maxx)
    #     break
    temp=word[i]                           ## testing by adding one letter at a time
    for j in range(i+1,l):
        temp=temp+word[j]
        if(temp is palindrom(temp)  and  len(temp)>len(maxx) ):
            maxx=temp                      ##updating the maxx
print(maxx)

Код 2:

def palindrom(temp):
    if(temp==temp[::-1]):
        return True
    else:
        return False

word=input("enter the string to check  ")
maxx=""
l=len(word)
for i in range(0,l):
    # if(len(maxx)>l-i):  ## to check if remaining string is smaller than maxx
    #     print(maxx)
    #     break
    temp=word[i]
    for j in range(i+1,l):
        temp=temp+word[j]
        bul=palindrom(temp)  ##storting the return value of palindrome() in a boolean.
        if(bul and  len(temp)>len(maxx)):
            maxx=temp
print(maxx)

1 Ответ

0 голосов
/ 28 мая 2020

Просто используйте оператор if с скобками:

if (bul) & (len(temp)>len(maxx)):
    maxx=temp
...