下面是代碼:關於索引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