Python判斷軟件版本號的大小


背景:
有時候想下載個軟件,看到列表里有一大堆的版本,一眼想識別哪個版本是最新的還真有些難度,例如:
1.11.2 和1.4.2 這種,乍一看好像后者的版本更新一點的樣子,實際上要按.分割后每個部分各自比較,實在太麻煩了
看看用代碼實現起來會不會容易一點

思路:
1、先將不同長度的版本號通過補0變成相同的長度,方便比較(否則無法區別3.9.1和3.9)
2、對每個.分割的部分轉為整數進行比較大小,任意部分有大小區別則不再比較
3、如果比較到最后一部分都相等,那說明是同個版本,如(3.9和3.9.0)
4、為了返回版本原值,所以另外加了個變量保存補0后的版本

# coding:utf-8

def compare(a: str, b: str):
    '''比較兩個版本的大小,需要按.分割后比較各個部分的大小'''
    lena = len(a.split('.'))  # 獲取版本字符串的組成部分
    lenb = len(b.split('.'))
    a2 = a + '.0' * (lenb-lena)  # b比a長的時候補全a
    b2 = b + '.0' * (lena-lenb)
    print(a2, b2)
    for i in range(max(lena, lenb)):  # 對每個部分進行比較,需要轉化為整數進行比較
        if int(a2.split('.')[i]) > int(b2.split('.')[i]):
            return a
        elif int(a2.split('.')[i]) < int(b2.split('.')[i]):
            return b
        else:						# 比較到最后都相等,則返回第一個版本
            if i == max(lena, lenb)-1:
                return a

versions = ['1.01', '2.3', '2.12', '2.1.0', '0.0.01.3', '2.154']
last = '0.0'   # 給個初始值進行比較
for version in versions:
    last = compare(last, version)  # 每次將較大的版本取出,留給下次比較
print(last)

PS:lenb < lena時, ‘.0’乘以負數,結果是空字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM