YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Traditional subtitles

← 03-41 Find Element Solution

dummy description

Get Embed Code
5 Languages

Showing Revision 4 created 08/01/2014 by Fran Ontanaya.

  1. 有很多不同的方法可以解決這個問題
  2. 首先,我們來看看使用 while loop 的方法
  3. 我們定義程序 find-element
  4. 我們使用 p 作為列表名稱, t 作為標靶 (target) 的名稱
  5. 也就是我們要比對的元素
  6. 我們定義 loop 來走遍 p 的元素
  7. 和之前走遍列表的 while loop 相似
  8. 我們有一個 while loop,引入變數 i
  9. 我們把它作為指標來走遍 loop
  10. while loop 的停止條件是,當 i 達到 len(p)
  11. 所以 while loop 的測試為 i < len(p)
  12. 在 while loop 程式塊裡,
    我們要檢查目前的元素是否與 t 相等
  13. 於是我們使用 p[i] 得到目前元素,
    接著用 '==' 來測試它是否等於 t
  14. 如果我們找到符合的值,也就是這兩個的值相等
  15. 我們傳回找到的指標
  16. 所以結果應為 i 值
  17. 這就是我們找到相等元素的指標
  18. 相對於 for loop ,使用 while loop 的風險在於
  19. 很容易忘了增加指標變數
  20. 如果我們把 loop 就這樣放著,它會永無休止地執行
  21. i 的值永遠不變,除非第一個元素符合
  22. 這種情況下,我們傳回 0
  23. 這個 loop 會不停地繼續下去,再次檢查第一個元素
  24. 所以我們必須增加 i 的值
  25. 這是 while 程式塊的結尾
  26. 我們這樣描述 find-element 程序應做的事
  27. 如果找不到元素,程序應傳回 -1
  28. 如果我們完成了 while loop 而沒有傳回任何值
  29. 這意謂著,我們已經走遍 while loop 所有 i 的值,
    直到 len(p) - 1
  30. 我們沒有找到任何相等的元素,所以我們應傳回 -1
  31. 這是定義 find-element 程序的一種方法
  32. 我也要向你展示,使用 for loop 來定義它的方法
  33. 很自然地想用 while loop 來定義 find-element 的原因
  34. 是因為我們想從 find-element 傳回的值
  35. 是指標 (index) 本身
  36. 當我們以 for loop 標準語法走遍 loop 的元素時
  37. 並沒有追蹤指標
  38. 我們只看到依次排列的元素
  39. 所以我們需要加點內容來追蹤指標
  40. 因為指標是我們想要傳回的值
  41. 所以我們仍然需要一個變數來追蹤指標
  42. 我們使用 i 作為變數,如同 while loop 版本的做法
  43. 現在我們使用 for loop ,而不是 while loop
  44. 在這裡,我們不需要考慮停止條件
  45. 因為它只是走遍所有元素
  46. 與 while loop 程式塊相似,
    我們檢查目前的元素是否等於 t
  47. 在 for loop 中,我們可以使用變數 e 得到目前的元素
  48. 每次我們走遍 loop 程式塊
  49. 目前元素的值就是這樣被指定的
  50. 我們的測試是使用 '==' 來比較 e 和 t
  51. 如同 while 版本,如果它們相等,我們應傳回結果
  52. 我們想要傳回的結果,是我們找到相等時的指標
  53. 在 while 版本中,已經很清楚了
  54. 這很合理,因為我們看到元素 p,指標 i
  55. 在 for loop 版本中,我們必須更加注意那個指標在哪裡
  56. 我們使用變數 i 來追蹤那個指標,所以我們傳回 i
  57. i 從 0 開始
  58. 每經過一次 loop,都需要增加 i
  59. 當我們在走遍元素時,同時追蹤目前指標
  60. 如同之前的定義,當我們使用 while loop
  61. 如果到了結尾我們沒有找到元素,
    那就意謂著這個元素在 p 中不存在
  62. 我們應傳回 -1
  63. 在這裡,我們做同樣的事情