python中break和continue区别_Shell break和continue跳出循环详解
使用 while、until、for、select 循環時,如果想提前結束循環(在不滿足結束條件的情況下結束循環),可以使用 break 或者 continue 關鍵字。
在C語言、C++、C#、Python、Java 等大部分編程語言中,break 和 continue 只能跳出當前層次的循環,內層循環中的 break 和 continue 對外層循環不起作用;但是 Shell 中的 break 和 continue 卻能夠跳出多層循環,也就是說,內層循環中的 break 和 continue 能夠跳出外層循環。
在實際開發中,break 和 continue 一般只用來跳出當前層次的循環,很少有需要跳出多層循環的情況。
break 關鍵字
Shell break 關鍵字的用法為:
break n
n 表示跳出循環的層數,如果省略 n,則表示跳出當前的整個循環。break 關鍵字通常和 if 語句一起使用,即滿足條件時便跳出循環。
圖1:Shell break關鍵字原理示意圖
【實例1】不斷從終端讀取用戶輸入的正數,求它們相加的和:
#!/bin/bash
sum=0
while read n; do
if((n>0)); then
((sum+=n))
else
break
fi
done
echo "sum=$sum"
運行結果:
10↙
20↙
30↙
0↙
sum=60
while 循環通過 read 命令的退出狀態來判斷循環條件是否成立,只有當按下 Ctrl+D 組合鍵(表示輸入結束)時,read n才會判斷失敗,此時 while 循環終止。
除了按下 Ctrl+D 組合鍵,你還可以輸入一個小于等于零的整數,這樣會執行 break 語句來終止循環(跳出循環)。
【實例2】使用 break 跳出雙層循環。
如果 break 后面不跟數字的話,表示跳出當前循環,對于有兩層嵌套的循環,就得使用兩個 break 關鍵字。例如,輸出一個 4*4 的矩陣:
#!/bin/bash
i=0
while ((++i)); do #外層循環
if((i>4)); then
break #跳出外層循環
fi
j=0;
while ((++j)); do #內層循環
if((j>4)); then
break #跳出內層循環
fi
printf "%-4d" $((i*j))
done
printf "\n"
done
運行結果:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
當 j>4 成立時,執行第二個 break,跳出內層循環;外層循環依然執行,直到 i>4 成立,跳出外層循環。內層循環共執行了 4 次,外層循環共執行了 1 次。
我們也可以在 break 后面跟一個數字,讓它一次性地跳出兩層循環,請看下面的代碼:
#!/bin/bash
i=0
while ((++i)); do #外層循環
j=0;
while ((++j)); do #內層循環
if((i>4)); then
break 2 #跳出內外兩層循環
fi
if((j>4)); then
break #跳出內層循環
fi
printf "%-4d" $((i*j))
done
printf "\n"
done
修改后的代碼將所有 break 都移到了內層循環里面。讀者需要重點關注break 2這條語句,它使得程序可以一次性跳出兩層循環,也就是先跳出內層循環,再跳出外層循環。
continue 關鍵字
Shell continue 關鍵字的用法為:
continue n
n 表示循環的層數:
如果省略 n,則表示 continue 只對當前層次的循環語句有效,遇到 continue 會跳過本次循環,忽略本次循環的剩余代碼,直接進入下一次循環。
如果帶上 n,比如 n 的值為 2,那么 continue 對內層和外層循環語句都有效,不但內層會跳過本次循環,外層也會跳過本次循環,其效果相當于內層循環和外層循環同時執行了不帶 n 的 continue。這么說可能有點難以理解,稍后我們通過代碼來演示。
continue 關鍵字也通常和 if 語句一起使用,即滿足條件時便跳出循環。
圖2:Shell continue關鍵字原理示意圖
【實例1】不斷從終端讀取用戶輸入的 100 以內的正數,求它們的和:
#!/bin/bash
sum=0
while read n; do
if((n<1 || n>100)); then
continue
fi
((sum+=n))
done
echo "sum=$sum"
運行結果:
10↙
20↙
-1000↙
5↙
9999↙
25↙
sum=60
變量 sum 最終的值為 60,-1000 和 9999 并沒有計算在內,這是因為 -1000 和 9999 不在 1~100 的范圍內,if 判斷條件成立,所以執行了 continue 語句,跳過了當次循環,也就是跳過了((sum+=n))這條語句。
注意,只有按下 Ctrl+D 組合鍵輸入才會結束,read n才會判斷失敗,while 循環才會終止。
【實例2】使用 continue 跳出多層循環,請看下面的代碼:
#!/bin/bash
for((i=1; i<=5; i++)); do
for((j=1; j<=5; j++)); do
if((i*j==12)); then
continue 2
fi
printf "%d*%d=%-4d" $i $j $((i*j))
done
printf "\n"
done
運行結果:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10
3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
從運行結果可以看出,遇到continue 2時,不但跳過了內層 for 循環,也跳過了外層 for 循環。
break 和 continue 的區別
break 用來結束所有循環,循環語句不再有執行的機會;continue 用來結束本次循環,直接跳到下一次循環,如果循環條件成立,還會繼續循環。
總結
以上是生活随笔為你收集整理的python中break和continue区别_Shell break和continue跳出循环详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于spring cloud 的灰度发布
- 下一篇: python线程创建对象_Python多