99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

在 PyCharm 中調(diào)試你的第一個(gè) Python 應(yīng)用程序

2025-03-27 11:22 更新

找出問題的根源

還記得在上一個(gè)教程中,你創(chuàng)建并運(yùn)行了 Car 腳本嗎?讓我們?cè)俸退嬉粫?huì)兒。

在運(yùn)行工具窗口中運(yùn)行腳本,加速一次汽車,然后通過輸入相應(yīng)的命令進(jìn)行兩次制動(dòng):

運(yùn)行腳本

現(xiàn)在按 o 然后按 Enter 來顯示汽車的里程表:


運(yùn)行腳本


腳本告訴我們汽車行駛了 0 公里!這是一個(gè)意外的結(jié)果,因?yàn)槲覀儼戳艘淮渭铀倨鳎云噾?yīng)該已經(jīng)行駛了一段距離。讓我們調(diào)試代碼以找出原因。


要開始調(diào)試,你必須先設(shè)置一個(gè)斷點(diǎn)。調(diào)試器將在執(zhí)行帶有斷點(diǎn)的行之前停止,這樣你就可以檢查程序的當(dāng)前狀態(tài)。


汽車的里程表設(shè)置在第 15 行,所以讓我們?cè)谀抢镌O(shè)置一個(gè)斷點(diǎn)。點(diǎn)擊行號(hào)旁邊的空白處:


添加斷點(diǎn)


接下來,點(diǎn)擊 main 子句旁邊的 app 圖標(biāo),然后選擇調(diào)試 'car'(Debug `car`)。


Debug 命令


PyCharm 開始調(diào)試會(huì)話并顯示調(diào)試工具窗口。


Debug tool 窗口


a 然后按 Enter 來加速汽車。調(diào)試器將執(zhí)行腳本并在斷點(diǎn)處停止。調(diào)試工具窗口的線程和變量標(biāo)簽頁將打開。展開 self 以檢查變量的當(dāng)前值:


檢查變量的當(dāng)前值


點(diǎn)擊調(diào)試工具欄上的  app “單步跳過(Step Over)” 按鈕,以執(zhí)行帶有斷點(diǎn)的行。注意 ?里程表(?odometer?? 的值變?yōu)?5,第 16 行現(xiàn)在在編輯器中高亮顯示,因?yàn)樗鼘⑹窍乱粋€(gè)要執(zhí)行的行:


單步執(zhí)行


現(xiàn)在點(diǎn)擊  繼續(xù)按鈕 “繼續(xù)(Resume)” 按鈕并切換到 Debug 調(diào)試工具窗口的控制臺(tái)標(biāo)簽頁。通過按 b 然后按 Enter 來指示汽車制動(dòng)?;氐骄€程和變量標(biāo)簽頁并檢查變量。注意此時(shí)速度為 0。


檢查變量


再次點(diǎn)擊 繼續(xù)按鈕 “繼續(xù)” 按鈕并再次制動(dòng)(b + Enter)?,F(xiàn)在,讓我們切換到線程和變量標(biāo)簽頁并分析接下來會(huì)發(fā)生什么:


檢查變量的值


你可以看到,里程表 的值是 5,速度 的值是 -5。這就是為什么當(dāng)我們恢復(fù)執(zhí)行時(shí),里程表 將變?yōu)?0。你可以點(diǎn)擊工具欄上的  app 按鈕來確認(rèn)這一點(diǎn)。

所以,意外結(jié)果的原因是 速度(speed) 變量的負(fù)值。

修復(fù)問題

為了避免再次遇到同樣的問題,讓我們更新 Carbrake 方法,使其不會(huì)將 速度 減少到負(fù)值。

選擇 brake 方法中的語句 self.speed -= 5,然后按 Ctrl + Alt + T(代碼 -> 包圍Surround with)。


環(huán)繞代碼


選擇 if 來為該語句添加條件。


PyCharm 創(chuàng)建了一個(gè)占位符 if 構(gòu)造,留下你來填充適當(dāng)?shù)膬?nèi)容。


使用 if 語句進(jìn)行替代的存根


輸入 self.speed >= 5。我們?cè)诖a中指定了 brake 方法只有在 速度 大于或等于 5 時(shí)才扣除 5:

def brake(self):
    if self.speed >=5:
        self.speed -=5

那么速度低于 5 怎么辦?當(dāng)你在現(xiàn)實(shí)生活中對(duì)一輛緩慢行駛的汽車進(jìn)行制動(dòng)時(shí),它只是停下來。讓我們?cè)诖a中指定這一點(diǎn)。


在方法中指定條件


brake 方法的最后一行后添加一行新代碼并開始輸入 el...。PyCharm 提示你插入 else。按 Enter 插入它,縮進(jìn)將自動(dòng)修復(fù):


