python – 为什么这个回文测试不起作用?
发布时间:2020-12-20 12:42:28 所属栏目:Python 来源:网络整理
导读:回文是一个向前和向后读取相同的字符串.回文的例子包括“lol”,“abba”,“雷达”和“pickle elkci??p”.指示它是否在以下文档字符串中描述的所有情况下都有效:”’如果字符串s是回文,则返回True,否则返回False.”’ def palindrome2(s): n = len(s) pal =
回文是一个向前和向后读取相同的字符串.回文的例子包括“lol”,“abba”,“雷达”和“pickle elkci??p”.指示它是否在以下文档字符串中描述的所有情况下都有效:”’如果字符串s是回文,则返回True,否则返回False.”’
def palindrome2(s): n = len(s) pal = True for i in range(n/2): if s[i] == s[n-i-1]: pal = True else: pal = False return pal 我不明白为什么这个功能不起作用.对我来说,似乎功能正常.显然,布尔值被滥用,但我不明白上面的布尔值是如何使用得不好的.有人可以向我解释一下吗? 解决方法
循环体被编码的方式,pal的值可以重复地在True和False之间变化,这取决于在该特定迭代期间给定的一对字符是否恰好匹配.
最好检查不等式,将布尔变量pal设置为False,然后立即退出循环. 像这样的东西: def palindrome2(s): n = len(s) pal = True for i in range(n/2) if s[i] != s[n-i-1]: # the moment it's false pal = False # set pal and break # drop out of the loop return pal 或者,不使用布尔变量: ... for i in range(n/2) if s[i] != s[n-i-1]: # the moment it's false return False # exit the function by returning False return True # otherwise return True (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |