课程
/后端开发
/Python
/初识Python
a='python' b='' print 'hello',b or a print'hello',b or a and 'world' 为何第一个输出a第二个不是短路而是输出'world'呢。a是字符串类型不是布尔类型吧
2017-06-08
源自:初识Python 3-9
正在回答
字符串类型参与逻辑运算,只要字符串不为'',那么转换为True。
b or a 为真,and 后面要继续判断,直到'world'为真,才能确定整个逻辑表达式为真,所以没毛病啊
我只给你解释第二个print,你这么想,b or a的结果先看b,很显然b为空,所以是false;因此b or a的结果就看a了,如果a是false,那结果就是false,如果a是除了“”、0、none之外的值,那这部分逻辑表达式的值都是a的值,因此b or a的结果很显然是'python';然后再考虑a and 'world',即是考虑'python' and 'world'的值,首先‘python’不是false,那么结果就看‘world’了,所以最后的结果是'world'。
完毕!
举报
学python入门视频教程,让你快速入门并能编写简单的Python程序