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
- Python-回文检测和布尔操作(and,or,not)
- python布尔类型关于and和or用法说明马克
- Python 的 and or not 操作符
- Python 布尔操作(and/or,Boolean operator)与位操作(&/|,Bitwise operator)
- Python中的逻辑运算符‘and’、‘or’和‘not’
- Python 布尔操作符
- python中运算符and、or、not
- python 里的not and or
- Python学习之not,and,or篇
- python中运算符and、or、not
- Python的and和or
- Python中的and和or
- python中的and和or
- python and or and-or
- 关于grep命令的or,and,not操作的例子
- Oracle SQL逻辑操作符and、or与not
- 关于grep命令的or,and,not操作的例子
- 关于grep命令的or,and,not操作的例子
- HBase集群配置
- 推荐系统笔记一、基于近邻的推荐系统(基础篇)
- LeetCode 301. Remove Invalid Parentheses(删除无效的括号)
- 推荐系统笔记二、矩阵分解协同过滤
- 推荐系统笔记三、基于近邻的推荐系统进阶篇
- Python-回文检测和布尔操作(and,or,not)
- 散列学习(二)
- 跟黄哥学python序列文章之python方法链(method chaining)
- raft实现
- sklearn画ROC曲线
- eclipse、ddms、android studio连接不上手机问题解决
- 【接口测试】FitNesse中文指南
- 15个顶级Java多线程面试题及回答 / Java程序员面试中的多线程问题
- A failed job change