以下是代码:
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循环中?
答案 0 :(得分:0)
这一行:
a = a[2:] + a[1]
产生的字符串比前一个字符短一个字符。一旦这个字符串的长度为1,循环就会退出。
答案 1 :(得分:0)
没有"索引功能"或索引"我"在while
条款中。相反,代码如:
while <expression>:
<body>
只要<body>
为True&#34; ,表示&#34;重复<expression>
答案 2 :(得分:0)
最初,当我们编程时,我们总是使用索引(通常是-i,x,y,t)来跟踪循环的迭代。这是因为我们总是有一个循环,我们想要为已知固定数量的迭代运行。但索引并不是循环的基础。循环是远不止于此的工具。
循环由条件和正文组成。根据条件是True
还是False
,身体会被执行多次。 (条件是布尔条件)。
因此在给定代码中,条件为len(a)>1
。那就是 - 如果字符串的长度&#34; a&#34;大于1.因此,只要此条件为真,循环体就会被执行多次。 (你也可以看到,如果错误地实现了你可以有不终止的循环)。
要查看这个特定程序到底发生了什么,你可以在循环中使用print语句和一个虚拟变量&#34; iteration_num&#34;我用它来跟踪迭代。继续运行以下代码并亲自查看。
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