程序不可能沒有bug即便是最頂級的程序員,而且越專業的程序員就越會花時間去調試自己寫的程序以求達到完美。那么接下來就像大家介紹一下常見的錯誤以及調試方法。
常見問題:
1.??????縮進問題
這應該是我提到過最多次的問題,只要是一個小小的縮進問題都會導致程序的錯誤以及無法運行,可見縮進的重要性。
2.??????變量類型問題
大家都知道變量有很多類型:int,string,float…但是在寫程序中如果錯誤的表示了變量的類型,很有可能會導致輸出結果的錯誤,或者是程序的無法運行,因為有些語句和函數需要特定的變量類型的參與。
3.??????循環邊界問題
在寫循環語句時候,我們常常會用到range等函數,但是這就出現了一個問題:循環最終到底會在哪里停止,如果考慮不當的話,很可能會導致循環的次數錯誤,甚至一直無限進行。
4.??????局部變量問題
在定義完一個函數,并在函數內書寫代碼的時候,我們會定義一些變量,但是有時候我們會把函數外的變量直接拿到函數內使用,或者把函數內的變量拿出使用,這就犯了局部變量和全局變量混淆的問題,這種問題一般會導致變量沒有被定義的問題。
5.??????情況遺漏問題
在處理一些十分復雜的問題,例如上面的24點的問題時,我們有時候可能會遺漏一些可能的情況,這種問題往往不會明顯的表現出錯誤,但是它會導致程序的適應性不高,有可能在一些特殊的情況下無法運行。
調試方法
?????目前我最常用的調試方法就是在程序中多加一些print語句。通過print語句,我們可以知道每個部分代碼所輸出的結果,從而在產生錯誤后,更加容易的找出程序中出現錯誤的部分在哪里,而不用重新去看整個代碼,從而大大節省了時間。在調試完之后我們可以把print語句注釋掉以便以后使用(因為有可能不只一個錯誤)。
驗證方法
在把所有表面上的錯誤解決之后,為了更加深入的增加程序的適應性,我們就需要用一些方法來驗證程序。舉個例:之前的24點問題,我為了驗證數字的調換不會影響最終的結果(例如1347和3174所產生的24點的組合個數是一樣的),我帶入了許多值進行運算來驗證這個程序,甚至把所有的四個數的組合輸入到程序中來驗證程序的適應性,試圖把程序寫到完美。還有就是大家可以帶入一些特殊值來測試程序邊界情況的運行情況。最后我希望大家記住任何程序都可以有改進的空間,大家不要認為寫完代碼之后就完成了整個程序,其實連50%都不到!
我的更多文章:
- [Python程序調試的一些體會](http://blog.sina.com.cn/s/blog_d6cca93e0101ewc9.html)(2013-10-06 22:57:35)
- [十四、Python編程計算24點(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101euxx.html)(2013-10-03 22:18:28)
- [十三、Python編程計算24點(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101eukc.html)
(2013-10-02 22:15:46)
- [十二、Python簡單數據結構應用(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101euk8.html)(2013-10-02 22:10:41)
- [十一、Python簡單數據結構應用(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ep9z.html)(2013-09-23 23:31:49)
- [十、Python編程解決組合問題(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101entc.html)
(2013-09-21 23:37:27)
- [九、Python編程解決組合問題(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ent7.html)(2013-09-21 23:32:54)
- [八、Python的函數編程(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101ekwj.html)
(2013-09-20 23:09:39)
- [七、Python的函數編程(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ekwg.html)
(2013-09-20 23:09:10)
- [高中生如何學編程](http://blog.sina.com.cn/s/blog_d6cca93e0101e8fn.html)(2013-09-02 19:26:01)