性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

自學(xué)Python教程【第六十節(jié)】調(diào)試程序

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

寫代碼,不可避免地會(huì)出現(xiàn)bug。很多人在初學(xué)編程的時(shí)候,當(dāng)寫完程序運(yùn)行時(shí),發(fā)現(xiàn)結(jié)果與自己預(yù)料中的不同,或者程序意外中止了,就一時(shí)沒了想法,不知道該從何下手,只能反復(fù)重新運(yùn)行程序,期待忽然有次結(jié)果就對(duì)了。

今天我就來講講代碼遇到問題時(shí)的一些簡(jiǎn)單處理方法。

1. 讀錯(cuò)誤信息

來看如下一個(gè)例程:

import random

a = 0

for i in range(5):

b = random.choice(range(5))

a += i / b

print a

這個(gè)程序中,i從0循環(huán)到4,每次循環(huán)中,b是0到4中的一個(gè)隨機(jī)數(shù)。把i/b的結(jié)果累加到a上,最后輸出結(jié)果。

運(yùn)行這段程序,有時(shí)候會(huì)輸出結(jié)果,有時(shí)候卻跳出錯(cuò)誤信息:

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

有些同學(xué)看見一段英文提示就慌了。其實(shí)沒那么復(fù)雜,Python的錯(cuò)誤提示做得還是很標(biāo)準(zhǔn)的。

它告訴我們錯(cuò)誤發(fā)生在test.py文件中的第6行

a += i / b

這一句上。

這個(gè)錯(cuò)誤是“ZeroDivisionError”,也就是除零錯(cuò)。

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

因?yàn)?不能作為除數(shù),所以當(dāng)b隨機(jī)到0的時(shí)候,就會(huì)引發(fā)這個(gè)錯(cuò)誤。

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

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

2. 輸出調(diào)試信息

我們?cè)谒姓n程的最開始就教了輸出函數(shù)“print”。它是編程中最簡(jiǎn)單的調(diào)試手段。有的時(shí)候,僅從錯(cuò)誤提示仍然無法判斷出程序錯(cuò)誤的原因,或者沒有發(fā)生錯(cuò)誤,但程序的結(jié)果就是不對(duì)。這種情況下,通過輸出程序過程中的一些狀態(tài),可以幫助分析程序。

把前面那個(gè)程序改造一下,加入一些與程序功能無關(guān)的輸出語句:

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

運(yùn)行后的輸出結(jié)果(每次結(jié)果都會(huì)不一樣):

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

當(dāng)b的值為0時(shí),發(fā)生了除零錯(cuò)。這次可以更清晰地看出程序出錯(cuò)時(shí)的狀態(tài)。

在真實(shí)開發(fā)中,程序的結(jié)構(gòu)可能會(huì)非常復(fù)雜。通過輸出調(diào)試信息,可以有效地縮小范圍、定位錯(cuò)誤發(fā)生的位置,確認(rèn)錯(cuò)誤發(fā)生時(shí)的場(chǎng)景,進(jìn)而找出錯(cuò)誤原因。

恭喜您在Python自學(xué)的道路上又堅(jiān)持了一天,這節(jié)課我們學(xué)習(xí)的調(diào)試程序的相關(guān)內(nèi)容,你學(xué)會(huì)了嗎?其實(shí)這節(jié)課的相關(guān)內(nèi)容,在我們學(xué)習(xí)編程、實(shí)戰(zhàn)的過程中還是蠻重要的,但我們這節(jié)課的內(nèi)容有限,相關(guān)知識(shí)大家還需要課下去搜集學(xué)習(xí),加油!

好啦,今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享!

聲明:文章來源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!