07/20-07/24 第一周技能總結(jié)

1.捕獲中斷(待補(bǔ)充...)
一開(kāi)始我用的是try except KeyboardInterrupt,但在ctrl+C后未停止運(yùn)行,其實(shí)這個(gè)時(shí)候應(yīng)該是我套了兩層循環(huán),內(nèi)循環(huán)還未停止的原因。但后期我也沒(méi)有再去嘗試這個(gè)問(wèn)題。問(wèn)了一下導(dǎo)師,他說(shuō)了這么一句話:Ctrl + C一般是用捕獲信號(hào)的形式而不是捕獲異常,使用signal包試試。那我們來(lái)看下這個(gè)從未接觸過(guò)的signal包是怎么用的吧:(目前我還沒(méi)懂原理,只get到了怎么用)

def sigint_handler(signum, frame):
  global is_sigint_up
  is_sigint_up = True
  print 'catched interrupt signal!'

signal.signal(signal.SIGINT, sigint_handler)
signal.signal(signal.SIGHUP, sigint_handler)
signal.signal(signal.SIGTERM, sigint_handler)
is_sigint_up = False
while True:
  try:
    # 你想做的事情
    import time
    print "start ............."
    time.sleep(2)
    if is_sigint_up:
      # 中斷時(shí)需要處理的代碼
      print "Exit"
      is_sigint_up = False
      continue
  except Excepting,e:
    break

2.廣度優(yōu)先和深度優(yōu)先
從一個(gè)網(wǎng)頁(yè)的URL進(jìn)去,抓取這個(gè)網(wǎng)頁(yè)上包含的所有的二級(jí)三級(jí)四級(jí)...URL鏈接,一開(kāi)始是沒(méi)啥思路的,總感覺(jué)需要手動(dòng)指定爬幾級(jí)。然后寫(xiě)著寫(xiě)著突然意識(shí)到這是一個(gè)深度優(yōu)先or廣度優(yōu)先的問(wèn)題,那么,我們來(lái)搜一下它們的定義是什么吧。直接上別人博客里的圖:



已知有上面的二叉樹(shù)
廣度優(yōu)先:我們?cè)诒闅v這個(gè)二叉樹(shù)的時(shí)候,每一步有多個(gè)不同的選擇,比如先從根結(jié)點(diǎn)出發(fā),有往B節(jié)點(diǎn)走的路徑,也有往C節(jié)點(diǎn)走的路徑。假設(shè)選取了往B節(jié)點(diǎn)走的路徑,那么下一步還有F和G兩個(gè)方向可以走。廣度優(yōu)先的遍歷方式為:D-B-C-F-G-A-E-H,廣度優(yōu)先的偽代碼如下:

def bfs(Root_Node):
    if Root_Node is None:
        return
    queue = []
    Node = Root_Node
    queue.append(Node)
    while queue:
        Node = queue.pop(0)
        if Node.lChild:
            queue.append(Node.lChild)
        if Node.rChild:
            queue.append(Node.rChild)

深度優(yōu)先:在遍歷二叉樹(shù)的時(shí)候,選中一個(gè)路徑,一口氣走到黑~走到最下層了怎么辦呢,我們退回上一層,看看同級(jí)的是不是還有沒(méi)被遍歷過(guò)的。深度優(yōu)先的遍歷方式為:D-B-F-G-E-C-A-H,深度優(yōu)先的偽代碼如下:

def dps(Root_Node):
    if Root_Node is None:
        return
    if Root_Node.lChild:
        return dps(Root_Node.lChild)

    if Root_Node.rChild:
        return dps(Root_Node.rChild)
  1. ?本周代碼已push到github
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容