亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

感覺‘A’or‘B’得A有點不對

知識點里面說的是‘a=T’or 'a=F',得‘a=T’,可是老師明明說的是?在計算?a or b?時,如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b?!產=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
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

感覺‘A’or‘B’得A有點不對

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號