一般來說,上面這種情況更多是跳出循環(huán)。
創(chuàng)新互聯(lián)主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、成都小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營(yíng)銷、管理等多方位專業(yè)化運(yùn)作于一體。
break 跳出循環(huán)
continue 跳出本次循環(huán),繼續(xù)執(zhí)行下次循環(huán)
至于退出進(jìn)程
import sys
sys.exit()
import?time
import?os
import?schedule
import?pyautogui
def?Rec():
record?=?os.startfile("C:\Program?Files?(x86)\EVCapture\EVCapture.exe")
schedule.every().day.at("16:40").do(Rec)
while?True:
if?pyautogui.hotkey('ctrl',?'f2'):
break
schedule.run_pending()
time.sleep(1)
def?Star_t():
St?=?pyautogui.hotkey('ctrl',?'f1')
Star_t()
事實(shí)上,Python的標(biāo)準(zhǔn)語(yǔ)法是不支持跳出多重循環(huán)的,所以只能利用一些技巧,大概的思路有:寫成函數(shù)、利用笛卡爾積、利用調(diào)試。
寫成函數(shù)
在Python中,函數(shù)運(yùn)行到return這一句就會(huì)停止,因此可以利用這一特性,將功能寫成函數(shù),終止多重循環(huán),例如
def work(): for i in range(10): for j in range(10): if i+j 5: return i,jprint work()
利用笛卡爾積
這種方法的思路就是,既然可以跳出單循環(huán),我就將多重循環(huán)改寫為單循環(huán),這可以利用itertools中的笛卡爾積函數(shù)product,例如
from itertools import productfor i,j in product(range(10), range(10)): if i+j 5: print i,j break
利用調(diào)試模式
笛卡爾積的方式很巧妙,也很簡(jiǎn)潔,但它只能用于每次循環(huán)的集合都是獨(dú)立的情形,假如每層循環(huán)都與前一層緊密相關(guān),就不能用這種技巧了。這時(shí)候可以用第一種方法,將它寫成函數(shù),另外,還可以利用調(diào)試模式。這個(gè)利用了調(diào)試模式中,只要出現(xiàn)報(bào)錯(cuò)就退出的原理,它偽裝了一個(gè)錯(cuò)誤出來。
class Found(Exception): passtry: for i in range(10): for j in range(i): #第二重循環(huán)跟第一重有關(guān) if i + j 5: raise Foundexcept Found: print i, j
return:直接返回函數(shù),所有該函數(shù)體內(nèi)的代碼(包括循環(huán)體)都不會(huì)再執(zhí)行
循環(huán):英語(yǔ)[circulate;circle]以環(huán)形、回路或軌道運(yùn)行;沿曲折的路線運(yùn)行;特指運(yùn)行一周而回到原處,再轉(zhuǎn)?;蛘f反復(fù)地連續(xù)做某事。
指事物周而復(fù)始的運(yùn)動(dòng)或變化,時(shí)間循環(huán)了等等。
喜歡在循環(huán)、函數(shù)里使用多個(gè)單行的if判斷,如果true直接跳出。
類似常用的傳值類型判斷。
類似以下:
這種句式的好處是邏輯非常清晰。
但是有時(shí)要在if里嵌套if,因?yàn)樗皇呛瘮?shù)也不是循環(huán),就無(wú)法正常退出。
例如:
當(dāng)然可以用if...else解決,但是結(jié)構(gòu)就不那么清晰
為了達(dá)到我的逐行判斷、邏輯清晰的目的,我決定這么使用:
整體結(jié)構(gòu)很簡(jiǎn)單。
相當(dāng)于在備份a前加了兩個(gè)判斷。
我討厭大規(guī)模的for循環(huán)、嵌套for循環(huán),但卻喜歡1的for循環(huán)。