1.浮點數判斷:工作中遇到類似下面邏輯判斷
i = 1
while i!= 1.5:
i = i+0.1
print i
在想象中i應該停止在1.5就不輸出了,但是實際的輸出結果是無限循環。
這是因爲在計算機的邏輯中,浮點數的存儲規則決定了不是所有的浮點數都能準確表示,有些是不準確的,只是無限接近。如0.1轉換爲二進制表示形式爲0.0001100110011.....後面1001無限循環。在內存中根據浮點數位數規定,多餘部分直接被截斷,因此當循環到第5此的時候i的實際值爲1.5000000000000004,表達式i!=1.5爲True,循環永遠執行下去。
解決方法:浮點數的比較最好能夠指明精度,或者使用Decomal來處理。
#限制精度 處理浮點數判斷
i = 1.0
while i- 1.5<0:
i = i+0.1
print i
2.None值判斷
a = [1,2,3]
c = list()
if a is not None and c is not None:
print a,c
輸出結果爲:[1,2,3][]
常量None的特殊性體現在它既不是0、False、空的列表、字典。其數據類型爲NoneType,遵循單例模式,是唯一的,一次不能創建None對象。所有賦值爲None的變量都相等,並且None與任何其他非None的對象比較結果都爲False。
如需判斷某個列表爲空怎麼辦?
解決方案:
a = [1,2,3]
c = list()
if a and c :
print a,c
eles:
print "有值爲空"