如何编写带有变量的函数,该变量将在以后的代码中定义

2024-05-19 00:41:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python3上做了一个函数,它可以解ax^2+bx+c,所以是一个二次方程

我的代码如下所示:

def quadratic(a, b, c):
    return a*x**2 + b*x + c

但它不允许我这样做,因为x是未定义的。我想在测试代码中使用参数x 看起来是这样的:

def testQuadratic(a, b, c, x):
    try:
        return quadratic(a, b, c)(x)
    except TypeError:
        return None

有人能告诉我怎么解决这个问题吗? 谢谢


Tags: 函数代码参数returndefaxpython3测试代码
3条回答

你的二次函数应该返回函数

def quadratic(a, b, c):
  def calculate_quadratic(x):
    return a*x**2 + b*x + c
  return calculate_quadratic

不清楚您是否打算“解决”的意思

  1. 求二次方程的根,或
  2. 为给定值x生成输出

由于您将x作为输入参数,因此我将假设第二个选项(SkapySquid对第一个选项给出了答案):

def quadratic(a, b, c):
    return a*x**2 + b*x + c

def testQuadratic(a, b, c, x):
    try:
        return quadratic(a, b, c, x)
    except TypeError:
        return None

当然,除非出于其他原因需要def quadratic,否则使用它会更简单:

def testQuadratic(a, b, c, x):
    try:
        return a*x**2 + b*x + c
    except TypeError:
        return None

除了TypeError之外,您可能还需要处理其他错误

您可以利用Python支持一级函数的事实,这些函数可以传递到其他函数中,也可以从其他函数返回

def make_quadratic(a, b, c):
    def f(x):
        return a*(x**2) + b*x + c
    return f

# You would call the returned function
my_quadratic = make_quadratic(a, b, c)

# You can then call my_quadratic(x) as you would elsewhere

相关问题 更多 >

    热门问题