Python 函数帮助

-1 投票
4 回答
928 浏览
提问于 2025-04-16 04:37

请帮帮我!我实在搞不懂这个问题。

给定这个函数 f(x,n)= n**x(n-1)

5c. 使用这个函数,计算 (((2^3 + 3^2)^4 -2^4)^2 + (3^4 – (6^2 + 3)^4)^3)^3 的变化率。

这是我在IDLE中写的代码:

def function(x, n):
    return (n*(x**(n-1)))

assertEqual (
  function ((((
    function (2.0, 3.0))+(
      function (3.0, 2.0)), 4.0)-(
        function (2.0, 4.0)), 2.0)+((
          function (3.0, 4.0))-((
            function (6.0, 2.0))+(
              function (3.0, 1.0)), 4.0), 3.0), 3.0), 35994405888.0)

然后我保存并运行后,得到了这个信息:

Traceback (most recent call last):
  File "C:\Users\Jonathan Cohen\Desktop\School\CISC 106\lab2.py", line 83, in <module>
    assertEqual (function ((((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)-(function (2.0, 4.0)), 2.0)+((function (3.0, 4.0))-((function (6.0, 2.0))+(function (3.0, 1.0)), 4.0), 3.0), 3.0), 35994405888.0)
TypeError: unsupported operand type(s) for -: 'tuple' and 'float'

4 个回答

1

一开始这看起来像是微积分的内容,但很快就变得复杂了。

基础的微分计算告诉我们,如果你有一个函数:

alt text

那么关于自变量x的第一个导数是:

alt text

我觉得你是在用Python尝试计算类似的东西,但你给出的元组表达式让我有点困惑。里面是不是应该隐藏着某个自变量呢?

2

这种情况出现过几次,但这是第一次。

function ((((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)-(function (2.0, 4.0)), 2.0)+((function (3.0, 4.0))-((function (6.0, 2.0))+(function (3.0, 1.0)), 4.0), 3.0), 3.0)
           ((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)

我遮住的那部分代码会生成一个叫做元组的东西,内容是(18.0, 4.0)。然后你试图对这个元组进行正常的数学运算,但失败了。


针对评论的回复,如果你这样做,这段代码会更好:

function((function (2.0, 3.0))+(function (3.0, 2.0)), 4.0)
3

(function(a, b), c) 是一个包含两个部分的组合,第一个部分是 function(a,b) 的结果,第二个部分是 c

如果你想表示 (a^b)^c,你需要用类似 function(function(a,b), c) 的方式来写(假设 function() 是用来计算第一个参数的值被提升到第二个参数的幂)。

撰写回答