You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Python函数中的循环结构数量?适配编程平台限制需求

检测Python代码中循环结构类型的简便方法

针对你给出的这段代码:

def my_func():
    t = 10
    while(t > 0):
        t = t - 1
    for item in range(10):
       pass

要检测是否同时使用了while和for两种循环,最靠谱且简便的方式是用Python标准库中的ast(抽象语法树)模块——比直接字符串匹配精准得多,不会误判注释、字符串里的关键字。

具体实现思路:

  • 把用户代码解析成抽象语法树,跳过无关的文本内容
  • 遍历AST节点,分别标记是否存在For和While类型的节点
  • 一旦检测到两种类型同时存在,直接返回结果,提升效率

示例代码如下:

import ast

def has_both_loop_types(code):
    # 解析代码为抽象语法树
    tree = ast.parse(code)
    has_for = False
    has_while = False
    # 遍历所有AST节点
    for node in ast.walk(tree):
        if isinstance(node, ast.For):
            has_for = True
        elif isinstance(node, ast.While):
            has_while = True
        # 提前终止遍历
        if has_for and has_while:
            return True
    return has_for and has_while

# 测试示例代码
test_code = """
def my_func():
    t = 10
    while(t > 0):
        t = t - 1
    for item in range(10):
       pass
"""

print(has_both_loop_types(test_code))  # 输出True,说明同时存在两种循环

如果你的需求是限制用户只能使用一个循环(不管类型),还可以在这个基础上统计循环总数量:新增一个计数器,每遇到For或While节点就加1,最后判断计数器是否大于1即可。

这个方案适合集成到编程平台的代码校验逻辑里,依赖Python标准库无需额外安装,且识别准确率高。

内容的提问来源于stack exchange,提问作者soumitra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:39:53