加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读