Python-回文检测和布尔操作(and,or,not)

来源:互联网 发布:音乐剪切合并软件 mac 编辑:程序博客网 时间:2024/05/18 05:43

下面是两个函数都是做回文检测的,isP()是精简版,isP1()是解析版.

def isP(s):    if len(s)<=1:return True    else:return s[0]==s[-1] and isP(s[1:-1])def isP1(s,indent):    print indent,"A",s    if len(s)<=1:        print indent,'B'        return True    else:        ans=s[0]==s[-1] and isP1((s[1:-1]),indent+indent)        print indent,'C',ans        return ansisP1("asdffssa","    ")

一些思考:
1.else:return s[0]==s[-1] and isP(s[1:-1])看起来挺吓人的,在我打开百度准备搜一下的瞬间想明白的,如果说Python里面一切都是对象的话,那么return的内容s[0]==s[-1] and isP(s[1:-1])可以被看成一个对象,也就是一个布尔操作,变简单了不是吗.
2.关于s[0]==s[-1] and isP(s[1:-1])这个布尔操作有一些细节,也就是为什么当检查到第一组不同的字母时停止继续递归的原因.

http://python.usyiyi.cn/python_278/library/stdtypes.html#boolean-operations-and-or-not

5.2. 布尔操作 — and, or, not
这些是布尔操作,按升序优先排序:

操作 | 结果 | 注
x or y | 如果x为假,那么返回y,否则返回x | (1)
x and y | 如果x为假,那么返回x,否则返回y | (2)
not x | 如果x为假,那么返回True,否则返回False | (3)

注:
(1) 这是一个短路操作符,因此只有第一个参数为False时才计算第二个参数。
(2)这是一个短路操作符,因此只有第一个参数为True时才计算第二个参数。
(3)not比非布尔操作符的优先级低,因此not a == b解释为not (a == b),a == not b是一个语法错误。

还有一些别的文章辅助理解:
http://www.cnblogs.com/BeginMan/p/3197123.html

0 0
原创粉丝点击