下面是代码:关于索引while循环的特殊之处是什么?
a = "218916754"
b = ""
while len(a) > 1:
b = b + a[0]
a = a[2:] + a[1]
b = b + a
print b
结果是"281749561"
。我的问题是,这是怎么发生的?在这个代码中,没有i
,没有i+=1
等等,迭代是怎么发生的? while循环有什么特别之处?我的意思是索引函数隐藏在这个while循环中?
下面是代码:关于索引while循环的特殊之处是什么?
a = "218916754"
b = ""
while len(a) > 1:
b = b + a[0]
a = a[2:] + a[1]
b = b + a
print b
结果是"281749561"
。我的问题是,这是怎么发生的?在这个代码中,没有i
,没有i+=1
等等,迭代是怎么发生的? while循环有什么特别之处?我的意思是索引函数隐藏在这个while循环中?
这条线:
a = a[2:] + a[1]
导致字符串,它是一个性格比以前更短。一旦这个字符串的长度为1,循环就会退出。
哦,我看到:当你有动作时,你有相应的变量。听起来像禅宗。 –
while
子句中没有“索引函数”或索引“i”。相反,这样的代码:
while <expression>:
<body>
手段, “重复<body>
只要<expression>
是真正的”
最初,当我们在编程中,我们一直在使用索引(一般 - I,X,Y,T)跟踪循环的迭代。这是因为我们总是有一个循环,我们想要运行一个已知的固定数量的迭代。但是索引不是循环的基础。循环是远不止于此的工具。
一个循环由条件和正文组成。根据条件是True
还是False
,机体会执行多次。 (条件是布尔条件)。
所以在给定的代码中,条件是len(a)>1
。也就是说 - 如果字符串“a”的长度大于1.所以只要条件成立,循环的主体就会执行多次。 (你也可以看到,如果错误地实现,你可能有不会终止的循环)。
要查看此特定程序中究竟发生了什么,可以使用循环内的print语句和一个虚拟变量“iteration_num”,我使用该变量来跟踪迭代。继续并运行以下代码并亲自查看。
a = "218916754"
b = ""
iteration_num = 1
while len(a) > 1:
b = b + a[0]
a = a[2:] + a[1]
print "iteration number: " + str(iteration_num)
print "a: " + a
print "b: " + b
iteration_num = iteration_num + 1
b = b + a
print b
您是否试过单步执行算法?如果你不能在你的头上或纸上做,请考虑http://www.pythontutor.com/ – jonrsharpe