python 请用您熟悉的编程语言,比较两个软件版本号大小的函数,如 1.2.3a 和 1.2.4b 比较,后者版本号更大,请考虑各种情况,不可以使用系统提供的比较函数。

请用您熟悉的编程语言,编程实现一个比较任意两个软件版本号大小的函数,如 1.2.3a 和 1.2.4b 比较,后者版本号更大,请考虑各种情况,不可以使用系统提供的比较函数。

def version_cmpare(v1, v2):
    if v1 == v2:
        return 0
    a_list = v1.split('.')
    b_list = v2.split('.')
    str_length = len(b_list) if len(a_list)>len(b_list) else len(a_list)
    for i in range(str_length):
        temp1 = a_list[i]
        temp2 = b_list[i]
        if confirm_num(temp1) and confirm_num(temp2):
            ret = int(temp1) - int(temp2)
            if ret == 0:
                continue
            return 1 if ret > 0 else -1
        else:
            temp1_list = temp1.split()
            temp2_list = temp2.split()
            temp_length = len(temp2_list) if len(temp1_list) > len(temp2_list) else len(temp1_list)
            for j in range(temp_length):
                t1 = temp1_list[j]
                t2 = temp2_list[j]

                # 纯数字比较
                if confirm_num(t1) and confirm_num(t2):
                    ret2 = int(t1) - int(t2)
                    if ret2 == 0:
                        continue
                    return 1 if ret2 > 0 else -1

                # 纯字母比较
                elif (not confirm_num(t1)) and (not confirm_num(t2)):
                    if t1 == t2:
                        continue
                    return 1 if t1 > t2 else -1

                # 数字字母混合比较 默认数字小于字母
                else:
                    return -1 if confirm_num(t1) else 1

    # 遍历长度相等的元素也一样完成后情况下执行的操作
    if len(a_list) != len(b_list):
        return 1 if len(a_list) > len(b_list) else -1
    return 0
def confirm_num(elem):
	return elem.isdigit()

print(version_cmpare(v1=“1.2.3x”, v2=“1.2.33b”))
print(version_cmpare(v1=“1.0.0”, v2=“1.0.1”))
print(version_cmpare(v1=" 1.0.2", v2=“1.0.1”))
print(version_cmpare(v1=“1.0.1”, v2=“1.0.1”))
print(version_cmpare(v1=“1.0.11”, v2=“1.0.22”))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章