Chinese, Traditional subtitles

← 02-46 Break Solution

dummy description

Get Embed Code
8 Languages

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

  1. 答案是
  2. 選項一是相等的
  3. 因為這裡的程式碼是 'if False'
  4. False 永遠不會是 True,所以永遠不會執行 break
  5. 我們永遠不會執行到那些程式碼
  6. 我們只會再次執行陳述,和開始的時候一樣
  7. 每次測試是 True,我們就執行陳述
  8. 選項二是不相等的,原因是
  9. 這個 break 會中斷 loop
  10. 在這個版本,如果 loop 在這種情況下執行超過一次
  11. 如果我們想執行 loop 兩次
  12. 在這裡,我們只能執行陳述一次
  13. 因為執行陳述一次後,我們就到了 break ,然後結束
  14. 選項三是不相等的,這裡的 'while true' 會永遠執行下去
  15. 除非我們有 break 來將它停止
  16. 問題在於 break 的測試條件
    和 while 的測試條件是一樣的
  17. 但它應該是相反的才對
  18. while 的測試條件只要是 True,就會繼續下去
  19. 但根據這裡的程式碼,如果測試條件是 True ,就會停止
  20. 想要讓選項三相等,我們應該
  21. 改寫為相反的測試條件
  22. 如果是 'if not',True 變 False,False 變 True,
    然後是測試條件
  23. 然後是 break,這就和原來的 loop 相等了
  24. 但是選項三並不是這樣的
  25. 最後一個選項是最複雜的
  26. 事實上,它總是相等於原來的 loop
  27. 我們來思考一下執行的過程
  28. 在原來的 loop 中,
    如果測試條件為 True,我們執行陳述 S
  29. 然後繼續下去
  30. 如果第二次的測試條件是 True,我們就再次執行 S
  31. 然後繼續下去
  32. 再來看選項四,如果測試條件是 True
  33. 我們執行 S
  34. 如果測試條件再次是 True,我們執行 S,然後繼續下去
  35. 它有同樣的作用
  36. 我們必須追蹤這個情況
  37. 測試條件不是 True
  38. 如果測試條件為 True,我們執行 S
  39. 如果第二次不是 True,loop 就結束
  40. 然後繼續
  41. 在這裡,如果第一次測試條件是 True,我們執行 S
  42. 如果第二次不是 True,我們就執行 else
  43. 所以如果不是 True,會執行 else,然後來到 break
  44. break 跳出了 loop
  45. 這和原來的 loop 的作用是完全一致的
  46. 先執行 T 一次,然後執行 S ,然後執行 T
  47. 我們不再執行 S ,而是中斷,跳出 loop,然後繼續
  48. 所以這兩個是相等的,那兩個不相等