{%hackmd @themes/orangeheart %} ## wk05_1005_迴圈 ### 醫放三 B1003210 應雨岑 1. Range函式 2. for ## 今日課程內容 <pre> 4.1 range 函式 -認識 range 函式 -range 函式的語法 4.2 for 迴圈 -巢狀 for 迴圈 -break 命令 -continue 命令 4.3 while 迴圈 </pre> ## NOTE <pre> 串列list用中括弧括起來 list(range(1,10,1)) #從1開始做到10,但10沒有執行,最後一個1是間隔數 for和其他語法(if,else,elif)一樣,他同樣也是需要用到:還有縮排來寫程式 可以使用巢狀for </pre> ## [ INCLASS PRACTICE ] ```python #方法一 print("*") print("**") print("***") print("****") print("******") #方法二 print("*"*1) print("*"*2) print("*"*3) print("*"*4) print("*"*5) #方法三 for 迴圈 for i in [1,3,5,7,9]: print(":) "*i) print(":( "*(i+1)) ``` * ** *** **** ****** * ** *** **** ***** :) :( :( :) :) :) :( :( :( :( :) :) :) :) :) :( :( :( :( :( :( :) :) :) :) :) :) :) :( :( :( :( :( :( :( :( :) :) :) :) :) :) :) :) :) :( :( :( :( :( :( :( :( :( :( ```python a="*" b=500 print(a*b) ``` ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ```python c1="me" c2="A" c3="B" c4="D" c=["me", "A", "B", "D"] #串列list用中括弧括起來 print(c1,c2,c3,c4) print(c) ``` me A B D ['me', 'A', 'B', 'D'] ```python a=list(range(10)) #從0開始顯示10個數字 b=list(range(1,10,1)) #從1開始做到10,但10沒有執行,最後一個1是間隔數 print(a) print(b) for i in range(1,11): print("$"*i) ``` [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] $ $$ $$$ $$$$ $$$$$ $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$ ```python #未使用迴圈 n=10 ttl=1 ttl=ttl+2 ttl=ttl+3 ttl=ttl+4 ttl=ttl+5 ttl=ttl+6 ttl=ttl+7 ttl=ttl+8 ttl=ttl+9 ttl=ttl+10 print(ttl) #使用迴圈 n=int(input("輸入迴圈幾次?")) t=0 for i in range(1,n+1): t=t+i print(t) # tt=0 for i in range(1,10001,2): tt=i+tt print(tt) #單數 tt=0 for i in range(1,11,2): tt=i+tt print(tt) #雙數 ttt=0 for i in range(2,11,2): ttt=i+ttt print(ttt) ``` 55 輸入迴圈幾次?10 55 25000000 25 30 ```python #要1-100,3,5的倍數做加總 tttt=0 for i in range(1,10001): if i%3==0 or i%5==0: tttt+=i print(tttt) #使用者輸入 range1=int(input("請輸入範圍")) a1=int(input("請輸入要被整除的數1")) a2=int(input("請輸入要被整除的數2")) tttt=0 for i in range(1,range1+1): if i%a1==0 or i%a2==0: tttt+=i print(tttt) ``` 23341668 請輸入範圍10000 請輸入要被整除的數13 請輸入要被整除的數25 23341668 ```python a=2 b=9 for j in range(2,9+1): print("這是",j,"的乘法") for i in range(1,b+1): print(a,"*",i,"=",a*i) # print(i,a,b) ``` 這是 2 的乘法 這是 3 的乘法 這是 4 的乘法 這是 5 的乘法 這是 6 的乘法 這是 7 的乘法 這是 8 的乘法 這是 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 ```python a=2 b=9 for j in range(2,9+1): print("這是",j,"的乘法") for i in range(1,b+1): print(j,"*",i,"=",j*i) ``` 這是 2 的乘法 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 的乘法 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 的乘法 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 的乘法 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 的乘法 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 的乘法 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 的乘法 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 的乘法 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 #自己練習的99乘法表 for i in range(1,10): print("乘法表",i) for j in range(1,10): print("%d * %d = %d" %(i,j,i*j)) j+=1 i+=1 ``` 乘法 1 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 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 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 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 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 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 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 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 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 ## 全部的note <pre> 計算符號之間可以加空白鍵 <br> ** : 幾次方<br> sep="." : 分隔符號為. end="/" : 結束用/結束 在print內寫入%d : 放入參數答案 (最後在答案要加%) %s : 放入的答案為字串 %f : 放入的答案包含全部小數點 %.1f : 包含 1位小數點 %.3f : 包含 3位小數點 寫法如下- print("身高為%d cm,體重為%d kg,BMI為%.1f " % (height,weight,bmi)) print("顯示的文字",參數名字)<br> my_height = input("請輸入身高(cm)") : 可以輸入文字進去對話框 使用者輸入的文字要轉換成"int" ()<br> print("姓名 成績") print("%3s %3d"%(name1,score1)) #按照字元數進行規則排列出一格表格格式 **次方 //整除的數 /除以 %餘數 and 放在兩個運算子中間,判斷True or False,當兩個都為True才會是True or 放在兩個運算子中間,判斷True or False,當兩個都為False才會是False if,else,elif需使用冒號:還有縮排來寫code .upper可以讓程式不用判斷大小寫 串列list用中括弧括起來 for和其他語法一樣,他同樣也是需要用到:還有縮排來寫程式 </pre> ## [ afterclass practice ] > 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) > 2. 教學影音 lesson 9 * ## 綜合演練 ### ( C ) 1. 執行下列程式,下列結果何者正確? list1 = range(5) print(list(list1)) (A) [1, 2, 3, 4] (B) [ 1, 2, 3, 4,5] (C) [0, 1, 2, 3, 4] (D) [0, 1, 2, 3, 4,5] #### 因為是從0開始總共顯示5個數,因此為[0,1,2,3,4] ```python list1 = range(5) print(list(list1)) ``` [0, 1, 2, 3, 4] ### ( A ) 2. 執行下列程式,下列結果何者正確? list1=range(6,0,-2) print(list(list1)) (A) [6, 4, 2] (B) [6, 0, -2] (C) [6, 4, 2, 0] (D) [6, 4, 2, 0, -2] #### 因為從6開始總共顯示到0,但0不包含,因此為[6,4,2] ```python list1=range(6,0,-2) print(list(list1)) ``` [6, 4, 2] ### ( B ) 3. 執行下列程式,結束迴圈後,n 的值為多少? for n in range(1,5,2): print(n,end=" ") print("結束迴圈後 n=",n) (A) 1 (B) 3 (C) 5 (D) 7 #### 因為第一次執行是n=1,第二次執行是n=1+2=3,且n會<5因此總共只有跑兩次,答案為3 ```python for n in range(1,5,2): print(n,end=" ") print("結束迴圈後 n=",n) ``` 1 3 結束迴圈後 n= 3 ### ( A ) 4. 執行 for 廻圈時,如果想要提前離開廻圈,應使用何種指令? (A) break (B) return (C) exit (D) pause #### 如下所示,只有跑到3就停止迴圈 ```python for i in range(1,100001): print(i) if i==3: break ``` 1 2 3 ### ( C ) 5. 執行下列程式,下列結果何者正確? list1 = range(5,-1,-2) print(list(list1)) (A) [5,-1,-2] (B) [ 5,4,3,2,1,0,-1] (C) [5, 3, 1] (D) [5,3,1,-1] #### 因為這樣就等於是print(list(range(5,-1,-2))),所以就是從5開始總共顯示到-1,但-1不包含,且每次都要-2,因此為[5,3,1] ```python list1 = range(5,-1,-2) print(list(list1)) ``` [5, 3, 1] ### ( B ) 6. while 廻圈若一開始測試條件就不成立,則 while 內程式區塊將會如何處理? (A) 執行一次 (B) 一次都不執行 (C) 重複執行 (D) 編譯錯誤 #### 因為不成立所以就不會執行 ## ** ### ( D ) 7. 下列那一個指令可在廻圈中跳過後面的敘述直接回到廻圈的開頭? (A) exit (B) return (C) pause (D) continue #### 因為continue會跳過當次循環中的當個迴圈(i),進到下一迴圈(i+1),然後會回上一層繼續執行迴圈外的程式 ### ( C ) 8. 執行下列程式,結束迴圈後,sum 的值為多少? sum = 0 n=8 for i in range(1, n+1,2): sum += i print(sum) (A) 8 (B) 9 (C) 16 (D) 28 #### 他會執行i=1,3,5,7,而第一次是sum=0+1,第二次sum=1+3,第三sum=4+5,第四sum=9+7,因此答案為16 ```python sum = 0 n=8 for i in range(1, n+1,2): sum += i print(sum) ``` 16 ### ( D ) 9. 執行下列程式,可看到多少個「#」字? n=5 for i in range(1,n): for j in range(1,i+1): print("#", end="") print() (A) 5 (B) 6 C) 7 (D) 10 #### 因為i=1時印一個#,i=2時印兩個#,i=3時印三個#,i=4時印四個#,則共10個 ```python n=5 for i in range(1,n): for j in range(1,i+1): print("#", end="") print() ``` # ## ### #### ### ( C ) 10. 執行下列程式,結束迴圈後,total 的值為多少? total = i = 1 n=5 while(i<=n): total *= i i+=1 print(total) (A) 5 (B) 24 (C) 120 (D) 720 #### 因為當i=1時執行total=1x1=1之後i+1,當i=2時執行total=1x2=2之後i+1,當i=3時執行total=2x3=6之後i+1,當i=4時執行total=6x4=24之後i+1,當i=5時執行total=24x5=120之後i+1,但是現在i=6了不符合條件因此跳出迴圈了,所以最後答案是120 ```python total = i = 1 n=5 while(i<=n): total *= i i+=1 print(total) ``` 120 * ## 教學影音 lesson 9 這部影片有先介紹這周上課所教的for,之後開始說明while,break,and coutinue,首先是while,他和for最大的不同點是他是用於不確定的迴圈數裡面,真正決定他次數的是while的條件,因為如果不符合條件時就會跳出迴圈了,結束執行了,因此說是用在不確定樹木的迴圈;另外則是break,and coutinue,他們的功用主要是用在要不要繼續執行迴圈內的程式,或是結束執行後要再從哪個迴圈開始執行。 ## [ self practice ] * TA專區的【10/5課程延伸】座位挑戰 ```python for i in range(5,0,-1): if (j<=i): for j in range(1,i+1,1): print("* "*i) print("\n") break ``` * * * * * * * * * * * * * * * * 延伸上題,類似課本實作題3 ```python num=int(input("請輸入數字")) for i in range(num,0,-1): print("*"*i) ``` 請輸入數字8 ******** ******* ****** ***** **** *** ** * * 實作4 : ```python """ 小杰在for迴圈中使用or運算 if( i % 3 ==0 or i % 7 ==0), 求出數值 1~100中,所有是3或7倍數的數之總和 """ total=0 for i in range(1,101): if( i % 3 ==0 or i % 7 ==0): total=total+i continue print("3或7倍數的數之總和為",total) ``` 3或7倍數的數之總和為 2208 * 實作5: ```python """ 一個正整數除了1和自己外,無法再被其他數整除,這個數就是質數。 請輸入一正整數,列出此數的所有正因數,並判斷使數字是否為質數 """ aa=int(input("請輸入一正整數")) count=0 print("因數有\n1") for i in range(2,aa): if aa%i!=0: #不整除 count+=0 else: count+=1 print(i) if count==0: print(aa,"\n因為除了1和自己外,無法再被其他數整除,所以是質數") else: print(aa,"\n不是質數") ``` 請輸入一正整數13 因數有 1 13 因為除了1和自己外,無法再被其他數整除,所以是質數
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up