--- tags: python --- # 04_流程控制 ## if-elif-else * 三種判斷條件 ```python # 引入random模組隨機選一種天氣 from random import choice weathers = ["晴天", "多雲", "毛毛雨", "狂風", "暴雨", "下雪", "打雷閃電"] w = choice(weathers) if w == '晴天' or w == '多雲': print('到戶外跑步') elif w == '毛毛雨': print('去健身房') else: print('在家當沙發馬鈴薯') ``` ## 搭配迴圈使用 ### 黑名單處理 ```python mail_list = ['andy@gmail.com', 'ben@gmail.com', 'chris@gmail.com', 'eric@gmail.com'] blocked_list = ['andy@gmail.com', 'chris@gmail.com'] # 預計要寄信的名單 tomail_list = [] for m in mail_list: if m in blocked_list: # 如果此名單有在blocked_list名單內,跳過這圈迴圈 continue tomail_list.append(m) print(tomail_list) # ['ben@gmail.com', 'eric@gmail.com'] ``` ### max(), min()函數背後的原理 ```python nums = [3, 20, -4, 299] # 預設max數字為nums[0] max_num = nums[0] # 預設min數字為nums[0] min_num = nums[0] for num in nums: if num > max_nums: max_num = num if num < min_nums: min_num = num print(max_num) # 299 print(min_num) # -4 # 找出中位數 # 先排序 nums.sort() # 取得中間位置索引值 i = len(nums) // 2 if len(nums) % 2 == 0: # 資料數為偶數,取中間兩位相加除以2 median_num = (nums[mid] + nums[mid - 1]) / 2 else: # 資料數為奇數,取中間值 median_num = nums[mid] print(median_num) # 11.5 ``` ### 列出1到50的質數 ```python ''' 質數定義為只能被自己跟1整除 ''' # 使用一個變數儲存結果 prime_nums = [] # 檢查1到50的數字 for n in range(1, 51): # 列出各自的1以及自己以外的數字 factors = [f for f in range(2, n)] # 先假定n是質數 prime = n # 遍歷n底下的數字 for f in factors: # 如果n可以被其中一數字整除 if n % f == 0: # n 不是質數,使用None設定變數 prime = None # 終止此內部迴圈 break # 如果prime有值(不是None),將變數加到prime_nums if prime: prime_nums.append(prime) # 印出結果 print(prime_nums) ``` ### 終極密碼猜1到100 ```python from random import choice ult_num = choice(range(1, 101)) # 預設遊戲繼續 game = True while game: ans = int(input('猜終極密碼是多少: ')) if ans > ult_num: print('小一點') elif ans < ult_num: print('大一點') else: print(f'恭喜猜對,終極密碼是{ult_num}') game = False ``` ### 與電腦猜拳3勝者為贏家 ```python from random import choice rule = ['剪刀', '石頭', '布'] game = True # 紀錄局數 i = 1 result = [] while game: print(f'第{i}局開始') # 使用try, except檢查輸入值是否為整數 try: player = int(input('輸入一個數字出拳 [1]剪刀; [2]石頭; [3]布: ')) except ValueError: print('請輸入一個整數') print(f'玩家出{rule[player - 1]}') com = choice(range(3)) print(f'電腦出{rule[com]}') if com == player - 1: print('雙方平手') result.append('t') elif (com + 2) % 3 == player -1: print('電腦獲勝') result.append('l') else: print('玩家獲勝') result.append('w') win = result.count('w') lose = result.count('l') tie = result.count('t') print(f'目前戰績玩家{win}勝,電腦{lose}勝,平手{tie}次') print('=' * 35) i += 1 if win == 3: print(f'遊戲結束,玩家獲勝') game = False if lose == 3: print(f'遊戲結束,電腦獲勝') game = False ``` > Written with [StackEdit](https://stackedit.io/). <!--stackedit_data: eyJoaXN0b3J5IjpbMTU2NTkxNjYxOF19 -->