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

编写countCodons函数报错求助:验证DNA长度为3的倍数并返回密码子数

问题排查与修正

你的代码存在几个关键逻辑错误,导致始终返回False:

错误点分析

  • 不必要的循环遍历:for num in DNA会逐个遍历DNA字符串的每个字符,此时num是单个字符(比如第一个字符是'C'),len(num)永远等于1,1对3取余不等于0,所以直接触发else分支返回False,这是核心问题。
  • 返回值错误:就算逻辑正确,你返回的是len(DNA),但题目要求返回密码子数量(即长度除以3),而非原字符串长度。
  • 循环内提前返回:第一次循环就直接执行return,完全没有遍历的必要,逻辑上完全错误。

修正后的代码

def countCodons(DNA):
    if len(DNA) % 3 == 0:
        return len(DNA) // 3
    else:
        return False

# 验证断言
assert countCodons("CATGGG") == 2
assert countCodons("CAATGGG") == False

代码说明

  • 直接判断整个DNA字符串的长度是否为3的倍数,无需循环遍历每个字符。
  • 符合条件时,返回len(DNA) // 3(整数除法,得到密码子的数量)。
  • 不符合条件时返回False,完全符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:35:14