⚠️ 循环转了几圈
数一数解释器那个循环一共转了几圈,和指令条数放在一起:
PROG = [
("SET", "x", 3),
("ADD", "x", 4),
("MUL", "x", 3),
("PRINT", "x", None),
]
def run(prog):
env, out = {}, []
for op, name, arg in prog:
if op == "SET":
env[name] = arg
elif op == "ADD":
env[name] = env[name] + arg
elif op == "MUL":
env[name] = env[name] * arg
elif op == "PRINT":
out.append(env[name])
return out
def run_counted(prog):
env, steps = {}, 0
for op, name, arg in prog:
steps += 1
if op == "SET":
env[name] = arg
elif op == "ADD":
env[name] = env[name] + arg
elif op == "MUL":
env[name] = env[name] * arg
return steps
print(str(run_counted(PROG)) + "/" + str(len(PROG)))
全部评论