哪一行问题最多

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

找出踩了最多条规则的那一行。运行下面这段程序:

import re

def is_snake(name):
    return re.fullmatch(r"[a-z_][a-z0-9_]*", name) is not None

import re

def lint(src, maxlen=45):
    out = []
    for i, l in enumerate(src, 1):
        if l != l.rstrip():
            out.append((i, "E101"))
        if len(l) > maxlen:
            out.append((i, "E102"))
        m = re.match(r"def\s+(\w+)\s*\(", l)
        if m and not is_snake(m.group(1)):
            out.append((i, "E201"))
    for i, l in enumerate(src, 1):
        m = re.match(r"\s*(\w+)\s*=\s*", l)
        if not m:
            continue
        name = m.group(1)
        used = any(re.search(r"\b" + name + r"\b", x)
                   for j, x in enumerate(src, 1)
                   if j != i and not re.match(r"\s*" + name + r"\s*=", x))
        if not used:
            out.append((i, "E301"))
    return sorted(out)

import collections
src = ['import os',
       '',
       'def CalcTotal(items):',
       '    total = 0   ',
       '    for i in items:',
       '        total = total + i   ',
       '    unused = 42',
       '    return total',
       '',
       'def calcAverage(items, weights, extra_config_value):',
       '    return CalcTotal(items) / len(items)']
c = collections.Counter(line for line, _ in lint(src))
top = max(c, key=lambda k: (c[k], -k))
print(str(top) + "/" + str(c[top]))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论