上次提到了for-loop
及range()
的用法,接下來 Jason 就要提到怎麼用for-loop
印出星期一到星期日囉!
Meiko:「上次你跟我提到用for-loop
的方式印出數值,我學了只有終止值的range(7)
、有初始值和終止值的range(1,7)
、有初始值及終止值和遞增值的range(1,7,2)
,但你還沒提完如何把星期一~星期日印出來?」
Jason:「講這些就是要鋪梗,讓你知道接下來要怎麼做呀,你看下面這段程式」
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
for i in range(7):
print(i,weekName[i])
Meiko:「我不太懂耶,為什麼print(i,weekName[i])
就可以把星期一到星期日都印出來?」
Jason:「你還記得我們上次用了for i in range(7)
發生了什麼事嗎?」
Meiko:「記得啊,就像這樣,我們可以把 0~6 的數字印出來」
Jason:「對啊,你有發現我只在print()
的地方,多加了一個weekName[i]
嗎?」
Meiko:「對耶,你只多了一個weekName[i]
我就看不太懂了!」
Jason:「我們回來看一下weekName
這個串列有什麼?」
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
Meiko:「就放了星期一到星期日呀!」
Jason:「所以問題就出在你要知道每一個元素的位置是多少?你看weekName
這個串列裡面,星期一排第一個位置、星期二排第二個位置,以此類推。所以你要拿第一個位置的元素,你會怎麼做?」
Meiko:「要放找第一個位置的元素唷,我試試看!」
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[1])
Meiko:「奇怪了,我取第一個元素,應該是要印『星期一』,怎麼會印『星期二』咧?」
Jason:「哈,我上次有跟你說過,寫程式的記數要從 0 開始嗎?你看,如果你要印『星期一』,應該要寫成 weekName[0] 才對!」
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[0])
Meiko:「阿~我想起來了,雖然 Jason 你有教我,但我沒學起來。好,那我知道原來從 0 開始是這個意思。讓我想想,所以for-loop
的意思,就是當i
為 0 的時候,就去把weekName
串列中的第一個元素印出來,因為weekName
第一個元素是『星期一』,對吧?」
Jason:「沒錯,那我們再回來看下面這段程式,你有辦法解釋出為什麼要這樣寫了嗎?」
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
for i in range(7):
print (i,weekName[i])
Meiko:「我整理一下,所以這段程式最一開始就是用串列weekName
,把『星期一』到『星期日』裝進去,然後用for-loop
和range()
函式,幫我們用整數數列的方式呈現 0~6。接著,當程式用for-loop
程式執行,就會把串列中的對應的『星期幾』印出來?」
Jason:「哇,Meiko,你寫程式的時候蠻有邏輯的耶!沒錯,當for-loop
執行程式到print (i,weekName[i])
的時候,就會看到程式印出i
和weekName
中對應到的第i
個元素。」
我大寶寶~拉,我們在 Day-3~Day-5 介紹了if-elif/if-else
,以及簡單的串列list
和for-loop
,已經可以進行一個小專案讓大家來練習所學!我們來用 Python 撰寫一個發票對獎的程式吧...
冷知識:統一發票是每個人在消費結帳後會拿到的一個證明,統一發票的冷知識可以在這篇看到統一發票歷史,透過民眾想要中獎的心態,讓民眾要求店家開立發票收據作為營業的證明,另一方面又讓政府有稅收來源,真是一個一石二鳥的作法!
好,這邊我們也來模擬一下,要怎麼用 Python 來寫一段可以兌獎的統一發票程式
1.首先,請你整理出 20 張發票的末 3 碼(我們就先做兌換末 3 碼,這個大家最容易中獎的方式)
2.到統一發票中獎號碼一樣把頭獎(通常會有 3 個)及增開六獎的末 3 碼,共 4 組發票的末 3 碼記下來。
3.好了,你的資料都整理好了,接下來你可以用for-loop
一個個將這 20 張發票,以及第 2 點提到的 4 組中獎號碼的 末 3 碼,進行比對,如果有中獎的話,就恭喜你/妳囉!200 元入袋,一週可以喝 3 杯免費拿鐵!
4.沒中獎?至少你也寫出了一個統一發票的兌獎程式!
歡迎登入留言跟我分享你的成果唷!(登入不麻煩,點一下 FB 登入就可以留言了!)
1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.想要知道解答,請留言『我要解答』,大寶寶再私訊給你唷!