2014-12-07 181 views
0

我正在学习初学者编程课的最后一部分。我在中期收到了这个问题。我说的答案是1,但是,答案实际上是0.我想知道是否有人可以向我解释为什么它是0.是否因为z最初分配给0?我不知道如何通过这个有限的代码来判断它是否是局部变量。感谢您提供的任何帮助!在for循环外打印一个值

z=0 
for x in range(1, 200, -1): 
    z=z+1 
print(z) 
+2

它与变量作用域没有任何关系。将范围改为(1,200,1),观察结果,我想你会有一个麻烦的时刻。 – 2014-12-07 23:33:29

回答

4

没有元素在range(1, 200, -1),循环没有开始。所以z从未改变它的价值。

阅读有关步骤(范围第三个参数)精氨酸这里:

https://docs.python.org/2/library/functions.html#range

一个很好的方法,看看这是转换的范围内列出:

print(list(range(1, 200, -1))) 
>>> [] 
1

你应该测试一下在你的翻译。循环从不进行迭代。想想什么在增加。

您的范围是1到200,但您选择从1开始的每个步骤增加-1,所以在此情况下不能向后移动。

1

它保持为零,因为范围是1,200,但是您正在步进-1,因此for循环内的表达式从未实际执行。