break
break可用於(提前)退出循環
【例】輸出指定範圍的素數
lower = int(input("輸入區間最小值:"))
upper = int(input("輸入區間最大值:"))
for num in range(lower,upper + 1):
# 素數大於 1
if num > 1:
for i in range(2,num):
if (num % i) ==0:
break
else: #和for配對的else。如果上面的break執行則不執行此else
print(num) #輸出素數
關於else和for配對:
for……break……else……
如果運行了 break,那麼就不執行 else;如果沒有運行 break,那麼就執行 else 語句。
如果 for 的循環體中沒有 break 語句,else 語句會執行。
while-else 的用法同理。
以上程序去掉else之後是錯誤的:
lower = int(input("輸入區間最小值: "))
upper = int(input("輸入區間最大值: "))
for num in range(lower,upper + 1):
# 素數大於 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
print(num)
區間內的整數都輸出了。
【例】求最大公約數
num1=int(input("請輸入第一個整數:"))
num2=int(input("請輸入第二個整數:"))
flag=0
for i in range(num1,0,-1):
if((num1%i==0) and (num2%i==0)):
flag=1
break
if(flag==1):
print(f"{num1}和{num2}的最大公約數是{i}")
改寫:不用標誌flag,改用for……else……
num1=int(input("請輸入第一個整數:"))
num2=int(input("請輸入第二個整數:"))
for i in range(num1,0,-1):
if((num1%i==0) and (num2%i==0)):
print(f"{num1}和{num2}的最大公約數是{i}")
break
else:
print(f"{num1}和{num2}的最大公約數是1")
【例】一個列表用來保存學生信息,列表的元素是字典,字典中的鍵有姓名、年齡等。讓用戶輸入一個名字,然後在列表中查詢,如果有這個名字就告訴用戶「找到了」,反之告訴用戶「沒有找到」。
程序一:用標誌位編程:
info = [{"name":"小明", "age":15},
{"name":"小華", "age":17},
{"name":"小強", "age":16}]
find_name = input("please input a name:")
flag=False
for person in info:
if person["name"] == find_name:
flag=True
if flag:
print("Found it")
else:
print("Not found")
程序二:改用for……else……編程
info = [{"name":"小明", "age":15},
{"name":"小華", "age":17},
{"name":"小強", "age":16}]
find_name = input("please input a name:")
for person in info:
if person["name"] == find_name:
print("Found it")
break
else:
print("Not found")
【例】判斷2~50之間的數是不是質數
for num in range(2,51):
for i in range(2,num):
if (num%i)==0:
print(num,"不是質數,",end='')
print(i,"乘",num//i,"是",num)
break
else:
print(num,"是質數")
break
【例】猴子分桃
海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分為五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?
i = 0
j = 1
x = 0
while (i < 5):
x = 4 * j
for i in range(0, 5):
if (x % 4 != 0):
break
else:
i += 1
x = (x / 4) * 5 + 1
j += 1
print(x)
運行結果:
3121.0
continue
continue用於結束本輪循環,繼續下一輪循環
【例】累加100以內的奇數和,即1+3+5+7+……+99
sum=0
for i in range(1,101):
if i%2==0:#計算奇數和
continue#偶數不加
sum+=i#加奇數
print(sum)
【例】統計及格者的平均成績
x=[98,72,80,45,30,89,92,54,48,82,67,76]
sum=0
k=0;
for item in x:
if(item<60):
continue
sum=sum+item
k=k+1;
if(k!=0):
print("及格人數",k,"人,平均成績是",sum/k)