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

如何编写仅接收元素由C、B、E、D组成的元组的Python函数

代码存在的问题
  • 合法性校验逻辑错误

你写的'CBED' not in tup是判断字符串"CBED"是否作为独立元素存在于输入元组中,和你要求的「元组内所有元素的每个字符都仅由C、B、E、D四个字母构成」的需求完全不符。虽然你用or的逻辑是对的(长度不合法或元素不合法就抛错),但第二个判断条件的语义完全错误。

  • 缩进语法错误

for ele in tup: 下方的三行代码没有缩进,不符合Python的缩进语法规则,运行时会直接抛出IndentationError。

  • 自定义函数依赖未明确

代码中调用的obter_digito是你自定义的函数,需要确保该函数在obter_pin调用前已经完成定义,否则会抛出NameError。

修正后的参考代码
# 请先完善你自己的obter_digito函数逻辑,此处仅为占位示例
def obter_digito(ele, pos):
    # 替换为你自己的转换逻辑
    return pos % 4

def obter_pin(tup):
    pin = ()
    posicao = 5
    # 修正后的校验逻辑:长度在4-10之间,且所有元素的所有字符都属于允许集合
    if not (4 <= len(tup) <= 10) or any(not all(c in {'C','B','E','D'} for c in ele) for ele in tup):
        raise ValueError('obter pin: argumento invalido')
    for ele in tup:
        dig = obter_digito(ele, posicao)
        posicao = dig
        pin += (dig,)
    return pin

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:39:04