【原創】python 比較兩個版本號大小

来源:http://www.cnblogs.com/sunshineapple/archive/2017/04/07/6677987.html
-Advertisement-
Play Games

設計思想: 1.使用正則表達式判斷版本號格式是否正確 2.將字元串用”.”分隔成數組 3.比較數組長度,將長度短的數組用“0”補齊成相等長度數組 4.逐個遍曆數組元素,比較大小 測試用例: 1.版本號為空 2.版本號含非數字 3.版本號長度不一致 4.版本號以點為分隔,逐位比較 ...


# -*- coding: utf-8 -*-
__author__ = 'ypp'

import re

def versionCompare(v1="1.1.1", v2="1.2"):
    v1_check = re.match("\d+(\.\d+){0,2}", v1)
    v2_check = re.match("\d+(\.\d+){0,2}", v2)
    if v1_check is None or v2_check is None or v1_check.group() != v1 or v2_check.group() != v2:
        return "版本號格式不對,正確的應該是x.x.x,只能有3段"
    v1_list = v1.split(".")
    v2_list = v2.split(".")
    v1_len = len(v1_list)
    v2_len = len(v2_list)
    if v1_len > v2_len:
        for i in range(v1_len - v2_len):
            v2_list.append("0")
    elif v2_len > v1_len:
        for i in range(v2_len - v1_len):
            v1_list.append("0")
    else:
        pass
    for i in range(len(v1_list)):
        if int(v1_list[i]) > int(v2_list[i]):
            return "v1大"
        if int(v1_list[i]) < int(v2_list[i]):
            return "v2大"
    return "相等"

# 測試用例
print(versionCompare(v1="", v2="")) 
print(versionCompare(v1="1.0.a", v2="d.0.1"))
print(versionCompare(v1="1.0.1", v2="1.0.1"))
print(versionCompare(v1="1.0.2", v2="1.0.1"))
print(versionCompare(v1="1.0.1", v2="1.0.2"))
print(versionCompare(v1="1.0.11", v2="1.0.2"))

  

設計思想: 
1.使用正則表達式判斷版本號格式是否正確 
2.將字元串用”.”分隔成數組 
3.比較數組長度,將長度短的數組用“0”補齊成相等長度數組 
4.逐個遍曆數組元素,比較大小

測試用例: 
1.版本號為空 
2.版本號含非數字 
3.版本號長度不一致 
4.版本號以點為分隔,逐位比較

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引用 類 api 在winform中的get 方法 我在這裡返回的是List<T> 泛型集合,在後臺獲取時聲明泛型收集即可. api 在winfrom 中的put 方法 api 在winfrom 中的Post 方法 api 在winfrom 中的Delete 方法 如果delete方法 需要傳入mo ...
  • 首先,先簡單介紹一下MD5 MD5的全稱是message-digest algorithm 5(信息-摘要演算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來, 經md2、md ...
  • NET Core 第二部分: centos7 helloworld 站點 在開發機器上(我是在台式機),用Visual Studio 2017 發佈NET Core mvc ,上傳到Centos伺服器,客戶端開發機器可以訪問Helloworl站點 開發環境:windows7+Visual Studi ...
  • MyBatis是一個“半自動化”的ORM框架,ORM即Object/Relation Mapping,對象關係映射,是面向對象編程語言跟關係型資料庫的橋梁,將編程語言對Java實體類的操作映射到資料庫中。 下麵以向資料庫中添加一條圖書信息為例,說明MyBatis的入門操作 MyEclipse中新建個 ...
  • 圖中的綠色的虛線代表實現,綠色實線代表介面之間的繼承,藍色實線代表類之間的繼承。 1)AbstractCollection:提供了大量的Collectin實現 兩個抽象方法: public abstract Iterator<E> iterator(); public abstract int si ...
  • MyBatis攔截器原理探究 http://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.html 【myBatis】Mybatis中的攔截器 http://blog.csdn.net/moshenglv/article/details/526 ...
  • 數組:鍵值對組成的語言結構, 根據維數可分為:一維數組、多維數組 根據Key可分為:索引數組、關聯數組 PHP數組 創立數組的方式: $ar_1 = array();//空數組 $ar_2 = array(0,1,2)//初始化數組,有3個值 $ar_3[0] = 1; $ar_3['name'] ...
  • 題目:將一個正整數分解質因數。例如:輸入90,列印輸出90=2*3*3*5。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...