Python練習實例22 | 打印菱形

這個題目,應該算是編程界的經(jīng)典試題了,查閱了百度,可以看到很多的不同的實現(xiàn)形式,有些能夠正確的打印出來,有些還是停留在未完成的狀態(tài),下面就讓我們來分析一下這個題究竟應該怎么做吧。

菱形,我們可以看成是由上下兩部分組成,上半部分是一個三角形,且每一行的元素均是居中顯示的,下滿則是一個倒立的三角形。

因此,上半部分,我們可以先打印出來一個三角形的形狀。代碼如下:

rows = int(input('請輸入菱形邊長:'))
row = 1
while row <= rows:
    col = 1  # 保證每次內(nèi)循環(huán)col都從1開始,打印前面空格的個數(shù)
    while col <= (rows - row):  # 這個內(nèi)層while就是單純打印空格
        print(' ', end='')  # 空格的打印不換行
        col += 1
    print(row * '* ')  # 每一行打印完空格后,接著在同一行打印星星,星星個數(shù)與行數(shù)相等,且打印完星星后print默認換行
    row += 1

作者試了一下,其中中間的while內(nèi)層循環(huán)其實是專門打印空格的,去掉這部分的話,就是一個簡單的直角三角形。

上半部分打印完了之后,我們就可以來打印下半部分。

最后完整的代碼如下圖所示:

rows = int(input('請輸入菱形層數(shù):'))
row = 1
while row <= rows:
    col = 1  # 保證每次內(nèi)循環(huán)col都從1開始,打印前面空格的個數(shù)
    while col <= (rows - row):  # 這個內(nèi)層while就是單純打印空格
        print(' ', end='')  # 空格的打印不換行
        col += 1
    print(row * '* ')  # 每一行打印完空格后,接著在同一行打印星星,星星個數(shù)與行數(shù)相等,且打印完星星后print默認換行
    row += 1

bottom = rows - 1
while bottom > 0:
    col = 1  # 保證每次內(nèi)循環(huán)col都從1開始,打印前面空格的個數(shù)
    while bottom + col <= rows:
        print(' ', end='')  # 空格的打印不換行
        col += 1
    print(bottom * '* ')  # 每一行打印完空格后,接著在同一行打印星星,星星個數(shù)與行數(shù)相等,且打印完星星后print默認換行
    bottom -= 1

這樣寫的好處,是我們輸入任意的菱形層數(shù),均可以打印出我們所期待的菱形形狀。

請輸入菱形邊長:10
         * 
        * * 
       * * * 
      * * * * 
     * * * * * 
    * * * * * * 
   * * * * * * * 
  * * * * * * * * 
 * * * * * * * * * 
* * * * * * * * * * 
 * * * * * * * * * 
  * * * * * * * * 
   * * * * * * * 
    * * * * * * 
     * * * * * 
      * * * * 
       * * * 
        * * 
         * 

Process finished with exit code 0

好了,以上就是作者分享給大家的內(nèi)容,我們下期再見吧。

2020年2月23日
北京市通州區(qū)京貿(mào)中心

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容