【问题标题】:Where's the bug in this function? [closed]这个函数的bug在哪里? [关闭]
【发布时间】:2012-11-03 06:38:14
【问题描述】:
def sqrt(a):
    def tryit(x):
        return 0.5 * (a/x + x)
    return fixedPoint(tryit(x), 0.0001)

【问题讨论】:

  • def sqrt(a): def tryit(x): return 0.5 * (a/x + x) return fixedPoint(tryit(x), 0.0001)
  • no 代码中存在小错误。我不能在其中添加任何额外的行,而是允许我更改其中的 ant 行.. 问题出在 return 语句中.. 请指定..
  • 这是您现在要求我们为您解决的任务吗?或者这是您的代码,它没有按预期工作?

标签: python python-3.x python-2.7


【解决方案1】:

有几个问题:

  • 你打电话给fixedPoint() - 那是什么?这是在其他地方定义的吗?
  • 您在函数中使用了x,但尚未定义它。
  • 您正在调用函数 sqrt(),但其逻辑与计算任何东西的平方根的逻辑相去甚远。

至少有一个不雅点:

  • 您正在定义一个嵌套函数 (tryit())。这本身不是问题,但没有多大意义,您依赖于此处定义的局部变量a,而不是将该变量传递给在模块级别定义的独立函数。不过,很难说这个函数应该做什么。
  • tryit() 不是一个好的函数名。

【讨论】:

    【解决方案2】:

    有关定点迭代的工作示例,请参阅Solve this equation with fixed point iteration

    本题中的代码拼错了fixed_point,这是一个需要从scipy.optimize 导入的函数。 fixed_point 所需的参数包括一个函数和一个初始值;例如:

    scipy.optimize.fixed_point(tryit, a/2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多