【问题标题】:Python function-unexpected outputPython函数意外的输出
【发布时间】:2018-07-21 15:02:06
【问题描述】:

我有这个 Python 函数:

def main(n,x):
   g=0
   for i in range(1,n):
       g+=((-1)^i)*(x^(2*i+1))/(2*i+1)
   return g

print main(3,2)

当我认为它应该是 86/15 时,输出是 -6。我的错误在哪里?我想找到x-(x^3)/3+(x^5)/5+的n值...

【问题讨论】:

  • @VasilisG。为什么?默认步骤是1
  • range(1,n,2)?

标签: python function output


【解决方案1】:

您当前解决方案的一些问题:

  1. 您的求幂运算符应该是 ** 而不是 ^ 这是 XOR。

  2. 你应该从 0 而不是 1 开始 range(那么第一个乘数是 -1**0 = 1

  3. 将除法中的一个数字更改为浮点数,以避免 Python 2 中的整数除法。


def main(n, x):
   g = 0
   for i in range(n):
       g += ((-1)**i) * (x**(2*i+1))/float(2*i+1)
   return g

【讨论】:

  • 非常感谢。有没有办法在不使用“for”或“while”的情况下解决这个问题?
  • @M.Papapetros 我的(幂)系列数学有点生疏。尝试在 math.stackexchange.com 上询问您的系列是否有算术缩减。
【解决方案2】:

如果你想要分数的答案,你可以使用:

from fractions import Fraction
def main(n,x):
   g=0
   for i in range(n):
       g+=Fraction(((-1)**i)*(x**(2*i+1)),(2*i+1))
   return g

print main(3,2)

它给出输出:

86/15

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2017-07-28
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多