循環之break、continue、exit()

假設招聘3個Python工程師。

###

許多學員聽到這個消息都非常高興,紛紛響應,簡歷如雪花般飛來,HR從中精心挑選了6份簡歷名單,邀約面試!

###

這六個人分別是 i = ['小李','小王','小張','老李','老王','老張']

###

按道理,所有的候選人都要經歷三輪面試,分別是HR、用人部門、老闆。但我們公司比較特殊,用人部門、HR、老闆都有權利直接錄取候選人,候選人一旦被直接錄取,就不用再參加下面的面試。

###

所以我們現在已經有兩個條件:

  1. 要從6個人中應聘3個人
  1. 應聘者分別需要經過3個面試流程,但只要有一個面試官非常想要,就可以直接留下來。

###

如果這樣子的一個程序要我們寫該怎麼寫呢?給大家思考5分鐘。可以回想一下課堂中關於循環的案例。

###

好那我們來講一下,根據條件1,6個面試者只需要3個,可以設定一個變量:招聘崗位 > 3,程序就不需要執行了。這裏我們可以直接用結束循環函數break來實現。

###

根據條件2,我們需要設定3個流程:每一個應聘者進來都預設了3個面試流程等待他,如果碰到某個面試官非常想要,就可以直接留下來。如果3個面試流程都沒有非常想要,就進入待定。

###

這樣的話,我們可以設定三個流程分別是:1 用人部門是否通過/2 HR是否通過/3 boss是否通過,在面試流程當中,只要一個通過,後面的流程就不需要執行了。那這裏應該用break 還是continue呢?

###

這裏需要用到continue,continue的用法是結束本次循環,進入下一次循環。所以只要有一個流程特別想要就算招聘了一個人,然後邀請第二個人進行面試。

###

綜上分析,代碼的邏輯應該是這樣的:

  1. 定義列表,裏面有6個元素 對應6個應聘者。
  1. 定義招聘人數變量
  1. 建立循環,判定人數變量大於4就不進入循環,可以用while 也可以用for
  1. 循環裏面有3個流程,只要有一個流程判定成功就跳出循環執行下一次。
resumes = ['小李','小王','小張','老李','老王','老張']
num = 0 #num表示錄取的人數

for i in resumes:

# 如果錄取人數大於3人,就停止招聘。
  if num >=3:
    break
  
# 如果用人部門滿意就直接錄取,錄取人數+1,不確定的話就移交用人部門。
  department_admissin = input('department,你是否非常想要 '+i+':')
  if department_admissin =='yes':
    num = num+1
    print('恭喜'+i+'應聘成功')
    continue
  
# 如果hr滿意就直接錄取,錄取人數+1,不確定的話就移交用人部門。
  hr_admissin = input('hr,你是否非常想要t '+i+':')
  if hr_admissin =='yes':
    num = num+1
    print('恭喜'+i+'應聘成功')
    continue

# 如果老闆滿意就直接錄取,錄取人數+1,不確定的話就進入待定。
  boss_admissin = input('boss,你是否非常想要 '+i+':')
  if boss_admissin =='yes':
    num = num+1
    print('恭喜'+i+'應聘成功')
    continue  

###

這段代碼裏面有兩個需要注意的點,第一個是判定進入循環的方式。

###

這裏用for循環+if條件進行判定是否大於等於3。我們之前有學習過while +條件,但如果用while就要先判定i是否在列表裏。會多出一步來,理解成本也高一點。

###

from sys import exit
resumes = ['小李','小王','小張','老李','老王','老張']
num = 0   #num表示錄取的人數

for i in resumes:
  department_admissin = input('department,你是否非常想要 ' + i + ':')
  if department_admissin == 'yes':
    num = num + 1
    if num == 3:
      print('enough~')
      exit()
    print('恭喜' + i + '應聘成功')
    continue
  else:
    print(num, '此人不在候選名單')

第二個需要注意的內容就是跟大家講解continue 和 break

continue 一個是結束本次循環執行下一次

break 一個是結束循環,執行循環外的內容

###

假如一整個循環本來需要循環5次,而實際上可能只需要循環2次就能夠得到我們想要的結果,那麼後面3次循環就不需要執行,這個時候就可以直接break,後面的3次循環就不執行了。

###

如果一次循環本來需要執行5行代碼,而實際上可能執行前2行代碼就能夠得到我們想要的結果了,那後面的3行代碼就不需要執行,這個時候就可以直接continue,跳過後面2行代碼,進入下一次循環。

###

相信這個已經解釋的很清楚了,大家都知道了吧。

###

那還有就是exit()函數。exit()和break的區別是什麼呢?

break()是結束循環,執行循環外的內容

exit()是結束程序,這個程序裏面不管循環外還是循環內都不執行了。

###

還是用上面的招聘案例,我們再來理解一下exit()的用法,比如現在條件改成只需要招聘一個人就好了。那怎麼修改原來的代碼呢?

###

其實很簡單,只要把循環裏面的continue改成exit()就好了。這樣只要有一個人被選中就會可以結束程序,停止招聘了。

###

另外還有一個要點,是在用exit()函數的時候,要注意用法在本地運行和課程內容運行區別,我們的課程使用的是網頁,在課程裏面運行是需要引用函數,在本地就不需要了。

###

引用exit函數,只要在程序開始的時候第一行輸入from  sys  import  exit就好了。

###

好了今天要跟大家分享的知識點就結束了。那我們來總結一下這三個功能的用法一般都與循環連用。

###

只放圖片,文字刪除

  1. 程序遇到 continue,跳過循環後面,進行下一次循環
  1. 程序遇到 break,結束循環,之後循環外部的代碼
  1. 程序遇到 exit(),結束程序,不管後面的代碼在循環裏還是循環外都不執行。

###

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章