第6天 電腦也會九九乘法口訣
上一節課我們寫了第一個 Python 程序,並使用了輸入和輸出函數 —— input 和 print。今天我們將進一步學習輸出函數 print 的用法,還會學習程序的控制流程,並在此基礎上讓電腦爲我們打印出《九九乘法表》。
print 輸出格式
print 默認輸出是換行的,如果不想換行,需要加上 end 參數來指定結束符,就像這樣:
print("Hello World", end="")
前面我們通過這種方式打印一句話和你的名字:
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,", name)
今天我們會學習一種新的表達方式,我們暫時稱呼它爲 “字符串格式化輸出”,上面這行代碼就可以改寫爲:
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,{}".format(name))
字符串 "很高興認識你,{}"
中的花括號是佔位符,意思是等一下這裏要打印其他內容,先佔個位。至於填充什麼內容,就由字符串後的 .format()
中的內容決定。
如果還想讓它喊你的名字三遍,就可以預留三個坑,然後在 format
中填充。
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,{}, {}, {}".format(name, name, name))
我們可以給佔位符編個號,表示這個坑使用 format
函數中的第幾個參數。下面代碼的執行效果與上面是一樣的。
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,{0}, {1}, {2}".format(name, name, name))
也許你已經想到了,name
變量其實不需要寫三遍,這樣就行了!
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,{0}, {0}, {0}".format(name))
除此之外,我們還可以爲不同的坑指定不同的效果,比如左對齊、右對齊、居中。
name = input("你好,請問你叫什麼名字?")
print("很高興認識你,{0:<8}, {0:^8}, {0:>8}".format(name))
執行效果如下:
佔位符的序號和其需要的效果操作之間用冒號 :
隔開。<
表示左對齊(默認),>
表示右對齊,^
表示中間對齊。後面的數字8表示這裏佔了八個字符長度,你也可以改成你需要的長度。
關於 print 的格式化輸出,我們先瞭解到這裏就可以了!
循環語句
前面的代碼都是順序執行的,也就是執行完第一行,再執行第二行,直到最後一行結束。在程序中,我們還經常使用循環來讓代碼重複執行,先把下面的代碼執行一遍看看。
for x in range(10):
print(x)
沒錯,你會看到屏幕上打印出0~9,一共十行數字。
函數 range(10)
幫我們創建了0~9這十個數字,我們通過 for ... in ...
語句將這十個數字依次取出來,放在變量 x 中,然後再使用 print
函數把它們打印出來。
需要注意的是,第二行代碼有一些空白位置,這是因爲按了 Tab 鍵。在你輸入代碼的時候,你使用的編輯器可能也已經幫你添加上了。這個空白叫做代碼縮進,表示代碼之間的從屬關係,在這裏就表示 print(x)
這行代碼是在 for 循環中被執行的。
range 函數默認從0開始,如果想從1開始,則可以使用兩個參數,分別表示開始和結束。
for x in range(1, 10):
print(x)
循環是可以嵌套的,也就是說,一層循環中可以包括另一層循環,下一層循環中由可以包含下一層循環,但建議不要嵌套太多層,不然會暈的。。。
下面的代碼中有兩層循環,第一層循環5次,第二層循環10次。第3行的 print 語句屬於第二層循環,第4行的 print 則屬於第一層,可以看到代碼縮進其實是在表達這種層次關係。
for x in range(5):
for y in range(10):
print("*", end=" ")
print("")
執行代碼,看看是不是打印出了5行10列的小星星。
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
除了 for in 循環語句,在 Python 中我們還可以使用 while 循環語句。同樣是打印0~9十個數字,使用 while 循環可以這樣來寫:
x = 0
while x<10:
print(x)
x = x + 1
這裏我們藉助了 x 變量來記錄當前的數字,緊跟 while 後面的是判斷條件,比如這裏的 x<10
表示當 x 小於 10 的時候,執行循環中的代碼。換句話說,就是當 x 大於等於 10,就跳出 while 循環,此時程序就結束了。
同樣,while 循環也可以嵌套,for in 循環和 while 循環之間也可以相互嵌套。
九九乘法表
學習完前面的內容,我們已經完全有能力使用 Python 來打印一張九九乘法表啦!緊不緊張,興不興奮?
你先想十分鐘,想不出來再看看我下面給的代碼。
這裏使用 for in 循環來實現,打開編輯器輸入如下代碼,並保存爲 99Table.py 文件。
for i in range(1, 10):
for j in range(1, i+1):
print("{}*{}={:<3}".format(j,i,i*j), end=" ")
print("")
在終端執行 python3 99Table.py
,看看小九九有沒有打印出來。
代碼說明
- 代碼縮進是指一行代碼開始前的空白區域,表達程序的格式框架,一個程序中可能會存在單行縮進或多行縮進。縮進是程序語法的一部分,需要嚴格明確;縮進表明了代碼間的層次關係,縮進不正確會導致程序運行錯誤;通常使用1個Tab來縮進。
- 九九乘法表可以看做一個九行九列的表格,因此使用兩層循環可以很方便地實現。第一行代碼表示變量
i
的值從1到9循環執行。 - 因爲九九乘法表的形狀是三角形,也就是說內容是逐行增加的,所以第二行的循環範圍從1開始,到 i+1 結束,隨着第一層循環中 i 的變化,第二層循環中的長度也會發生變化。
- Python 中可以直接做數值運算,所以第三行代碼使用
i*j
來得出乘法表中的各項結果,需要注意的是可能是輸出的格式。 - 第四行代碼屬於第一層循環,它的作用是每打印完一行就換一個新行。
作業
(1)自己動手練習一遍,看看能否輸出九九乘法表。
(2)嘗試使用 while 循環語句來輸出九九乘法表。