Chapter 4 迴圈敘述 Loop

4-1 While Loop

4-1-1. While Loop : 依照設定的條件,只要條件成立(True),迴圈就會重複執行。
#範例4-1-1
#using while statement
i = 1
total = 0
while (i<=100):
total += i
i += 1
print('sum of 1 to 100 is', total)
假如Python沒有除法的運算, 以下的程式是利用 while迴圈 與 加減法, 就可以做到除法運算。
#範例4-1-2 以加減法運算除法
a = 8 #被除數
b = 3 #除數
q = 0 #商
while (a>=b):
a=a-b
q+=1
print(a,q)
print('商=',q,' ,餘數=',a)
數學題目: 有個級數 S=3+6+9+12+…….. , 加到第 n 項時, 其和剛好超過100。 求當時的 n 與 S. 
#範例4-1-3 求S=3+6+9+12.......
S = 0
a = 3 #初始值
i = 3 #遞增值
n = 0 #計算次數
while (S<100):
S+=a # 相當於 S=S+a
n+=1
print(n,a)
a+=i
print('n=',n, ' S=', S)
數學題目: 求100(含)以內的偶數和。
#範例4-1-4 求偶數和
i=2
total=0
while i<=100:
total+=i
i+=2
print('總和=',total)
數學題目: 以輾轉相除法求最大公因數。
#範例4-1-5 以輾轉相除法求最大公因數
a=270
b=75
if b>a:
a,b=b,a
r=a%b
while r>0:
a=b
b=r
r=a%b
print(b)

4-1-2. break 與 continue

  1. break: 當迴圈碰到 break,會立即結束迴圈運算,直接跳至while loop下面的指令執行。
  2. continue: 當迴圈碰到 continue,會跳過一次,迴圈繼續。
#範例4-1-6 無限循環的程式
while True:
x = input("請輸入一個數字: ")
print(x)
#範例4-1-7 第一次使用break
while True:
x = input("請輸入一個數字, 輸入 0 可終止程式: ")
if x == "0":
break
else:
print(x)
print("程式終止")

4-1-3. Case Study 個案研究 : 判斷質數

以下的程式可以while迴圈,依序檢查是否能整除,若有可以整除的情況就代表不是質數。

# 範例4-1-8 判斷質數
num = eval(input('Enter an integer: '))
flag = 1
k = 2
while k < num/2:
if num % k == 0:
flag = 0
break
else:
k += 1

if flag == 1:
print('%d is a prime number.' % (num))
else:
print('%d is not a prime number.' % (num))
# 範例4-1-9 判斷質數-第二種寫法
N = int(input("Enter an integer: "))
if N < 2 or N % 2 == 0: #排除2以下及所有偶數
s = "This is not a prime number"
elif N == 2: #2是質數
s = "This is a prime number"
else:
s = "This is a prime number"
i = 3
while i <= int(N**0.5):
if N % i == 0:
s = "This is not a prime number"
break
i += 2
print(s)
# 範例4-1-10 範例4-1-9的程式有誤, 應改成以下
N = int(input("Enter an integer: "))
if N == 2: #2是質數
s = "This is a prime number"
elif N < 2 or N % 2 == 0: #排除2以下及所有偶數
s = "This is not a prime number"
else:
s = "This is a prime number"
i = 3
while i <= int(N**0.5):
if N % i == 0:
s = "This is not a prime number"
break
i += 2
print(s)