版本号比大小

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,satisfies(版本, 约束) 判一个版本满不满足「>=1.4,<2」这种约束,split_req 把「httpkit>=1.4」切成名字和约束;REPO 是上面那个小仓库。)

版本号不能按字符串比("1.10" 会小于 "1.9")。用 parse_ver 比一比:

def parse_ver(s):
    return tuple(int(x) for x in s.split("."))


def satisfies(ver, spec):
    v = parse_ver(ver)
    for part in spec.split(","):
        part = part.strip()
        if not part:
            continue
        for op in (">=", "<=", "==", "!=", ">", "<"):
            if part.startswith(op):
                w = parse_ver(part[len(op):])
                break
        ok = {">=": v >= w, "<=": v <= w, "==": v == w, "!=": v != w, ">": v > w, "<": v < w}[op]
        if not ok:
            return False
    return True


def split_req(line):
    i = 0
    while i < len(line) and (line[i].isalnum() or line[i] in "_-"):
        i += 1
    return line[:i], line[i:].replace(" ", "")

print(str("1.10.0" > "1.9.0") + "/" + str(parse_ver("1.10.0") > parse_ver("1.9.0")) + "/" + str(satisfies("1.9.0", ">=1.4,<2")) + "/" + str(satisfies("2.0.0", ">=1.4,<2")))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论