資料分析 | Python新手村03_迴圈

閱讀時間約 6 分鐘
上一篇介紹了 Python 中的條件判斷,方法是透過了自動程式條件式判斷,以不同劇本的方式來執行動作。然而實際情況下,我們還常會遇到一種問題,就是必須重複執行某些相同的步驟,而迴圈(loop)的設計就是為了解決此「重複執行」的一種控制結構,讓我們可以在條件符合的情況下利用迴圈執行資料的輸入、處理與輸出。

單層for-loop

第一類介紹的是單層for-loop,通常應用於我們有預想重複幾次,來限制迴圈總數,最普遍的方式就是搭配range()函數。
range(start, stop[, step])

start:計數從start開始。默認是從0開始,例如:range(5)就等於range(0, 5)
stop:計數到stop結束,但不包括stop,例如:range(0,5)就是[0, 1, 2, 3, 4],但沒有包括5
step:步長,默認為1
第一種示範:
for i in range(5):
print(i)
打印結果為:
0
1
2
3
4
第二種示範:
for i in range(10, 20):
print(i)
打印結果為:
10
11
12
13
14
15
16
17
18
19
第三種示範:
for i in range(100, 90, -1):
print(i)
打印結果為:
100
99
98
97
96
95
94
93
92
91
另外,for迴圈還可以使用字串「string」上:
for word in "Hello! World!":
print(word)
此方式就是將這個字串「string」當作一個list,打印結果就為此string字元數的拆解:
H 
e 
l 
l 
o 
! 
 
W 
o 
r 
l 
d 
!
再來我們嘗試個複雜點的範例,假如我們要計算1~10的數字加總,該怎麼做呢?
sum = 0
for i in range(1,11):
sum += i
print(f"1~10:{sum}")
打印結果就為:
1~10:55
稍微改裝一下,不要侷限只能加總1~10,假如我想1加到100,或是1加到50,有沒有更靈活的方式呢?
n = int(input("請輸入1~值:"))
sum = 0
for i in range(1,n+1):
sum += i
print(f"1~{n}:{sum}")
輸入n=50,得出的打印結果為:
1~50:1275

巢狀for-loop

「巢狀for-loop」的特點就是在主要迴圈中又包覆著其他的迴圈。當內層迴圈將我們定義的重複次數完成後,才會跳回到外層迴圈執行動作。
「九九乘法表」由於具備了九列九行的計算資料,所以就為一個使用兩層巢狀迴圈結構的極佳範例。
for i in range(1,10):
for j in range(1,10):
print(f"{i}{j}={i*j}",end="\t") #換行
print()
執行的打印結果為:
1*1=1	1*2=2	1*3=3	1*4=4	1*5=5	1*6=6	1*7=7	1*8=8	1*9=9
2*1=2	2*2=4	2*3=6	2*4=8	2*5=10	2*6=12	2*7=14	2*8=16	2*9=18
3*1=3	3*2=6	3*3=9	3*4=12	3*5=15	3*6=18	3*7=21	3*8=24	3*9=27
4*1=4	4*2=8	4*3=12	4*4=16	4*5=20	4*6=24	4*7=28	4*8=32	4*9=36
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	5*6=30	5*7=35	5*8=40	5*9=45
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	6*7=42	6*8=48	6*9=54
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	7*8=56	7*9=63
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	8*9=72
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81

while-loop

另一種就是迴圈結構就式「while-loop」,for-loop的處理問題主要是放在解決「已知的重複迴圈數」,而while-loop則適用解決「無法預知的重複迴圈數」
while-loop在執行內部敘述動作前,需事先檢查條件判斷式,如果判斷值為真(True),就重複迴圈loop,只有當達到指定的特殊狀況時(False),才結束跳出迴圈。
舉個工作儲蓄的小例子,假設我們定義的儲蓄目標為10萬元,而每個月扣掉支出後能存下來的金額,並無法預先知道,所以只要累積加總達到10萬元時,停止結束執行動作,此時while-loop就相當適合解決此類的問題。
total = 0
n = 0
while total < 100000:
n += 1
temp = int(input(f"請輸入第{n}月儲存的金額:"))
total += temp

print(f"已經存了{n}個月,存款共為{total}")
所以我們假設前四次的儲存金額各為5萬元、3萬元、1萬元、3萬元,此時判斷式total < 100000為False,跳出迴圈並執行打印的結果:
已經存了4個月,存款共為120000
最後,我們還可以加上break指令,並搭配先前所學過的if換另一個敘述來做呈現:
break:中斷迴圈的執行並跳脫迴圈結構,繼續執行迴圈外的敘述。
#使用break,跳出迴圈
total = 0
n = 0
while True:
    n += 1
    temp = int(input(f"請輸入第{n}月儲存的金額:"))
    total += temp
    if total >= 100000:
        break
