這個題目,應該算是編程界的經(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)中心