Python 踩坑記錄

2021-08-07 12:58:59 字數 1035 閱讀 9661

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

notnone

and c is

notnone:

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

"有值為空"

Python 小專案踩坑記錄

原因 影象物件被 了 解決辦法 使用其他物件引用該物件即可 也可用於本專案全域引用,可被任意其他檔案使用如list引用 參考 原因 使用全域性變數進行賦值操作而沒有標明 解決辦法 使用 global x 指明使用的是全域性變數 參考 解決辦法 使用lambda表示式,即 lambda fun x 參...

Java踩坑記錄

1.quartz整合spring框架service層物件注入為null解決方案 jobdetailfactorybean中注入的是乙個cn.itcast.quartz.hellojob實現類的全路徑,底層會反射建立出乙個hellojob的物件,但是該物件不是由spring管理的,所以業務層的物件無法...

SSD踩坑記錄

原github專案位址,借用大神的模型自己訓練ssd 1 error default maxpoolingop only supports nhwc on device type cpu data format nchw 修改為 nhwc 2 關於dataset name 將影象資料轉換為tfrec...