# 迴圈 ## for 迴圈 - for 迴圈通常用於遍歷序列(如 list、tuple、字串等)中的每個元素 - Python 的 for 是直接接受一個 list,來一個一個取出來進行處理 - ![upgit_20240813_1723541309.png](https://raw.githubusercontent.com/kcwc1029/obsidian-upgit-image/main/2024/08/upgit_20240813_1723541309.png) ## range函數 - 他是一個等差數據 `range(start, stop, step)` ```python n = 10 for number in range(n): # for迴圈 print("*",end="") # 列印星號 ``` ```python n = 10 sum_ = 0 # sum是內建函數, 不適合當作變數, 所以加上 _ for num in range(1,n+1): sum_ += num print("總和 = ", sum_) # 總和 = 55 ``` ```python= for num in range(1,10,2): print(num) # 1 # 3 # 5 # 7 # 9 ``` ## `break` 和 `continue` - `break` 和 `continue` 是用於控制循環流程的關鍵字。 - `break` 用於立即退出整個循環。 - `continue` 用於跳過本次循環,進入下一次循環。 ```python # 使用 break for i in range(5): if i == 3: break print(i) # 輸出: 0 1 2 # 使用 continue for i in range(5): if i == 3: continue print(i) # 輸出: 0 1 2 4 ``` ## while 迴圈 - while 迴圈則根據一個條件來重複執行程式碼。 ![upgit_20240813_1723541364.png](https://raw.githubusercontent.com/kcwc1029/obsidian-upgit-image/main/2024/08/upgit_20240813_1723541364.png) ```python count = 0 while count < 5: print(count) count += 1 # 0 # 1 # 2 # 3 # 4 ``` ## `pass` - `pass` 是 Python 中的一個空語句,它什麼也不做。 ## 迴圈的相關函數(enumerate()) - zip():用於將多個序列打包成一個個元組。- - enumerate()` 函數用於在遍歷序列時獲取元素的索引和值。 # 陣列(list) ## list的特性 - 可以儲存多個資料 - 屬於序列結構 - 值是可變的(Modifiable) ## 基本list輸出 ## 串列索引與切片 ```python= arr = ["助教", "丁丁","迪西", "拉拉", "小波"] # 索引 print(arr[0]) print(arr[1]) print(arr[-1]) # 切片 print(arr[0:3]) print(arr[1:4]) ``` ## 串列相加與相乘 ```python= # 串列相加 arr1 = ["拉拉", "小波"] arr2 = ["助教", "丁丁"] arr1 += arr2 print(arr1) # ['拉拉', '小波', '助教', '丁丁'] # 串列相乘 arr = ["助教", "丁丁","迪西", "拉拉", "小波"] print(arr*3) # ['助教', '丁丁', '迪西', '拉拉', '小波', '助教', '丁丁', '迪西', '拉拉', '小波', '助教', '丁丁', '迪西', '拉拉', '小波'] # 串列乘以數字 nums = [1, 3, 5] numslist = nums * 5 print(numslist) # [1, 3, 5, 1, 3, 5, 1, 3, 5, 1, 3, 5, 1, 3, 5] ``` - 判斷串列為空 - 找出串列位置 - 尋找第一次出現的位置。 - 陣列元素 ## 串列其他函數 因為...實在太多了拉(奪門而出 就...請同學幫幫忙,花個時間看一下 - len() - indexing - count() - set() - insert() - remove() - clear() - reverse() - append() - pop() - copy() 額外的一些函數: - lower(), upper() - title(), - rstrip(), lstrip(), strip() - center(), rjust(), ljust() - startwith(), endwith() - replace() 參考教學: - https://www.youtube.com/watch?v=0yySumZTxJ0 - https://www.youtube.com/watch?v=orCsnSHc8Mo ```python= arr = [23, 19, 22, 31, 18] games = len(arr) # 獲得場次數據 print(f"經過 {games} 場比賽最高得分 = {max(arr)}") print(f"經過 {games} 場比賽最低得分 = {min(arr)}") print(f"經過 {games} 場比賽得分總計 = {sum(arr)}") ``` ## 新增元素(append, insert) - 增加串列元素 - 插入串列元素 ## 刪除元素(del, pop) - 使用索引刪除元素 - 刪除全部元素 - 使用值刪除元素 ## 元素排序 - sort(): 直接改變陣列 - sorted(): 反之,未改變原本陣列 ## 二維陣列 ![upgit_20240813_1723541468.png](https://raw.githubusercontent.com/kcwc1029/obsidian-upgit-image/main/2024/08/upgit_20240813_1723541468.png) ```python= sc = [['同學一', 80, 95, 88, 0], ['同學二', 98, 97, 96, 0], ] sc[0][4] = sum(sc[0][1:4]) sc[1][4] = sum(sc[1][1:4]) print(sc[0]) # ['同學一', 80, 95, 88, 263] print(sc[1]) # ['同學二', 98, 97, 96, 291] ``` # 元組 ## 定義tuple * Tuple是一種不可變的有序集合, * len() * indexing * count() * set() ## 基本用法 ```python= arr = ("助教", "丁丁","迪西", "拉拉", "小波") print(type(arr)) # <class 'tuple'> ``` ## 遍歷所有元素 ```python arr = ('magic', 'xaab', 9099) # 定義元組元素是字串與數字 for i in arr: print(i) ``` ## list與tuple互換 ```python arr_tuple = ["助教", "丁丁","迪西", "拉拉", "小波"] arr = list(arr_tuple) arr.append("成龍") print(arr) # ['助教', '丁丁', '迪西', '拉拉', '小波', '成龍'] ``` ## 讀取tuple ```python arr = ("助教", "丁丁","迪西", "拉拉", "小波") print(arr[0]) # 助教 ``` ## tuple切片 ```python arr = ("助教", "丁丁","迪西", "拉拉", "小波") print(arr[1:3]) # ('丁丁', '迪西') print(arr[:2]) # ('助教', '丁丁') print(arr[1:]) # ('丁丁', '迪西', '拉拉', '小波') print(arr[-2:]) # ('拉拉', '小波') print(arr[0:5:2]) # ('助教', '迪西', '小波') ``` ## tuple解包與打包 Lab04作業題目 - 繳交方式 :請到https://140.116.179.59:8080完成作業題目,並將程式碼加上註解(你的理解),很重要,否則助教有權利扣你分數 - 禁止抄襲,否則助教會來查水表 - 題目為基本題6題+一題加分題,共7題 - Lab04_01至Lab04_05,一題16分 ==(不符規定九折,未註解七折,遲交六折)== - Lab04_06,一題20分 ==(不符規定九折,未註解七折,遲交六折)== - 加分題直接列入期末成績計算 - github檔名格式: - 每一個檔案為:Lab04_OO.py - 所有檔案放入資料夾學號_Lab04在將資料夾上傳