python - 如何在“if”语句中调用函数?
问题描述
我试图在给定的字符串中找到最长的回文。我遇到了一个奇怪的if
声明行为。在这里发布这两个代码,当我尝试调试时,在第一个代码中一切正常,直到 if 语句,但即使在 get 之后True
,它也不会访问内部的进一步代码。
而在第二个代码中,我将回文函数的返回值存储在布尔变量中,然后在 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)
解决方案
只需使用带括号的 if 语句:
if (bul) & (len(temp)>len(maxx)):
maxx=temp