-1

我是 Python 新手,虽然我在教程中逐字输入,但我没有得到我应该得到的结果。基本上,我期望该范围内有多个答案,但我只得到一个结果。

>>> sum = 0
>>> for i in range (10): sum = sum + i
>>> print (sum)    
45

我哪里错了?

4

3 回答 3

8

请注意,使用sum是一个坏主意,因为sum()已经是 Python 内置函数。我total在这里改用:

total = 0
for i in range(10): 
    total = total + i  # same as total += i
    print(total)   

给出:

0
1
3
6
10
15
21
28
36
45

这是您期望/想要的输出吗?

在 Python 中,空格/缩进是至关重要的,因此如果您希望语句成为函数/循环/等的一部分,则需要将其缩进到与块中其他语句相同的级别。

相比之下,您的原始代码看起来像这种格式更传统:

total = 0
for i in range(10): 
    total = total + i  # same as total += i
print(total)

所以你可以看到它只在循环完成执行后被print调用一次。缩进使两个版本之间的所有区别。

最后PEP8 - The Python Style Guide提到函数名和它的参数之间不应该有空格,所以range(10)首选 to range (10), print()toprint ()

PEP 8是任何 Python 程序员的好读物。

于 2012-08-11T11:44:08.653 回答
2

这实际上是您应该期待的正确答案。这是证明(希望你不介意一点 JS 来证明我的观点)

现在,如果您希望在sum循环的每次迭代中都打印该变量,您应该修改您的代码,使其如下所示:

sum = 0
for i in range (10):
    sum = sum + i
    print (sum) 

间距在 Python 中很重要。很重要。

于 2012-08-11T11:42:55.280 回答
2

这里没有错。在每一步中,您都将下一个数字相加,因此在每一步中,它都是 0、1、3、6、....、45。然后您将答案打印出来。

如果要打印出每个步骤,则需要确保 print 位于 for 块内:

for i in range (10):
    sum = sum + i
    print (sum)

(注意缩进)

PS。不要sum用作变量名。它已经是一个全局函数,所以通过分配sum=0你正在删除旧的含义 - 签sum(range(10))入一个新的 python shell

于 2012-08-11T11:43:51.970 回答