print(f"已經存了{n}個月,存款共為{total}")
以上,就為程式語言中使用相當頻繁的迴圈控制(loop),其它更進階的部份,下回再做分享囉,謝謝大家!💪
為什麼會看到廣告
avatar-img
32會員
39內容數
在瞬息萬變的數位宇宙中,不堅持永遠的Yes或No,自許以流量成長的阿甘精神,碰撞激盪出各種有趣的科技行銷手法,涵蓋產品數據、社群互動、廣告技術、內容創造、會員經營...等面向,一點一滴的帶大家進入產品Martech的領域中。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
我吃故窩宅的沙龍 的其他內容
經歷過第一次的課程內容後,我們已經初步理解到Python的基本運算功能,接下來就要開始進入到高階語言都有的程式控制邏輯,先來個小小開胃菜—條件判斷。 if敘述 直接來帶範例會比較清楚理解: 第一次我們輸入國文分數為50分,由於數值50並沒有大於60,第一個if敘述的condition條件判斷就會是F
前幾年因為工作方面的需求,花了一些時間自學了Python,進行網站爬蟲與資料分析,但近期由於職務的轉換,Python的實作應用機會減少了許多,對於code撰寫的敏感度也因此降低不少,趁著上個月看到勞動力職能發展協會官網有一門新課程「Python大數據資料探勘分析應用班」正在線上招生,想說既然政府與公
近幾年來,市面上總不乏出現各種新名詞,「類火車」、「微解封」、「類普篩」、「元宇宙」、「大數據」...等,這些排山倒海的資訊,讓我們深怕自己一不小心沒跟上,會錯過了世代更迭的腳步,其中,特別是「大數據」這三個字流行最久,也是目前影響企業最深。以台灣市場來說,各類領域的企業,假如發展策略沒有跟大數據扯
市場區隔是什麼? 例如,汽車的TA就可以很清楚的區分為「小資族群」、「親子家庭」、「冒險越野」、「都市貴族」...等,而企業就會因應生產各系列的車款,而這些車款就會呈現出不同的品牌印象、價位區間以及功能訴求。 有效市場區隔的條件 我們都愛用甚麼變數來區隔市場 特徵分群 行為分群 區隔分析範例 小結
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
最近在公司跟資料科學家一起討論了產品推薦機制的運作邏輯,才開始理解了甚麼是關聯分析(Associative Analysis),覺得挺有趣的,想說把學習心得記錄下來,藉此機會跟大家分享。 接著下來,我們就以「樂屋網」產品的使用者行為資料庫,做為假設的範例,進行簡單的解釋說明。 條件機率與貝氏定理
經歷過第一次的課程內容後,我們已經初步理解到Python的基本運算功能,接下來就要開始進入到高階語言都有的程式控制邏輯,先來個小小開胃菜—條件判斷。 if敘述 直接來帶範例會比較清楚理解: 第一次我們輸入國文分數為50分,由於數值50並沒有大於60,第一個if敘述的condition條件判斷就會是F
前幾年因為工作方面的需求,花了一些時間自學了Python,進行網站爬蟲與資料分析,但近期由於職務的轉換,Python的實作應用機會減少了許多,對於code撰寫的敏感度也因此降低不少,趁著上個月看到勞動力職能發展協會官網有一門新課程「Python大數據資料探勘分析應用班」正在線上招生,想說既然政府與公
近幾年來,市面上總不乏出現各種新名詞,「類火車」、「微解封」、「類普篩」、「元宇宙」、「大數據」...等,這些排山倒海的資訊,讓我們深怕自己一不小心沒跟上,會錯過了世代更迭的腳步,其中,特別是「大數據」這三個字流行最久,也是目前影響企業最深。以台灣市場來說,各類領域的企業,假如發展策略沒有跟大數據扯
市場區隔是什麼? 例如,汽車的TA就可以很清楚的區分為「小資族群」、「親子家庭」、「冒險越野」、「都市貴族」...等,而企業就會因應生產各系列的車款,而這些車款就會呈現出不同的品牌印象、價位區間以及功能訴求。 有效市場區隔的條件 我們都愛用甚麼變數來區隔市場 特徵分群 行為分群 區隔分析範例 小結
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
最近在公司跟資料科學家一起討論了產品推薦機制的運作邏輯,才開始理解了甚麼是關聯分析(Associative Analysis),覺得挺有趣的,想說把學習心得記錄下來,藉此機會跟大家分享。 接著下來,我們就以「樂屋網」產品的使用者行為資料庫,做為假設的範例,進行簡單的解釋說明。 條件機率與貝氏定理
你可能也想看
Google News 追蹤
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }