<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1.4 程序排錯 先說一個壞消息:一旦開始寫程序,就免不了要出錯。程序設計雖然并不難,但無論是 初學編程者還是經驗豐富的專業程序員,程序中出現各種錯誤都是很常見的。 再說一個好消息:計算機(嚴格說是編譯器或解釋器)能夠幫助我們發現程序中的很多 錯誤。 在計算機行話中,程序中的錯誤被稱為“臭蟲”(bug),而發現并改正錯誤的過程稱為排 錯(debug,或稱調試)。 程序中的錯誤大體可分為三種類型:語法錯誤、運行錯誤和語義錯誤。 編程語言和自然語言一樣規定了一套語法規則,這些規則定義如何用符號組成形式上正 確的程序。只有符合語法規則的程序才能被計算機執行,語法不正確的程序根本就無法通過 編譯器或解釋器的檢查,更談不上正確執行了。自然語言中的語法比較寬松,犯點語法錯誤 一般不會影響交流,就像有人說的:研表究明,漢順字序并不定一影閱響讀。與自然語言不 同,編程語言的語法是非常嚴格的,任何一點語法錯誤(例如少了個逗號)都會導致程序無 法執行。初學一門編程語言的時候,肯定會出現很多語法錯誤,但隨著對語言的熟悉和經驗 的增加,語法錯誤會越來越少。例如: ``` >>> 3 + 4 * SyntaxError: invalid syntax ``` 顯然,乘法運算符需要兩個運算數,而上面的表達式中未提供足夠的數據,因此導致了語法 錯誤。Python 解釋器很容易發現語法錯誤,并將錯誤信息打印出來供程序員參考。 當程序通過了編譯器或解釋器的語法檢查,就可以運行了。遺憾的是,程序語法正確并 不能保證程序執行成功,因為有很多僅在程序執行時才會出現的錯誤,這種運行錯誤也稱為 異常(exception)。例如,如果程序中有一條執行除法運算的語句,那么在運行時就有可能發 生除數為 0 的錯誤,這種錯誤在編譯階段無法發現,因為除法算式是符合語法的。例如: ``` >>> def f(): x = 2 print 10 / x x = x – 2 print 10 / x >>> f() 5 Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> f() File "<pyshell#3>", line 5, in f print 10 / x ZeroDivisionError: integer division or modulo by zero ``` 上面這個函數顯然沒有任何語法錯誤,因此能夠被 Python 執行,我們也看到了部分執行 結果:10 / 2 = 5 被正確地計算并顯示出來。但是當 x 變為 0,再次計算 10 / x 時發生了運行 錯誤 ZeroDivisionError。 語義錯誤也稱邏輯錯誤,是指程序在程序邏輯上出錯,根本不是預定的功能。語法錯誤 和運行錯誤都可以被計算機檢查出來,程序員根據計算機的報錯信息可以比較容易地找出源 程序中的錯誤并糾正之。而語義錯誤可能很難發現。因此,有語義錯誤的程序往往能夠“成 功”執行,不產生任何錯誤消息,但是程序的結果并不是我們想要的,或者說程序的意義(語 義)錯了。例如,下面這個程序試圖計算半徑為 5 的圓的面積: ``` >>> pi = 3.1416 >>> r = 5 >>> print pi * r 15.708 ``` 程序的執行沒有產生任何錯誤,但結果根本不是圓的面積。 由于得不到 Python 解釋器的幫助,查找語義錯誤往往是非常惱人的。一般來說我們需要 從頭到尾仔細審查程序算法,找出可能的錯誤步驟。一種有用的排錯方法是在程序中插入大 量的 print 語句,用來顯示計算的中間結果。通過檢查中間結果,可以將錯誤進行精確定位。 這些 print 語句的目的是幫助排錯,一旦程序完全正確,再將它們從程序中刪除。 排錯是程序設計的最重要技能之一。找出程序中的錯誤一方面很令人頭痛,另一方面也 很有樂趣,因為排錯過程有點像偵探破案的過程——尋找線索、推斷原因、最終定位錯誤。 如果情況很復雜,對某處代碼是否錯誤不是很肯定,則可以利用試錯法來排錯:先試著修改 該處代碼,然后運行程序看看結果如何。這個過程可以重復進行,直至確定錯誤為止。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看