Python While Loop Square

时间:2018-03-18 20:00:06

标签: python while-loop

我是Python的初学者,我尝试使用while loop来总结给定n值范围内的所有平方n值。

代码:

def problem2(n):
    x = 0
    y = 0
    while x < n:
        y = (n**2)+y
        x+=1
    return y

由于某种原因,此等式返回输入数字cubed。

有人可以解释为什么会发生这种情况以及如何解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

您需要在**上执行x,即递增的值:

def problem2(n):
  x = 0
  count = 0
  while x < n:
    count += pow(x, 2)
    x += 1
  return count

答案 1 :(得分:2)

您继续使用相同的数字n,而不是增加x的数字。

def sum_of_squares(n):
    sum = 0
    for x in range(0, n):
        sum += x*x
    return sum

答案 2 :(得分:2)

你也不需要while循环,避免必须手动跟踪哪个变量是计数变量,哪一个是结果变量(这就是你所困惑的,正如所解释的那样)例如@Ajax1234中的their answer

使用内置函数sumgenerator expressionrange更多Pythonic:

def problem2(n):
    return sum(x**2 for x in range(n))

这将更具可读性和更好(除非您强制使用while)。

答案 3 :(得分:2)

看起来不错。你快到了。

它使它成为立方体根,因为您每次都会将{y}添加到(n**2)。因为代码运行直到x !< n它运行n次。这意味着您将n**2添加到n**2*n

这意味着它会1(n**2)*(n-1)(n**2)等于n(n**2) = n**3

希望这很清楚。