### wk05_1005_迴圈
4.1 range 函式
- 認識 range 函式
- range 函式的語法
4.2 for 迴圈
- 巢狀 for 迴圈
- break 命令
- continue 命令
4.3 while 迴圈
#### 【inclass practice】
###### {範例}
<pre>
1. 觀察各種不同參數的以range()建立的數列 <range>
2. 顯示正整數數列 <numshow>
3. 計算正整數總和 <numtotal>
4. #字直角三角形 <fornest>
5. 九九乘法表 <ninenine>
6. 最小公倍數 <multiple>
7. 顯示正整數數列,排除5的倍數 <except5>
8. while迴圈計算階乘 <while>
</pre>
```python
print("*" * 1)
print("*" * 2)
print("*" * 3)
print("*" * 4)
print("*" * 5)
```
*
**
***
****
*****
```python
a = "*"
b = 500
print(a * b)
```
********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
```python
c1 = "Alex"
c2 = "Martin"
c3 = "Ray"
c = ["Alex", "Martin", "Ray"]
print(type(c))
print(c1, c2, c3)
print(c * 10)
```
<class 'list'>
Alex Martin Ray
['Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray', 'Alex', 'Martin', 'Ray']
```python
list(range(10))
```
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
```python
for i in range(10) :
print ("$" * i)
```
$
$$
$$$
$$$$
$$$$$
$$$$$$
$$$$$$$
$$$$$$$$
$$$$$$$$$
```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)
```
55
```python
n = 10
ttl =0
for i in range(1, 11) :
ttl = i + ttl
print(ttl)
```
55
```python
n = 10
ttl =0
for i in range(1, 10001) :
ttl = i + ttl
print(ttl)
```
50005000
```python
n = 10
ttl =0
for i in range(1, 11, 2) :
ttl = i + ttl
print(ttl)
```
25
```python
odd_num = list(range(1, 11, 2))
print(odd_num)
```
[1, 3, 5, 7, 9]
```python
even_num = list(range(2, 11, 2))
print(even_num)
```
[2, 4, 6, 8, 10]
```python
n = 10
a = 3
b = 5
ttl = 0
for i in range(1,10001) :
if (i % 3 == 0 or i % 5 == 0) :
ttl = i + ttl
print(ttl)
```
23341668
```python
a = 2
b = 9
for i in range(1, b + 1) :
print(a, "*", i, "=", a * i)
print(i, a, b)
```
2 * 1 = 2
1 2 9
2 * 2 = 4
2 2 9
2 * 3 = 6
3 2 9
2 * 4 = 8
4 2 9
2 * 5 = 10
5 2 9
2 * 6 = 12
6 2 9
2 * 7 = 14
7 2 9
2 * 8 = 16
8 2 9
2 * 9 = 18
9 2 9
```python
a = 9
b = 9
for j in range(2, 9 + 1) :
print("This is the multiplication of ", j)
for i in range(1, b +1) :
print( j, "*", i, "=" , j * i)
```
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
This is the multiplication of 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
###### {綜合演練}
<pre>
實作4 :
小杰在for迴圈中使用or運算 if( i % 3 ==0 or i % 7 ==0),
求出數值 1~100中,所有是3或7倍數的數之總和</pre>
```python
sum=0
for i in range(0,101):
if (i%3==0 or i%7==0):
sum += i
print("數值 1~100 中,所有是 3 或 7 倍數的數之總和 =",sum)
```
數值 1~100 中,所有是 3 或 7 倍數的數之總和 = 2208
<pre>
實作5:
一個正整數除了1和自己外,無法再被其他數整除,這個數就是質數。
請輸入一正整數,列出此數的所有正因數,並判斷使數字是否為質數</pre>
```python
p=1
counter=0
n = int(input("請輸入正整數:"))
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,"不是質數")
```
請輸入正整數:10
10 的因數有 1 2 5 10
10 不是質數
#### 【afterclass practice】
1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell )
2. 教學影音 lesson 9
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]
Ans:( C )
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]
Ans:( A )
3. 執行下列程式,結束迴圈後,n 的值為多少?
for n in range(1,5,2):
print(n,end=" ")
print("結束迴圈後 n=",n)
(A) 1 (B) 3 (C) 5 (D) 7
Ans:( B )
4. 執行 for 廻圈時,如果想要提前離開廻圈,應使用何種指令?
(A) break (B) return (C) exit (D) pause
Ans:( A )
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]
Ans:( C )
6. while 廻圈若一開始測試條件就不成立,則 while 內程式區塊將會如何處理?
(A) 執行一次 (B) 一次都不執行 (C) 重複執行 (D) 編譯錯誤
Ans:( B )
7. 下列那一個指令可在廻圈中跳過後面的敘述直接回到廻圈的開頭?
(A) exit (B) return (C) pause (D) continue
Ans:( D )
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
Ans:( C )
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
Ans:( D )
10. 執行下列程式,結束迴圈後,total 的值為多少?
total = i = 1
n=5
while(i<=n):
total *= i
i+=1
print(total)
(A) 5 (B) 24 (C) 120 (D) 720
Ans:( C )
```python
#1.執行下列程式,下列結果何者正確?
list1 = range(5)
print(list(list1))
```
[0, 1, 2, 3, 4]
```python
#2.執行下列程式,下列結果何者正確?
list1=range(6,0,-2)
print(list(list1))
```
[6, 4, 2]
```python
#3.執行下列程式,結束迴圈後,n 的值為多少?
for n in range(1,5,2):
print(n,end=" ")
print("結束迴圈後 n=",n)
```
1 3 結束迴圈後 n= 3
```python
#5.執行下列程式,下列結果何者正確?
list1 = range(5,-1,-2)
print(list(list1))
```
[5, 3, 1]
```python
#8.執行下列程式,結束迴圈後,sum 的值為多少?
sum = 0
n=8
for i in range(1, n+1,2):
sum += i
print(sum)
```
16
```python
#9.執行下列程式,可看到多少個「#」字?
n=5
for i in range(1,n):
for j in range(1,i+1):
print("#", end="")
print()
```
#
##
###
####
```python
#10.執行下列程式,結束迴圈後,total 的值為多少?
total = i = 1
n=5
while(i<=n):
total *= i
i+=1
print(total)
```
120
#### 【self practice】
```python
for i in range(1, 10):
for j in range(1, 10):
result = i * j
print(f"{i} * {j} = {result}")
```
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