Python函数帮助

时间:2010-09-26 20:54:30

标签: python function

请帮忙!无法想象我的生活

  

给定函数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 个答案:

答案 0 :(得分:3)

(function(a, b), c)是由function(a,b)c的结果组成的2元组。

如果你想代表(a^b)^c,你需要像function(function(a,b), c)这样的东西(假设function()计算它的第一个参数被提升到第二个。)

答案 1 :(得分: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)

答案 2 :(得分:1)

这开始对我来说看起来像微积分,但很快就会失控。

基本微分学说如果你有一个函数:

alt text

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

alt text

在我看来,你正试图用Python来评估这样的东西,但你给出的元组表达对我来说毫无意义。是否应该在某处隐藏一个独立变量?

答案 3 :(得分:0)

因此,经过两个星期的拉扯我的头发试图解决这个问题,我想我终于明白了。非常感谢大家,你的所有投入真的很有帮助!我打破了每个部分并根据你们所建议的内容重写了一切。这就是我想出的:

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

assertEqual (function (function (function((function (2, 3))+(function (3, 2)), 4)-function(function (2, 4), 1), 2)+function (function ((function (3,4)),1)-function ((function (6,2))+(function (3,1)),4),3),3), 161027925052617363)

保存并运行后,Python shell告诉我它成功了,你们都说什么?

再次感谢您的帮助!