我是Python的初学者,我尝试使用while loop
来总结给定n
值范围内的所有平方n
值。
代码:
def problem2(n):
x = 0
y = 0
while x < n:
y = (n**2)+y
x+=1
return y
由于某种原因,此等式返回输入数字cubed。
有人可以解释为什么会发生这种情况以及如何解决这个问题吗?
答案 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。
使用内置函数sum
,generator expression和range
更多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
希望这很清楚。