为了账号安全,请及时绑定邮箱和手机立即绑定

a = True print a and 'a=T' or 'a=F'

a = True
print a and 'a=T' or 'a=F'

计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?

因为Python把0空字符串''None看成 False,其他数值和非空字符串都看成 True,所以:

True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'

不明白为什么最终计算结果是'a=T'?


正在回答

5 回答

a=True

print a and 'a=T' or 'a=F'

and : x and y,当x为false时,返回false;否则,返回y。所以 True and 'a=T' 返回 'a=T'

or: x or y,当x为true时,返回x;否则,返回y。所以 'a=T' or 'a=F' 返回 'a=T'

1 回复 有任何疑惑可以回复我~
#1

qq_Cx_12 提问者

非常感谢!
2018-08-10 回复 有任何疑惑可以回复我~

短路计算,and 和 or 返回的都是决定整个语句最终结果的一方

0 回复 有任何疑惑可以回复我~

看print的三个表达式

a为Ture, 'a=T'为True, 'a=F'为True, and连接的两个表达式,左边为True时,右边还会走,or连接的两个表达式,

左边为True时,右边不会走。

a为True,所以走了'a=F'

a and 'a=T'的结果为Ture,所以'a=F'不会走。


1 回复 有任何疑惑可以回复我~

and 判断左右两边的运算结果,都为真成立

or在执行时左边为真就不再继续执行所以为‘a=T’,如果左边不为真则继续判断右边

0 回复 有任何疑惑可以回复我~

三元运算  这样写的话  代码其实是这样运行的:

判断 a 是true或是false   若果判断成功  输出‘a=T’ 否则输出 'a=F'

和下面的这种写法效果相同,

a=True
if a:
    print 'a=T'
else:
    print 'a=F'


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

a = True print a and 'a=T' or 'a=F'

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信