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

为何我的Codewars挑战Python解决方案出现执行超时?

Python代码效率问题分析与优化

原代码的问题

原代码存在无限循环:

def check(seq, elem):
    i=0
    b=0
    while i<len(seq):
        while (b==0):
            if (seq[i]==elem):
                b=1
                i+=1
                return(True)
        else:
            return(False)

内层while (b==0)循环中,当seq[i] != elem时,b始终为0,且i不会递增,导致内层循环永远无法退出,直接触发无限循环。

修改后代码的问题

修改后的代码依然存在无限循环,导致执行超时:

def check(seq, elem):
    i=0
    b=0
    while (b==0) and (i<len(seq)):
        if (seq[i]==elem):
            b=1
            i+=1
            return(True)
    else:
        return(False)

循环体中只有找到目标元素时才会执行i+=1,如果当前seq[i] != elem,i的值始终不变,循环条件永远成立,陷入无限循环,最终导致超时。

正确的解决方案

最简高效写法

Python内置了序列成员判断的语法,直接使用elem in seq即可,这是底层优化过的实现,效率最高:

def check(seq, elem):
    return elem in seq

手动循环实现(适合练习循环逻辑)

如果要手动实现循环,必须保证每次循环都让i递增,不管是否找到元素:

def check(seq, elem):
    i = 0
    while i < len(seq):
        if seq[i] == elem:
            return True
        i += 1  # 无论是否匹配,都要递增索引
    return False

这样遍历完所有元素后,若未找到目标则返回False,不会出现循环卡死的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:22:48