###### tags: `python` # 流程控制 * 選擇結構 * if * if ... else ... * if ... elif ... else * * 迴圈結構 * for * while --- ## if ```python= x =30 y = 20 if x > y: print("x>y") ``` ## if ... else ```python= x = 10 y = 20 if x > y: print("x>y") else: print("x<y") ``` ## 練習(請使用者輸入2個數字,請電腦判斷大小) ```python= x = float( input("請輸入數字1: ") ) y = float( input("請輸入數字2: ") ) if x > y: print("數字1 > 數字2") else: print("數字2 > 數字1") ``` ## if ... elif ... else (類似其他語言的switch語法) ```python= score = float(input("請輸入數字: ")) if score >= 90: print("優等") elif score < 90 and score >= 80: print("甲等") elif score < 80 and score >= 70: print("乙等") elif score < 70 and score >= 60: print("丙等") else: print("不及格") ``` ## for ```python= for i in range(5): print(i) ``` ```python= list1 = ["貓", "狗", "花", "鳥"] for name in list1: print(name) ``` ## 補充 range ```python= range(5) # 0,1,2,3,4 range(5, 10) # 5,6,7,8,9 range(5, 10, 2) # 5,7,9 ``` ## while ```python= i = 0 while i<5: print(i) i = i + 1 ``` ```python= while True: num = int(input("number: ")) if num == -1: break print(num) ``` ## 練習 ```python= score = 0 while score >= 0: score = float(input("請輸入數字: ")) if score >= 90: print("優等") elif score < 90 and score >= 80: print("甲等") elif score < 80 and score >= 70: print("乙等") elif score < 70 and score >= 60: print("丙等") else: print("不及格") ``` ## 課堂練習 - 猜數字 ```python= import random num = random.randint(1, 100) answer = -1 while answer != num: answer = float(input("請猜1-100的數字: ")) if answer > num: print("太大了") elif answer < num: print("太小了") else: print("猜中了") ``` ## break(停止迴圈) ```python= import random num = random.randint(1, 100) answer = -1 while answer != num: answer = float(input("請猜1-100的數字: ")) if answer == -1: break if answer > num: print("太大了") elif answer < num: print("太小了") else: print("猜中了") ``` ```python= for i in range(10): if i == 5: break print(i) ``` 執行結果:到5時停止迴圈 ``` 0 1 2 3 4 ``` ## continue(跳過這次,繼續執行下個循環) ```python= for i in range(10): if i == 5: continue print(i) ``` 執行結果:少印5 ``` 0 1 2 3 4 6 7 8 9 ``` ## pass(跳過) 當有時候暫時不確定要寫什麼,卻又一定要寫時使用 常用於if, for, while, 函數, 類別 必須縮排的情境 ```python= for i in range(10): if i == 5: pass print(i) ``` 執行結果:完全不影響任何結果 ``` 0 1 2 3 4 5 6 7 8 9 ``` ## 練習 **Q: 使用者輸入一個數值,顯示乘以1~10的結果** ``` 請輸入一個數字: 6 6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54 6 x 10 = 60 ``` **Q:請印出99乘法表** ```python= for i in range(1, 10): for j in range(1, 10): print(i , "*", j, "=", i*j) ``` **Q:製作猜數字遊戲** 電腦亂數產生四個不重複數字,讓玩者去猜。 當使用者猜到該數字得B,當猜到數字且位置也正確得A 每次猜測電腦會回饋得到幾個A幾個B 直到使用者猜到正確數字為止 ```python= import random numbers = [str(i) for i in range(10)] answer = [str(i) for i in random.sample(range(0, 9), 4)] # for i in range(4): # answer.append(numbers.pop(random.randrange(len(numbers)))) while True: A = 0 B = 0 guess = input('請輸入不重複的四位數數字: ') if len(set(guess)) != 4: print("數字不正確,太少、太多或數字重複!請重新輸入") continue elif not guess.isdecimal(): print('包含文字,請重新輸入數字') continue for i in range(4): if guess[i] in answer: if guess[i] == answer[i]: print(guess[i], "is A") A += 1 else: print(guess[i], "is B") B += 1 print(f'{A}A{B}B') if A == 4: print("恭喜,你猜中了!!") break ``` --- ## 進階練習 **Q: 請用迴圈功能畫出半顆聖誕樹的樣子** ``` * ** *** ** *** **** ***** ** *** **** ***** ****** ** ** ** ``` **A:** ```python= level = [6, 10, 14] row = '*' print(row) for i in level: for j in range(0, i, 3): row += '*' print(row) row = '*' for i in range(3): print('**') ``` ---- **Q: 請用迴圈功能畫出完整聖誕樹的樣子** ``` * *** ***** *** ***** ******* ********* *** ***** ******* ********* *********** *** *** *** ``` **A:** ```python= level = [6, 10, 14] row = '*' maxNum = level[-1] space = ' ' * ((maxNum - 2) // 2) print(space + row) for i in level: for j in range(0, i, 3): row += '**' space = ' ' * ((maxNum - len(row)) // 2) print(space + row) row = '*' space = ' ' * ((maxNum - 3) // 2) for i in range(3): print(space + '***') ```