Python 踩坑記錄

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 "有值爲空"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章