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

Python如何校验列表元素长度不足时抛ValueError,修复现有代码报错

代码修正方案

调整后的可运行代码如下:

def validate(bpp):
    # 校验列表长度是否满足要求
    if len(bpp) < 3:
        raise ValueError("Please have 3 values in the list.")
    
    # 校验操作符合法性
    valid_operators = {"add", "div", "sub", "mul"}
    op = bpp[0]
    if op not in valid_operators:
        raise ValueError("Please use 'add','div','sub' or 'mul' along with two numbers.")
    
    # 校验操作数类型
    if not isinstance(bpp[1], int):
        raise ValueError("Please put an integer for your first operand.")
    if not isinstance(bpp[2], int):
        raise ValueError("Please put an integer for your second operand.")
    
    # 执行对应运算并返回结果
    num1, num2 = bpp[1], bpp[2]
    if op == "add":
        return num1 + num2
    elif op == "sub":
        return num1 - num2
    elif op == "mul":
        return num1 * num2
    elif op == "div":
        if num2 == 0:
            raise ValueError("Cannot divide by zero.")
        # 如需返回整数除法结果可替换为 return num1 // num2
        return num1 / num2

主要修改点说明:

  • 删除了错误的for循环逻辑:获取列表元素个数需要用len(bpp),直接判断长度小于3就抛出异常即可,你之前报错的原因是把列表对象直接传入了要求整数参数的range()方法。
  • 修正了操作符校验逻辑:原代码的4个并列if判断逻辑存在错误,比如传入add时,第一个if判断通过后,第二个if会判定add != div直接抛出异常,改为判断操作符不在合法集合内再抛错即可。
  • 修正了类型校验逻辑:type(int)本身是类型对象,判断变量是否为整数应该使用isinstance(待校验变量, int)。
  • 新增运算返回逻辑:根据操作符对应执行加减乘除计算,直接返回结果,调用validate(["add", 10, 10])就会返回预期的20。

内容的提问来源于stack exchange,提问作者Brady L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:02