python3 第八章,python3

來源:互聯網
上載者:User

python3 第八章,python3

前面我們在第四章的時候挖了個坑:怎麼用優雅的方式來列印九九乘法表。這一章我們就來填上這個坑。

首先,我們再來看下九九乘法表是什麼樣子的

1 x 1 = 11 x 2 = 2 2 x 2 = 41 x 3 = 3 2 x 3 = 6 3 x 3 = 91 x 4 = 4 2 x 4 = 8 3 x 4 =12 4 x 4 =161 x 5 = 5 2 x 5 =10 3 x 5 =15 4 x 5 =20 5 x 5 =251 x 6 = 6 2 x 6 =12 3 x 6 =18 4 x 6 =24 5 x 6 =30 6 x 6 =361 x 7 = 7 2 x 7 =14 3 x 7 =21 4 x 7 =28 5 x 7 =35 6 x 7 =42 7 x 7 =491 x 8 = 8 2 x 8 =16 3 x 8 =24 4 x 8 =32 5 x 8 =40 6 x 8 =48 7 x 8 =56 8 x 8 =641 x 9 = 9 2 x 9 =18 3 x 9 =27 4 x 9 =36 5 x 9 =45 6 x 9 =54 7 x 9 =63 8 x 9 =72 9 x 9 =81

不難發現,有以下規律:

  • 一共9行,最多9列
  • 每一行,有和行數相等的列數
  • 從上到下,分別是第1~9行;從左至右,分別是第1~9列
  • 每一行,儲存格裡的內容是行號 乘以 列號,這是一個迴圈

 

我們先來輸出,9行9列的每一個儲存格

for row in range(1, 10):    for column in range(1, 10):        if column == 9:            print('第', row, '行第', column, '列   ')        else:            print('第', row, '行第', column, '列   ', end='')

 以上代碼,輸出:

第 1 行第 1 列   第 1 行第 2 列   第 1 行第 3 列   第 1 行第 4 列   第 1 行第 5 列   第 1 行第 6 列   第 1 行第 7 列   第 1 行第 8 列   第 1 行第 9 列   
第 2 行第 1 列   第 2 行第 2 列   第 2 行第 3 列   第 2 行第 4 列   第 2 行第 5 列   第 2 行第 6 列   第 2 行第 7 列   第 2 行第 8 列   第 2 行第 9 列   
第 3 行第 1 列   第 3 行第 2 列   第 3 行第 3 列   第 3 行第 4 列   第 3 行第 5 列   第 3 行第 6 列   第 3 行第 7 列   第 3 行第 8 列   第 3 行第 9 列   
第 4 行第 1 列   第 4 行第 2 列   第 4 行第 3 列   第 4 行第 4 列   第 4 行第 5 列   第 4 行第 6 列   第 4 行第 7 列   第 4 行第 8 列   第 4 行第 9 列   
第 5 行第 1 列   第 5 行第 2 列   第 5 行第 3 列   第 5 行第 4 列   第 5 行第 5 列   第 5 行第 6 列   第 5 行第 7 列   第 5 行第 8 列   第 5 行第 9 列   
第 6 行第 1 列   第 6 行第 2 列   第 6 行第 3 列   第 6 行第 4 列   第 6 行第 5 列   第 6 行第 6 列   第 6 行第 7 列   第 6 行第 8 列   第 6 行第 9 列   
第 7 行第 1 列   第 7 行第 2 列   第 7 行第 3 列   第 7 行第 4 列   第 7 行第 5 列   第 7 行第 6 列   第 7 行第 7 列   第 7 行第 8 列   第 7 行第 9 列   
第 8 行第 1 列   第 8 行第 2 列   第 8 行第 3 列   第 8 行第 4 列   第 8 行第 5 列   第 8 行第 6 列   第 8 行第 7 列   第 8 行第 8 列   第 8 行第 9 列   
第 9 行第 1 列   第 9 行第 2 列   第 9 行第 3 列   第 9 行第 4 列   第 9 行第 5 列   第 9 行第 6 列   第 9 行第 7 列   第 9 行第 8 列   第 9 行第 9 列   

 

 實際上,這並沒有達到我們想要的效果,因為九九乘法表是第一行只有一列,往下是每行增加一列,我們修改程式:

for row in range(1, 10):    maxColumn = row + 1    for column in range(1, maxColumn):        if column == row:            print('第', row, '行第', column, '列   ')        else:            print('第', row, '行第', column, '列   ', end='')

 以上代碼,輸出:

