iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
2
AI & Data

看對話學 Python 資料分析,用情境故事帶你入門系列 第 5

Day-5 想省時?讓程式幫你做重複的事情!學會 for- loop 迴圈的概念(下)


上次提到了for-looprange()的用法,接下來 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-looprange()函式,幫我們用整數數列的方式呈現 0~6。接著,當程式用for-loop程式執行,就會把串列中的對應的『星期幾』印出來?」

Jason:「哇,Meiko,你寫程式的時候蠻有邏輯的耶!沒錯,當for-loop執行程式到print (i,weekName[i])的時候,就會看到程式印出iweekName中對應到的第i個元素。」

牛刀小試

我大寶寶~拉,我們在 Day-3~Day-5 介紹了if-elif/if-else,以及簡單的串列listfor-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.想要知道解答,請留言『我要解答』,大寶寶再私訊給你唷!


上一篇
Day-4 想省時?讓程式幫你做重複的事情!學會 for- loop 迴圈的概念(上)
下一篇
Day-6 想成為資料分析師?熟悉基礎串列 list 運用準沒錯!(上)
系列文
看對話學 Python 資料分析,用情境故事帶你入門30

1 則留言

0
F566
iT邦新手 5 級 ‧ 2021-07-19 17:40:01

『我要解答』

我要留言

立即登入留言