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

如何让自定义二次公式函数支持列表输入以批量求解二次方程

批量求解二次方程的函数修正方案

你的代码核心问题出在循环的迭代方式上:for x,y,z in a,b,c会依次把整个a列表、b列表、c列表作为迭代对象,而不是按位置取出每组对应的(a_i, b_i, c_i)。下面是修正后的实现:

a = [1,2,3,4]
b = [2,4,6,8]
c = [3,6,9,12]

def quad_func(a, b, c):
    x1_values = []
    x2_values = []
    # 使用zip打包三个列表,按位置取出每组参数
    for x, y, z in zip(a, b, c):
        discriminant = y**2 - 4*x*z
        # 计算两个根,Python会自动处理判别式为负的复数情况
        x1 = (-y + discriminant**0.5) / (2*x)
        x2 = (-y - discriminant**0.5) / (2*x)
        x1_values.append(x1)
        x2_values.append(x2)
    return x1_values, x2_values

# 调用测试
x1s, x2s = quad_func(a, b, c)
print("x1结果:", x1s)
print("x2结果:", x2s)

关键修正点:

  • 用zip(a, b, c)替代a,b,c:zip会把三个列表中同一位置的元素打包成元组,循环时每次取出一组对应的二次方程参数。
  • 新增判别式变量:把y**2 -4*x*z单独提取为discriminant,既提升代码可读性,也方便后续扩展判别式判断逻辑(比如区分实根/复根)。
  • 自动处理复数解:当判别式为负时,Python的**0.5会返回复数类型,无需额外处理即可得到复根。

内容的提问来源于stack exchange,提问作者Bryn Owen-Conway

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:59:57