Python打印矩形、直角三角形、等腰三角形、菱形


思路如下:

(1)先打印一個星號並換行

  

print("*")

(2)打印一行6個星號

  

for i in range(6): print("*", end=" ")

(3)打印6列星號

  

for i in range(6): print("*")

(4)打印6行6列

  

for i in range(6): for j in range(6): print("*",end=" ")
  # 每打印一行就換行
print()

(5)金字塔型是由下面圖形轉成的,先打印此圖形

  

  控制內層循環的打印。觀察上圖,發現如下規律:

    

  則讓內層循環 j<=i,就可以實現。i 控制行數,j 控制列數。比如:當 i=0 時,內層循環1次,j=0,j<=i,當 j++ 時,就跳出內層循環;當 i=1 時,內存循環2次,j=0 和 j=1 的情況,當 j=1,j++,則 j=2,j<=i 則不成立,跳出內存循環。以此類推。

for i in range(6): for j in range(i+1): print("*",end=" ") print()

(6)當 j<i,那么每行少一個星號,則第一行會被抹掉,如下圖所示:

  

for i in range(6): for j in range(i): print("*",end=" ") print()

(7)空格和星號相結合的情況,完整金字塔就是被空格頂過去的。

  打印6個空格,后跟星號

    

for i in range(6): print(" ", end=" ") print("*")

  每行5個空格,后跟一個星號

    

for i in range(6): for k in range(5): print(" ", end=" ") print("*")

有了以上的基礎,下面分析打印完整金字塔型:

(8)根據下圖所示,我們已經可以打印出左邊的圖形,然后通過控制空格,把它轉成右邊的圖形。

        

  觀察后發現如下規律,右邊圖形相對於左邊的圖形。行數仍然是6行,即 i=6,先不考慮空格的問題,每一行星星的個數,如下所示:

    

  可以得出:j<=(2*i)。當i=0時,j=0,打印一個星號,必須j<=,參考上面的講解;當i=1時,j=2,因為是j<=i,j取值0,1,2,循環三次,打印3個星號。以此類推。

    

for i in range(6): for j in range(2*i+1): print("*",end=" ") print()

(9)在(8)的基礎上,插入空格。對比發現,如下規律:

  

  再加一層內循環,在星號內循環的前面,先打印空格,然后再打印相應的星號。

  可以得出:k<6-i-1;當 i=0 時,k<5,k取值0,1,2,3,4,循環5次,打印5個空格。依次類推。

  

for i in range(6): for k in range(5-i): print(" ",end=" ") for j in range(2*i+1): print("*", end=" ") print()

(10)菱形的上半部分已經打印出,下面考慮如何打印下半部分,最上面的11個星號,已經在上半部分給出,只考慮打印11個星號以下的圖形。如圖:

  

  觀察發現,下半部分共5行,即 i=5 。有如下的規律,如下圖所示:

    

  空格內存循環,k<i+1,星號內層循環,m<(9-3*i)+i。

  (9-3*i)+i,是如何得出?通過數學歸納法,發現:

   

for i in range(5): for k in range(i+1): print(" ", end=" ") for m in range((9-3*i)+i): print("*",end=" ") print()

(11)完整的菱形,通過(10)和(11),我們已經可以打印出完整的菱形。

  

for i in range(6): for k in range(5-i): print(" ",end=" ") for j in range(2*i+1): print("*", end=" ") print() for i in range(5): for k in range(i+1): print(" ", end=" ") for m in range((9-3*i)+i): print("*",end=" ") print()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM