###### tags: `python` ## wk06_1012 迴圈 while , break, continue 1. break 2. continue 3. while ## 【inclass practice】 ```python #6. 最小公倍數 \<multiple> #a = int(input("請輸入 a 的值:")) #b = int(input("請輸入 b 的值:")) a = 5 *19 b = 17 maxno = a * b for i in range(1, maxno + 1): if(i % a == 0 and i % b == 0): break print("%d 和 %d 的最小公倍數=%d" % (a, b, i)) ``` 95 和 17 的最小公倍數=1615 ```python # 7. 顯示正整數數列,排除5的倍數 \<except5> #n = int(input("請輸入正整數:")) n = 6 for i in range(1, n+1): if i % 5 ==0: continue print(i,end=" ") ``` 1 2 3 4 6 ```python p=1 counter=0 #n = int(input("請輸入正整數:")) n = 10 print(n,"的因數有",end=" ") while (p<=n): if (n%p==0): print(p,end=" ") counter+=1 p+=1 print() if (counter==2): print(n,"是質數") else: print(n,"不是質數", "因數有", counter, "個") ``` 10 的因數有 1 2 5 10 10 不是質數 因數有 4 個 ```python #1. 觀察各種不同參數的以range()建立的數列 \<range> list1=range(10) list2=range(1,10) list3=range(1,10,2) list4=range(10,1,-2) print(list(list1)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list(list2)) # [1, 2, 3, 4, 5, 6, 7, 8, 9] print(list(list3)) # [1, 3, 5, 7, 9] print(list(list4)) # [10, 8, 6, 4, 2] ``` [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 3, 5, 7, 9] [10, 8, 6, 4, 2] ```python # 5. 九九乘法表 <ninenine> for i in range(1,10): for j in range(1,10): product = i * j #print("%d*%d=%2d " % (i, j, product), end="") print(i, "*", j , "=", i * j) 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 ```python # 5. 九九乘法表 <ninenine> for i in range(1,10): for j in range(1,10): product = i * j print("%d*%d=%2d " % (i, j, product), end="") 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 ```python # 5. 九九乘法表 <ninenine> for i in range(1,10): for j in range(1,10): product = i * j print("%d*%d=%2d " % (j, i, product), end="") print() ``` 1*1= 1 2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9 1*2= 2 2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18 1*3= 3 2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27 1*4= 4 2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 ```python ``` ```python ``` ### 補充 while 1. 猜數字遊戲:寫一個程式,隨機選擇一個1到100的數字,然後要求玩家通過輸入猜測該數字,直到猜對為止。使用while迴圈來實現,並在玩家猜對時結束遊戲。 2. 使用者輸入:寫一個程式,要求使用者輸入一個整數,然後使用while迴圈,只有當輸入的數字是正整數時,才繼續請求輸入。如果輸入不是正整數,則繼續要求輸入,直到收到正確的輸入。 3. 倒數計時器:寫一個程式,請求使用者輸入一個正整數作為倒數計時的秒數,然後使用while迴圈從輸入的秒數倒數到0。在每個秒數的間隔打印出剩餘的秒數。 4. 累積加法:寫一個程式,要求使用者不斷輸入整數,並使用while迴圈計算這些整數的總和。當使用者輸入0時,停止接受輸入並印出總和。 5. 數字猜謎:寫一個程式,在1到10之間選擇一個隨機數字,然後要求玩家通過輸入猜測該數字。使用while迴圈來實現,並提供猜測是太高還是太低的提示,直到猜對為止。 ```python import time #countdown = int(input("請輸入倒數的秒數:")) countdown = 3 while countdown > 0: print(countdown) time.sleep(1) countdown -= 1 print("時間到!") ``` 3 2 1 時間到! ```python total = 0 while True: #num = int(input("請輸入一個整數(輸入0結束):")) num=0 if num == 0: break total += num print(f"總和:{total}") ``` 總和:0 ```python user_input = None while not user_input: #user_input = input("請輸入一個正整數:") user_input = 10 if user_input.isdigit(): user_input = int(user_input) else: user_input = None print("請輸入正確的整數。") print(f"您輸入了正整數:{user_input}") ``` --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-10-7f2f1f5f6786> in <module> 4 #user_input = input("請輸入一個正整數:") 5 user_input = 10 ----> 6 if user_input.isdigit(): 7 user_input = int(user_input) 8 else: AttributeError: 'int' object has no attribute 'isdigit' ```python import random # 生成隨機數字 #target_number = random.randint(1, 100) target_number = 100 guess = None attempts = 0 while guess != target_number: #guess = int(input("請猜一個1到100的數字:")) guess = 100 attempts += 1 if guess < target_number: print("太低了!再猜一次。") elif guess > target_number: print("太高了!再猜一次。") print(f"恭喜!你猜對了,答案是{target_number}。你總共猜了{attempts}次。") ``` ```python import random # 生成隨機數字 #target_number = random.randint(1, 10) target_number = 10 guess = None while guess != target_number: #guess = int(input("請猜一個1到10的數字:")) guess = 10 if guess < target_number: print("太低了!再猜一次。") elif guess > target_number: print("太高了!再猜一次。") print(f"恭喜!你猜對了,答案是{target_number}。") ``` ## 【afterclass practice】 1. 複習ch03、ch04 2. 教學影音 lesson 7、9