導讀:在Python的官方文檔中寫到:Python中的布爾值是作為整數的子類實現的。
在Python的官方文檔中寫到:Python中的布爾值是作為整數的子類實現的。
?
在Python語言中布爾類型的True和False與整型的1和0完全一樣。
>>>True==1
True
>>>True==2
False
>>>False==0
True
還可以對布爾類型和整型之間進行類型轉換。布爾類型轉整型,True轉換成1,False轉換成0。整型轉布爾類型,0轉換成False,除了0以外的數字都轉為True。
>>>int(True)
1
>>>int(False)
0
>>>bool(1)
True
>>>bool(2)
True
>>>bool(0)
False
>>>bool(-1)
True
布爾類型也可以做算數運算,在計算的工程中隱式的將布爾類型轉為整型。
>>>True+True
2
>>>5-True
4
>>>False*100
0
>>>1/False
ZeroDivisionError:divisionbyzero
有了以上的基礎知識,我們就可以用Python解一道“誰是兇手”的推理題。題目如下:
日本發生謀殺案,警察通過排查確定殺人兇手必為四個嫌疑犯之一,以下為供詞:
A說:不是我。
B說:是C。
C說:是D。
D說:C在胡說。
三人說真話,一人說假話。誰是兇手?
首先我們列出來四個嫌疑人供詞的關系表達式。
A說:murder!='A'
B說:murder=='C'
C說:murder=='D'
D說:murder!='D’
然后把真正的兇手代入murder變量,4個供詞表達式相加應該等于3。因為題目說“三人說真話,一人說假話”。我們可以用一個循環來測試所有的嫌疑人。
>>>formin['A','B','C','D']:
if(m!='A')+(m=='C')+(m=='D')+(m!='D')==3:
print(f'{m}是兇手')
C是兇手
有了這種通用的枚舉方法,我們就可以把燒腦的“誰是兇手”推理題,轉化成可以讓電腦幫我們解決的簡單問題。