久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

自學Python教程【第六十節】調試程序

雖然我們大多數都是第一次接觸Python編程,甚至是第一次接觸編程,但是我們或多或少已經面對過一些代碼異常的狀況了,你是怎么處理的呢?你的處理方法適合應對大體積的較復雜的異常嗎?

寫代碼,不可避免地會出現bug。很多人在初學編程的時候,當寫完程序運行時,發現結果與自己預料中的不同,或者程序意外中止了,就一時沒了想法,不知道該從何下手,只能反復重新運行程序,期待忽然有次結果就對了。

今天我就來講講代碼遇到問題時的一些簡單處理方法。

1. 讀錯誤信息

來看如下一個例程:

import random

a = 0

for i in range(5):

b = random.choice(range(5))

a += i / b

print a

這個程序中,i從0循環到4,每次循環中,b是0到4中的一個隨機數。把i/b的結果累加到a上,最后輸出結果。

運行這段程序,有時候會輸出結果,有時候卻跳出錯誤信息:

Traceback (most recent call last):

File "C:\Users\Crossin\Desktop\py\test.py", line 6, in <module>

a += i / b

ZeroDivisionError: integer division or modulo by zero

有些同學看見一段英文提示就慌了。其實沒那么復雜,Python的錯誤提示做得還是很標準的。

它告訴我們錯誤發生在test.py文件中的第6行

a += i / b

這一句上。

這個錯誤是“ZeroDivisionError”,也就是除零錯。

“integer division or modulo by zero”,整數被0除或者被0模(取余數)。

因為0不能作為除數,所以當b隨機到0的時候,就會引發這個錯誤。

知道了原因,就可以順利地解決掉這個bug。

以后在寫代碼的時候,如果遇到了錯誤,先別急著去改代碼。試著去讀一讀錯誤提示,看看里面都說了些啥。

2. 輸出調試信息

我們在所有課程的最開始就教了輸出函數“print”。它是編程中最簡單的調試手段。有的時候,僅從錯誤提示仍然無法判斷出程序錯誤的原因,或者沒有發生錯誤,但程序的結果就是不對。這種情況下,通過輸出程序過程中的一些狀態,可以幫助分析程序。

把前面那個程序改造一下,加入一些與程序功能無關的輸出語句:

import random

a = 0

for i in range(5):

print 'i: %d' % i

b = random.choice(range(5))

print 'b: %d' % b

a += i / b

print 'a: %d' % a

print

print a

運行后的輸出結果(每次結果都會不一樣):

i: 0

b: 3

a: 0

i: 1

b: 3

a: 0

i: 2

b: 3

a: 0

i: 3

b: 0

Traceback (most recent call last):

File "C:\Users\Crossin\Desktop\py\test.py", line 8, in <module>

a += i / b

ZeroDivisionError: integer division or modulo by zero

當b的值為0時,發生了除零錯。這次可以更清晰地看出程序出錯時的狀態。

在真實開發中,程序的結構可能會非常復雜。通過輸出調試信息,可以有效地縮小范圍、定位錯誤發生的位置,確認錯誤發生時的場景,進而找出錯誤原因。

恭喜您在Python自學的道路上又堅持了一天,這節課我們學習的調試程序的相關內容,你學會了嗎?其實這節課的相關內容,在我們學習編程、實戰的過程中還是蠻重要的,但我們這節課的內容有限,相關知識大家還需要課下去搜集學習,加油!

好啦,今天的分享到這里就結束了,希望大家持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!

聲明:文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 理塘县| 曲阳县| 大英县| 南城县| 兴化市| 贺兰县| 奉化市| 清流县| 池州市| 和林格尔县| 清原| 广元市| 巫溪县| 宁津县| 平顺县| 金川县| 南昌县| 金川县| 黔西| 南和县| 阿拉善左旗| 松桃| 丽江市| 潞西市| 剑川县| 望谟县| 益阳市| 石城县| 鹿泉市| 韩城市| 肥城市| 巴里| 琼结县| 新晃| 松原市| 石门县| 重庆市| 视频| 铜鼓县| 锦州市| 万荣县|