https://resources.jetbrains.com/help/img/idea/2024.3/py_else_autocompletion.png


現(xiàn)在添加 self.speed = 0 以指定汽車應(yīng)該停止。以下是更新后的 brake 方法代碼:

def brake(self):
    if self.speed >=5:
        self.speed -=5
    else:
        self.speed =0

讓我們?cè)俅芜\(yùn)行以檢查是否成功修復(fù)了問題。加速汽車,然后進(jìn)行兩次制動(dòng),并檢查里程表:


修復(fù)問題后運(yùn)行腳本


現(xiàn)在我們得到了預(yù)期的正確結(jié)果。


詳細(xì)調(diào)試

調(diào)試工具窗口由用于幀、變量和觀察的專用窗格以及顯示所有輸入和輸出信息的控制臺(tái)標(biāo)簽頁組成。如果你想讓控制臺(tái)始終可見,可以將其拖到 PyCharm 窗口的邊緣之一。


單步調(diào)試

如果你想一行一行地查看代碼的執(zhí)行情況,無需在每一行都設(shè)置斷點(diǎn),可以逐步執(zhí)行代碼。

讓我們看看在示例程序中逐步執(zhí)行是什么樣子。通過窗口頂部的運(yùn)行小部件啟動(dòng)或重新啟動(dòng)調(diào)試器:


重新啟動(dòng)調(diào)試器


在打開的調(diào)試器控制臺(tái)中,按 a 加速汽車。調(diào)試器將在斷點(diǎn)處停止。

我們可以使用逐步調(diào)試工具欄按鈕來選擇下一步在哪個(gè)行停止。


步進(jìn)工具欄


例如,點(diǎn)擊單步跳過(Step Over)  app 按鈕,查看藍(lán)色標(biāo)記移動(dòng)到下一行代碼:


調(diào)試期間單步執(zhí)行


繼續(xù)點(diǎn)擊  app ,直到到達(dá) action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper()

現(xiàn)在,如果你點(diǎn)擊單步進(jìn)入(Step Into)app按鈕,你會(huì)看到調(diào)試器進(jìn)入 parse.py 文件:


在調(diào)試期間單步執(zhí)行


但是,如果你繼續(xù)使用單步跳過  app ,你會(huì)看到你的應(yīng)用程序只是繼續(xù)下一個(gè)循環(huán):


調(diào)試:傳遞到下一個(gè)循環(huán)


如果你想專注于自己的代碼,使用單步進(jìn)入我的代碼(Step Into My Code)python-ce按鈕。這樣你將避免進(jìn)入庫類。

有關(guān)更多信息,請(qǐng)參考逐步調(diào)試工具欄和單步調(diào)試程序。


觀察

PyCharm 允許你觀察任何變量。只需在評(píng)估表達(dá)式或在線程和變量標(biāo)簽頁下的工具欄下方的添加觀察字段中輸入要觀察的變量名稱。例如,my_car.time。這里提供代碼補(bǔ)全。然后點(diǎn)擊字段右側(cè)的。

然后轉(zhuǎn)到控制臺(tái)標(biāo)簽頁并輸入任何命令,例如,b。


觀看完成


當(dāng)你回到線程和變量標(biāo)簽頁時(shí),你會(huì)看到 my_car.time 的當(dāng)前值:


在調(diào)試工具窗口中監(jiān)視變量


有關(guān)更多信息,請(qǐng)參考觀察。


內(nèi)聯(lián)調(diào)試

你可能已經(jīng)注意到 PyCharm 的另一個(gè)功能,它使查看代碼執(zhí)行情況變得更加容易:內(nèi)聯(lián)調(diào)試器。只要你按下任何斷點(diǎn),PyCharm 就會(huì)在編輯器中顯示許多變量的值:


內(nèi)聯(lián)調(diào)試


此內(nèi)聯(lián)調(diào)試功能默認(rèn)啟用。如果你沒有看到內(nèi)聯(lián)調(diào)試值,請(qǐng)檢查它是否在調(diào)試器設(shè)置中啟用。點(diǎn)擊調(diào)試器(Debugger)工具欄上的app,然后選擇調(diào)試器設(shè)置(Debugger Settings )。確保在編輯器中顯示變量值(Show Variable Values in Editor)已啟用。

內(nèi)聯(lián)顯示值


總結(jié)

所以,你已經(jīng)做到了!恭喜!讓我們回顧一下你在 PyCharm 的幫助下所做的事情:

  • 找出問題的根源
  • 設(shè)置斷點(diǎn)
  • 逐步執(zhí)行程序
  • 創(chuàng)建觀察
  • 評(píng)估表達(dá)式


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)