第 1 行第 1 列   第 2 行第 1 列   第 2 行第 2 列   第 3 行第 1 列   第 3 行第 2 列   第 3 行第 3 列   第 4 行第 1 列   第 4 行第 2 列   第 4 行第 3 列   第 4 行第 4 列   第 5 行第 1 列   第 5 行第 2 列   第 5 行第 3 列   第 5 行第 4 列   第 5 行第 5 列   第 6 行第 1 列   第 6 行第 2 列   第 6 行第 3 列   第 6 行第 4 列   第 6 行第 5 列   第 6 行第 6 列   第 7 行第 1 列   第 7 行第 2 列   第 7 行第 3 列   第 7 行第 4 列   第 7 行第 5 列   第 7 行第 6 列   第 7 行第 7 列   第 8 行第 1 列   第 8 行第 2 列   第 8 行第 3 列   第 8 行第 4 列   第 8 行第 5 列   第 8 行第 6 列   第 8 行第 7 列   第 8 行第 8 列   第 9 行第 1 列   第 9 行第 2 列   第 9 行第 3 列   第 9 行第 4 列   第 9 行第 5 列   第 9 行第 6 列   第 9 行第 7 列   第 9 行第 8 列   第 9 行第 9 列   

到了這裡,我們發現已經形式了,我們只要把每個儲存格上的計算填充上去就OK啦

for row in range(1, 10):    maxColumn = row + 1    for column in range(1, maxColumn):        if column == row:            print(column, 'x', row, '=', column * row, ' ')        else:            print(column, 'x', row, '=', column * row, ' ', end='')

 以上代碼,輸出:

1 x 1 = 1  1 x 2 = 2  2 x 2 = 4  1 x 3 = 3  2 x 3 = 6  3 x 3 = 9  1 x 4 = 4  2 x 4 = 8  3 x 4 = 12  4 x 4 = 16  1 x 5 = 5  2 x 5 = 10  3 x 5 = 15  4 x 5 = 20  5 x 5 = 25  1 x 6 = 6  2 x 6 = 12  3 x 6 = 18  4 x 6 = 24  5 x 6 = 30  6 x 6 = 36  1 x 7 = 7  2 x 7 = 14  3 x 7 = 21  4 x 7 = 28  5 x 7 = 35  6 x 7 = 42  7 x 7 = 49  1 x 8 = 8  2 x 8 = 16  3 x 8 = 24  4 x 8 = 32  5 x 8 = 40  6 x 8 = 48  7 x 8 = 56  8 x 8 = 64  1 x 9 = 9  2 x 9 = 18  3 x 9 = 27  4 x 9 = 36  5 x 9 = 45  6 x 9 = 54  7 x 9 = 63  8 x 9 = 72  9 x 9 = 81  

 至此,大功告成。

 

思考1:如果程式裡只允許你出現一次print(),程式要怎嗎?下面給出答案,請盡量在自己寫出來之前不要查看

for row in range(1, 10):    maxColumn = row + 1    for column in range(1, maxColumn):        endString = ' '  # 結束符        if column == row:            endString = '\n'  # 以換行結束        print(column, 'x', row, '=', column * row, ' ', end=endString)
View Code

思考2:可以看出來,上面的程式輸出來的九九乘法表,有些列,上下是沒有對齊的,怎麼對齊?下面給出答案,請盡量在自己寫出來之前不要查看

for row in range(1, 10):    maxColumn = row + 1    for column in range(1, maxColumn):        endString = ' '  # 結束符        splitString = ' '  # 積和等號之間的分隔字元,預設是空格        num = column * row  # 乘積        if num > 9:            splitString = ''        if column == row:            endString = '\n'  # 以換行結束        print(column, 'x', row, '=', splitString, num, ' ', end=endString)
View Code

思考3:如何把乘法表倒著輸出?下面給出答案,請盡量在自己寫出來之前不要查看

rowsCount = 9  # 最大行while rowsCount > 0:    maxColumn = rowsCount + 1    for column in range(1, maxColumn):        endString = ' '  # 結束符        splitString = ' '  # 積和等號之間的分隔字元,預設是空格        num = column * rowsCount  # 乘積        if num > 9:            splitString = ''        if column == rowsCount:            endString = '\n'  # 以換行結束        print(column, 'x', rowsCount, '=', splitString, num, ' ', end=endString)    rowsCount -= 1
View Code

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.