我以前学过visualbasic,现在我在学Python。我意识到在Python中,我们不必为for loop
中的标识符初始化一个值,但在while loop
中则相反。它对我来说很陌生,因为在visualbasic中,我们必须在两个循环中声明一个变量作为标识符。在
例如,从Python wiki
x = 1
while True:
print "To infinity and beyond! We're getting close, on %d now!" % (x)
x += 1
运行完美。但是,在我注释x = 1
之后,它会生成一个错误。为什么它不能像for loop
那样运行x
从0开始?在
此外,例如,即使我们为for loop
中的标识符赋值
循环将覆盖赋值的值。为什么会这样?在
我知道这里有很多for loop
和while loop
问题,但大部分都是OP代码的案例研究。我想要的是对Python结构本身以及执行for loop
或{
如果您对
^{pr2}$x = 1
进行注释,这一行将引发一个错误:因为它的意思是,
x = x + 1
,因为没有定义x,它会引发一个错误(python不知道什么值加1)您对两个变量使用相同的名称,在循环内部和外部,这就是为什么在循环中有另一个值
num
。在好的做法是在循环变量内为变量取另一个名称,因为实际上不需要像在循环外那样使用相同的for loop变量
你可以这样写:
因为Python的
for
循环更像C的foreach
或JS的for of
,而VB的
for
更像Pascal的for
。在我将使用Pascal而不是VB,因为我更了解它。在
帕斯卡的
for
:每个Pascal的
^{pr2}$for
循环可以使用range
在Python中轻松复制:但是,Python的
for
还有更多:如果不直接处理索引,就不能在Pascal中复制它。在
Pascal和VB的
for
使用索引,它们从一个索引迭代到另一个索引,而Python的for
循环使用iterables(数组、字符串、文件、生成器等等)。在因为'range'告诉您什么是连续的值,并将num定义为局部值。你看不到几个字,但有一个更复杂的过程。在
例如Javascript语言。在for循环中,可以看到循环中迭代的值的初始值,可以看到最大值和增量。对于(var num=0;var<;5;var+=1),在python中可以看到num在范围(5)内。while循环更显式。在
num是全局变量和局部变量的名称,这可能会导致混淆。实际上,您在循环中看到的num是另一个变量。在
相关问题 更多 >
编程相关推荐