Python 答案打印0不是实际答案

Python 答案打印0不是实际答案,python,python-3.x,Python,Python 3.x,为什么我的代码正在打印0?我想把1到100平方之间的所有数字相加。我可能刚刚犯了一个愚蠢的错误,但我想不出来。您正在将answer添加到sum1,而您应该将sum1添加到answer 此外,您的范围有一个错误:它上升到但不包括停止值: def difference1(): answer = 0 for a in range(1, 100): sum1 = a**2 sum1 += answer print(answer) differenc

为什么我的代码正在打印0?我想把1到100平方之间的所有数字相加。我可能刚刚犯了一个愚蠢的错误,但我想不出来。

您正在将
answer
添加到
sum1
,而您应该将
sum1
添加到
answer

此外,您的
范围有一个错误:它上升到但不包括停止值:

def difference1():
    answer = 0
    for a in range(1, 100):
        sum1 = a**2
        sum1 += answer
    print(answer)
difference1()

对于奖励积分,它也可以写为

def sum_of_squares(upto):
    answer = 0
    for i in range(1, upto + 1):
        answer += i*i
    return answer

print(sum_of_squares(100))    # => 338350
或作为


您正在将
answer
添加到
sum1
,而您应该将
sum1
添加到
answer

此外,您的
范围有一个错误:它上升到但不包括停止值:

def difference1():
    answer = 0
    for a in range(1, 100):
        sum1 = a**2
        sum1 += answer
    print(answer)
difference1()

对于奖励积分,它也可以写为

def sum_of_squares(upto):
    answer = 0
    for i in range(1, upto + 1):
        answer += i*i
    return answer

print(sum_of_squares(100))    # => 338350
或作为


您添加到了错误的变量,您需要:

def sum_of_squares(upto):
    # sum of squares formula
    return upto * (upto + 1) * (2*upto + 1) // 6

您添加到了错误的变量,您需要:

def sum_of_squares(upto):
    # sum of squares formula
    return upto * (upto + 1) * (2*upto + 1) // 6

你永远不会改变“答案”变量,这就是为什么当你分配它时它总是0

这样做:

answer += sum1

你永远不会改变“答案”变量,这就是为什么当你分配它时它总是0

这样做:

answer += sum1

在这一行,
sum1+=answer
,您已将answer声明为
0
,并将其添加到
sum1
。当前看起来是这样的:
sum1=sum1+0
。您希望它看起来像这样:
answer=answer+sum1
。因此,请改用此表达式:
answer+=sum1

在这一行,
sum1+=answer
,您已将答案声明为
0
,并将其添加到
sum1
。当前看起来是这样的:
sum1=sum1+0
。您希望它看起来像这样:
answer=answer+sum1
。因此,请改用此表达式:
answer+=sum1
您的范围不正确,您将答案添加到了
sum1
,而没有将
answer
添加到
sum

您可以直接将
a**2
添加到
answer

def difference1():
    answer = 0
    for a in range(1, 100):
        sum1 = a**2
        answer += sum1 #the change is on this line
    print(answer)
difference1()

您的范围不正确,您将答案添加到
sum1
,而未将
answer
添加到
sum

您可以直接将
a**2
添加到
answer

def difference1():
    answer = 0
    for a in range(1, 100):
        sum1 = a**2
        answer += sum1 #the change is on this line
    print(answer)
difference1()

因为您不会在任何地方更改
答案
sum1+=answer
相当于
sum1=sum1+answer
。没有为
答案
分配任务。因为您不会在任何地方更改
答案
sum1+=answer
相当于
sum1=sum1+answer
。没有分配给
答案
。很好!点击帖子左上角的复选标记,您可以随意接受它作为解决方案。很好!点击文章左上角的复选标记,您可以随意接受它作为解决方案。