python比較版本號 Python中的版本號比較

2021-10-11 00:05:48 字數 1381 閱讀 7207

我想寫乙個類似cmp的函式,它比較兩個版本號,並根據它們的比較值返回-1,0或1.

>如果版本a早於版本b,則返回-1

>如果版本a和b等效,則返回0

>如果版本a比版本b更新,則返回1

應該將每個子部分解釋為數字,因此1.10> 1. 1.1.

期望的功能輸出是

mycmp('1.0', '1') == 0

mycmp('1.0.0', '1') == 0

mycmp('1', '1.0.0.1') == -1

mycmp('12.10', '11.0.0.0.0') == 1

這是我的實施,開放改進:

def mycmp(version1, version2):

parts1 = [int(x) for x in version1.split('.')]

parts2 = [int(x) for x in version2.split('.')]

# fill up the shorter version with zeros ...

lendiff = len(parts1) - len(parts2)

if lendiff > 0:

parts2.extend([0] * lendiff)

elif lendiff < 0:

parts1.extend([0] * (-lendiff))

for i, p in enumerate(parts1):

ret = cmp(p, parts2[i])

if ret: return ret

return 0

我正在使用python 2.4.5順便說一句. (安裝在我工作的地方……).

這是乙個可以使用的小型「測試套件」

assert mycmp('1', '2') == -1

assert mycmp('2', '1') == 1

assert mycmp('1', '1') == 0

assert mycmp('1.0', '1') == 0

assert mycmp('1', '1.000') == 0

assert mycmp('12.01', '12.1') == 0

assert mycmp('13.0.1', '13.00.02') == -1

assert mycmp('1.1.1.1', '1.1.1.1') == 0

assert mycmp('1.1.1.2', '1.1.1.1') == 1

assert mycmp('1.1.3', '1.1.3.000') == 0

assert mycmp('3.1.1.0', '3.1.2.10') == -1

assert mycmp('1.1', '1.10') == -1

比較版本號

題目 比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 ...

比較版本號

比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 也不是...

比較版本號

比較版本號 比較兩個版本號 version1 和 version2。如果 version1 version2 返回1,如果 version1 version2 返回 1,除此之外返回0。你可以假設版本字串非空,並且只包含數字和.字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5不是 兩個半 ...