关于索引的while循环是特别的吗?

时间:2015-11-05 10:35:12

标签: python python-2.7

以下是代码:

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循环中?

3 个答案:

答案 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