乙個bug引發的問題 python字串比較大小

2021-10-07 21:42:59 字數 1617 閱讀 1045

一、問題:專案遇到乙個根據當前日期比較授權日期判斷業務是否過期或者正常的需求,很簡單的操作,拿當前日誌跟授權日期比較,授權日期大於等於當前日期:正常;授權日期小於當前日期:過期;但是前段顯示出現了問題。

二、排查:發現兩個日期都是字串並且格式還不一樣(這個粗心哦)

bug修改前後是這樣的:

其實很簡單,但是問題來了,"2020/07/08""2020-11-25"前者日期大於後者,但是判斷確是"2020/07/08"大,兩個字串是怎樣的比較的呢,這點可能好多人特別是初學者都會忽略掉。

三、分析:

理解原理和相關知識:

1.字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的;第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空(null)的ascii碼是0。

2.ord 函式接受乙個字元python ord() 函式:

print

(max([

'1',

'2',

'3']))

# 3print

(max([

'41'

,'1'

,'19'])

)# 41

print

(max([

'11'

,'34'

,'5'])

)# 5

print

(ord

('3'))

# 51

print

(ord

('4'))

# 52

print

(ord

('5'))

# 53

列印:

ps e:\pyproject\demo01> python -u "e:\pyproject\demo01\venv\text01.py"341

5515253

我們看到實際比較的是第乙個字元的ascii碼,誰大誰的字串就大

3.專案**現的問題測試**:

print

(ord

("/"))

print

(ord

("-"))

a ="2020/07/08"

# 2020 /

b ="2020-11-25"

# 2020 -

if a > b:

print

('111'

)elif a < b:

print

('222'

)else

:print

('333'

)

列印:

ps e:\pyproject\demo01> python -u "e:\pyproject\demo01\venv\text01.py"

4745

111

乙個bug引發的感想

上周五,系統出現乙個bug。基本描述如下 b功能上傳乙個到 b路徑 a功能要獲取b路徑的,但是獲取路徑寫錯了,寫成了a路徑。線上突然出現此問題,訂單無法完成。該功能用到的頻率還比較大。無法馬上布版本。首先的想法想通過改資料來解決,但是發現不行。資料是動態的,不能改,也改不過來。其次的想法 新增b路徑...

乙個 passive 引發的bug

不是什麼很難的東西,權且做個記錄。首先說下背景,目前的專案中,需要同時繫結 wheel 和 scroll 事件。繫結 wheel,目的是開發 ctrl wheel 縮放頁面功能,此功能與瀏覽器本身的衝突,因此需要禁用滾輪原生功能,示意 window.addeventlistener wheel fu...

乙個int型別引發的bug

今天我在專案開發中,遭遇了乙個莫名其妙的問題,概括加抽象後形成如下問題 在使用mybatis的xml語句實現dao層介面 listselectbysome param record personexample example 時候,我寫的xml中有這麼一句 if test record.id nul...