Python3版本号比较代码实现

一、版本号比较的困难

不能直接以字符串形式进行比较:对于1.3和1.4直接以字符串进行比较是可以正确得出1.4比1.3大;但如果是1.3和1.14还直接进字符串比较那就是1.3比1.14大那就不对了。

不能直用用数值类型进行比较:如果版本号是1和2那可以自接以整型进行比较,如果是1.3和1.4可以直接以浮点型进行比较;但如果是1.3.1和1.4.1这种形式,那整型和浮点型都不能用了。

 

二、版本号比较实现思路

最关键的点就是每次取一节版本号、转换成整型进行比较;比如1.2.3和1.2.14,先比较1,再比较2,最后再比较3得14。

 

三、实现

3.1 实现效果

 

3.2 实现代码

compare_version----递归实现版本比较

pick_up_latest_version----调用compare_version,打印最终的版本比较结果

# version1----第一个要比较的版本字符串
# version2----第二个要比较的版本字符串
# split_flag----版本分隔符,默认为".",可自定义
# 返回值----相等返回0,version1比version2大返回1,version2比version1大返回2
# 接受的版本字符形式----空/x/x.y/x.y./x.y.z;两个参数可为前边列出的形式的任一种
def compare_version(version1=None,version2=None,split_flag="."):
    # 如果存在有为空的情况则进入
    if (version1 is None) or (version1 == "") or (version2 is None) or (version2 == ""):
        # version1为空且version2不为空,则返回version2大
        if ((version1 is None) or (version1 == "")) and (version2 is not None) and (version2 != ""):
            return 2
        # version2为空且version1不为空,则返回version1大
        if ((version2 is None) or (version2 == "")) and (version1 is not None) and (version1 != ""):
            return 1

    # 如果版本字符串相等,那么直接返回相等,这句会且只会在第一次比较时才可能进入
    # version1和version2都为空时也会进入这里
    if version1 == version2:
        return 0

    # 对版本字符串从左向右查找".",第一个"."之前的字符串即为此次要比较的版本
    # 如1.3.5中的1
    try:
        current_section_version1 = version1[:version1.index(split_flag)]
    except:
        current_section_version1 = version1
    try:
        current_section_version2 = version2[:version2.index(split_flag)]
    except:
        current_section_version2 = version2
    # 对本次要比较的版本字符转成整型进行比较
    if int(current_section_version1) > int(current_section_version2):
        return 1
    elif int(current_section_version1) < int(current_section_version2):
        return 2

    # 如果本次传来版本字符串中已没有版本号分隔符,那说明本次比较的版本号已是最后一位版本号,下次比较值赋空
    # 如本次传来的是5,那下次要比较的只能赋空
    try:
        other_section_version1 = version1[version1.index(split_flag)+1:]
    except:
        other_section_version1 = ""
    try:
        other_section_version2 = version2[version2.index(split_flag) + 1:]
    except:
        other_section_version2 = ""

    # 递归调用比较
    return compare_version(other_section_version1,other_section_version2)

# 此函数调用compare_version(),打印比较结果
def pick_up_latest_version(version1,version2):
    flag = compare_version(version1,version2)
    if flag == 0:
        print(f"version1 = {version1}, version2 = {version2}, the two version is equal")
    elif flag == 1:
        print(f"version1 = {version1}, version2 = {version2}, the latest version is version1 {version1}")
    elif flag == 2:
        print(f"version1 = {version1}, version2 = {version2}, the latest version is version2 {version2}")

 

转载于:https://www.cnblogs.com/lsdb/p/11026890.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以通过使用pandas库来实现Excel版本号比较。首先,我们需要安装pandas库,然后使用以下代码比较两个Excel文件的版本号: ```python import pandas as pd # 读取两个Excel文件 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') # 比较版本号 if df1.equals(df2): print("两个Excel文件的版本号相同") else: print("两个Excel文件的版本号不同") ``` 这段代码首先使用`pd.read_excel()`函数读取两个Excel文件,并将它们存储在DataFrame对象。然后,使用`equals()`函数比较两个DataFrame对象是否相等。如果相等,则说明两个Excel文件的版本号相同;如果不相等,则说明两个Excel文件的版本号不同。 请注意,这段代码比较Excel文件的内容是否相同,而不是比较Excel文件的版本号。如果你想要比较Excel文件的版本号,你需要在Excel文件添加一个特定的列来存储版本号,并在代码进行比较。 #### 引用[.reference_title] - *1* [【Python数据分析】利用Python快速对两个EXCEL表格进行内容比较并找出差异](https://blog.csdn.net/Python_20220416/article/details/124336430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python Excel技术比较](https://blog.csdn.net/u014234300/article/details/51482022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值