【Python 第15課】 循環的嵌套

設想同樣,若是咱們要輸出5*,用for循環要這麼寫
for i in range(0, 5):
 print '*'

若是想讓這5*在同一行,就在print語句後面加上逗號

for i in range(0, 5):
 print '*',spa

 

但若是我想要這樣一個圖形,怎麼辦?
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *


固然,你能夠循環5次,每次輸出一行「* * * * *」。那若是再進一步,這樣呢?
*
**
***
****
*****
debug

除了你本身動手打好一個多行字符串外,也可讓程序幫咱們解決這種問題,咱們須要的是兩個嵌套在一塊兒的循環:
for i in range(0, 5):
 for j in range(0, 5):
  
print i, j

第二個for循環在第一個for循環的內部,表示每一次外層的循環中,都要進行一遍內層的循環。

看一下輸出的結果:
0 0
0 1
0 2
0 3
0 4
1 0
...
4 4
內層循環中的print語句一共被執行了25次。
i
04循環了5次。對應於每個i的值,j又作了從04五次循環。因此5*5一共25次。調試

 

因此若是要輸出一個5*5的方陣圖案,咱們能夠
for i in range(0, 5):
 for j in range(0, 5):
  
print '*',
 
print

注意:第二個print的縮進和內層的for是同樣的,這代表它是外層for循環中的語句,每次i的循環中,它會執行一次。

print
後面沒有寫任何東西,是起到換行的做用,這樣,每輸出5*,就會換行。ip

 

要輸出第二個三角圖案時,咱們須要根據當前外層循環的序數,設置內層循環應當執行的次數。
for i in range(0, 5):
 for j in range(0, i+1):
  
print '*',
 
print

內層的j每次從0i+1進行循環。

這樣,當第一次i=0時,j就是range(0,1),只輸出1*
而當最後一次i=4時,j就是range(0,5),輸出5*字符串

 

最後順便說下,若是有同窗用的是PyScripter,或者其餘第三方IDE,能夠經過debug中的step,查看程序是怎樣一行一行運行的。IDLE在這方面作得不太好,雖然也能夠步進調試,可是很麻煩且不直觀,因此就不推薦去用了。循環

相關文章
相關標籤/搜索