这串 token 有几个运算符

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

按模型,count_ops(["1", "+", "2", "-", "3"]) 交回几?

贯穿本节的小语言(判题机没 gcc,这是它的确定模型,见 spine.py):每行一条语句——set 名 = 表达式print 表达式;表达式是空格分隔的 token,从左到右求值(无优先级),数字 token 当值、名字到环境里查(没有当 0)。

def kind(tok):
    """判 token 属于哪类:数字、运算符、关键字、否则当变量名。"""
    if tok.lstrip("-").isdigit():
        return "num"
    if tok in ("+", "-", "*"):
        return "op"
    if tok in ("set", "print", "="):
        return "kw"
    return "name"


def tokenize(line):
    """一行源码切成 token(按空格切)。"""
    return line.split()


def count_ops(tokens):
    """这串 token 里有几个运算符。"""
    return sum(1 for t in tokens if t in ("+", "-", "*"))


def n_tokens(line):
    """这行切出几个 token。"""
    return len(tokenize(line))

print(count_ops(["1", "+", "2", "-", "3"]))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论