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

感觉‘A’or‘B’得A有点不对

知识点里面说的是‘a=T’or 'a=F',得‘a=T’,可是老师明明说的是 在计算 a or b 时,如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。‘a=T‘or和'a=F'难道都不是False吗?

正在回答

4 回答

a = 'python'

print 'hello,', a or 'world'


b = ''

print 'hello,', b or 'world'

看到楼主代码如上, 在编程语言中经常有一种概念,叫做‘最短路径’。

以 Python中的 or 语句来说,如果or前面为True,则直接返回or前面的值,如果or前面为False 则直接返回or后面的值。 

同时Python还有一个特性就是 bool值的隐性转换,虽然int 和str是不能隐形转换的(比如:a=1  b='2'  c=a+b  这样的语句是会报TypeError的)

但是其他数据类型往bool值转换时却支持隐形转化,所以 楼主代码中 a or 'world' ,因为a 被赋值为‘python’。这里就会做隐性的bool转换(就字符串类型而言,空字符转=False, 非空字符串=True),在根据‘最短路径’原则:or前面为True,则直接返回前面的值,所以 a or 'world' 就是 'python' 了。下面关于b的 同理,我就不罗嗦了。 

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

yljhaha 提问者

非常感谢!
2016-04-12 回复 有任何疑惑可以回复我~

我们所做的这题是根据老师所讲的最短路径来求的,但是例题那个是根据这个“Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True”,‘a=T’和‘a=F’都是字符串,值为真,所以a=T

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

这里'a=T'和'a=F'只是一个字符串,但他们不是空字符串,所以是真值,True

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

记住在用到or时,法则是有一真则为真且返回真。老师说的在计算a or b时,a是假此时肯定要看b是真还是假啊,当同为假时就返回后一个值也就是b的值

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

举报

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

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

进入课程

感觉‘A’or‘B’得A有点不对

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号