tags: python

流程控制

  • 選擇結構
    • if
    • if else
    • if elif else
  • 迴圈結構
    • for
    • while

if

x =30 y = 20 if x > y: print("x>y")

if else

x = 10 y = 20 if x > y: print("x>y") else: print("x<y")

練習(請使用者輸入2個數字,請電腦判斷大小)

x = float( input("請輸入數字1: ") ) y = float( input("請輸入數字2: ") ) if x > y: print("數字1 > 數字2") else: print("數字2 > 數字1")

if elif else (類似其他語言的switch語法)

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

for i in range(5): print(i)
list1 = ["貓", "狗", "花", "鳥"] for name in list1: print(name)

補充 range

range(5) # 0,1,2,3,4 range(5, 10) # 5,6,7,8,9 range(5, 10, 2) # 5,7,9

while

i = 0 while i<5: print(i) i = i + 1
while True: num = int(input("number: ")) if num == -1: break print(num)

練習

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("不及格")

課堂練習 - 猜數字

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(停止迴圈)

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("猜中了")
for i in range(10): if i == 5: break print(i)

執行結果:到5時停止迴圈

0
1
2
3
4

continue(跳過這次,繼續執行下個循環)

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, 函數, 類別 必須縮排的情境

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乘法表

for i in range(1, 10): for j in range(1, 10): print(i , "*", j, "=", i*j)

Q:製作猜數字遊戲
電腦亂數產生四個不重複數字,讓玩者去猜。
當使用者猜到該數字得B,當猜到數字且位置也正確得A
每次猜測電腦會回饋得到幾個A幾個B
直到使用者猜到正確數字為止

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:

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:

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 + '***')