python 除數不能為零的報錯有哪些_【社區精選40】Python錯誤處理及代碼調試方法(文末贈書中獎名單)...

6d555f1afd04bf4bcb0d1518263b9b03.gif

本文整理自愛數據學院中的問答

更多精彩問答,進入下方社區網站查看

http://www.lovedata.cn/invitation


社區精選話題 第40期

Python錯誤處理及代碼調試方法

一次寫完代碼程序并能夠正常運行的概率很小很小,總會有各種各樣的錯誤bug需要處理。有的報錯簡單,看看報錯信息簡單修改一下就可以了。

但是有的報錯很復雜,特別是一些復雜長代碼,需要我們到錯誤的位置,需要判斷是什么變量出現了問題,因此我們除了會寫代碼之外,還需要會解決常見的錯誤,那么具體有哪些處理錯誤的方法呢,具體簡單介紹以下幾塊內容:

1

異常處理

基本語法:

try:
??#要運行別的代碼
except?:
??#如果在try部份引發了'xxxError'異常就會執行這一步語句
except?,:
??#如果上一個except語句引發了'xxxError'異常,獲得附加的數據,并執行這一部分的語句
else:
??#如果沒有出現異常要執行的代碼
finally:
??#無論發生異常與否,最終都要執行的代碼

比如:

try:
??print('執行try部分語句:')
??i =?input('輸入一個除數:')
??result =?10?/ i
??print('result:', result)
except ZeroDivisionError:
??print("除數不能為0")
else:
??print("成功輸出結果")
finally:
??print("無論發生異常與否,我都會在這里")

當然這里的except后面可以省略錯誤名稱,但是不建議。省略就意味著只要有錯誤就執行這一部分代碼,比如我在這里輸入一個字母a,明明錯誤應該是除數不能為字符串,這里仍然說除數不能為0是不是就不正確了,所以盡量寫出錯誤的名稱

在這個語法中,try是核心成員,意思是不能沒有try,其他的內容都可以或多或少的省略掉,比如try-except,try-finally等。

2

debug調試

調試有很多種方法,這里列出主要的幾種方法:

1.用print語句

用print()語句把可能有問題的每一個過程都進行輸出,就像上面異常處理當中的一樣,這種方法簡單粗暴,但是在處理完所有的錯誤之后運行可能會有很多的無用信息,所以最終還要回來刪掉這些print語句,于是有了下面的方法。

2.斷言(assert)

在這里“斷言”是一種程序設計的專業術語,是一種放在程序中的一階邏輯(如一個結果為真或是假的邏輯判斷式),目的是為了標示與驗證程序開發者預期的結果。凡是用print()來輔助查看的地方都可以用斷言(assert)來進行替代。

但是在程序中如果導出都是assert也并沒有比print()好到哪里去,不過可以通過社吹Python解釋的-o參數來啟用或停用assert。

3.logging

把print()替換成logging是第三種方式,和assert比,logging不會拋出錯誤,而且還可以輸出到文件中形成一個日志文件

logging的好處是,在運行代碼中不會拋出錯誤,而是把錯誤輸出到文件中,還可以指定記錄信息的級別,有debug、info、warning、error等,且只會有一個生效

4.pdb

第四種方式是啟動Python的調試器pdb,讓程序以單步方式運行,可以隨時查看運行的狀態,就像使用jupyter notebook來一行一行運行代碼一樣,但是jupyter notebook的功能會更強大一些

5.IDE

利用一些支持調試功能的IDE工具來進行調試,比如VS code,PyCharm等

6.jupyter notebook

最喜歡的方式就是使用jupyter notebook來進行調試代碼,可以自己設置一次運行多少行代碼,能夠準確定位到具體的錯誤位置,也是非常推薦的一個方式來進行代碼的調試。

最后,代碼調試是一個非常需要耐心的過程,也是體現學習程度的一個很重要的技能,希望大家能夠好好掌握~

參考文章:https://www.liaoxuefeng.com/wiki/1016959663602400/1017602696742912

-?END -

本文為中國統計網社區產出內容,未經允許禁止轉載


贈書活動中獎名單如下:

請未聯系【小數】發送郵寄信息的讀者,盡快聯系我們!

708496dceaaa1f35c7e24f4b9f6d7dee.png

6d6f57cda08648722a141cb9b67db970.gif

d7826944d65b8fe8e3c5c057d1934d52.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534002.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用python批量查詢企業信息_python實現批量獲取指定文件夾下的所有文件的廠商信息...

本文實例講述了python實現批量獲取指定文件夾下的所有文件的廠商信息的方法。分享給大家供大家參考。具體如下:功能代碼如下:import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#輸出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL數據庫開發之一】Mac下配置安裝數據庫-MySQL

本站文章均為那么從今天開始陸續會更新數據庫和Hibernate框架的博文,也是Himi學習的歷程記錄,希望大家能共同討論和研究;OK,本篇簡單介紹安裝吧,首先到MySQL官方網站:如上圖:點擊DOWNLOAD &…

系統新模塊增加需要哪些步驟_想要吸引人流,兒童樂園需要增加哪些新設備呢...

兒童樂園是現今最火爆的一個投資項目,因為它的主要消費群體是孩子,而現在的家長們對孩子們的寵愛,基本都會答應讓孩子們去兒童樂園里面玩耍。但是兒童樂園的投資經營者也會遇見一些小問題,例如兒童樂園添加設備要怎么選擇呢&#…

php mysql 圖像_php-向/從MySQL數據庫插入/查看圖像

我在DB中插入圖像時遇到問題.該表具有以下結構:> id-> INT(3)->自動增量>名稱-> VARCHAR(30)> extension-> VARCHAR(10)[可能太短]> img-> MEDIUMBLOB插入圖像的PHP代碼為:if($_FILES[file][error]0){$result is_uploaded_f…

照片打印預覽正常打印空白_小米發布口袋照片打印機,可無墨打印3寸背膠照片...

9月11日消息,小米推出一款小米口袋照片打印機。與之前的小米米家照片打印機相比,這款新品更加小巧便攜,體積接近充電寶大小,凈重僅181g,便于隨身攜帶。小米口袋照片打印機采用ZINK無墨技術打印,即使用嵌入紙…

c中獲取python控制臺輸出_在真實的tim中用C捕獲控制臺python打印

我正在嘗試從C創建一個python進程,并從python腳本獲取打印結果。在這就是我的C代碼:namespace ConsoleApp1{public class CreateProcess{public String PythonPath { get; set; }public String FilePath { get; set; }public String Arguments { get; se…

python三大編程語言_程序員最需要的三種編程語言

隨著科學技術的進步和新技術的進步,編程語言的種類越來越多,變化是程序員需要跟蹤和學習許多語言 然而,有太多的語言無法一一掌握 在目前的形式中,最需要掌握的三種編程語言是 現在判斷還不晚 坦白說,找工作很容易 它可…

MySQL優化調優有沒有做過_MySQL 調優/優化的 100 個建議

MySQL是一個強大的開源數據庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這里提供 101 條優化 MySQL 的建議。有些技巧適合特定的安裝環境,但是思路是相通的。我已經將它們分成了幾類以幫助你理解。MySQL監控MySQL服務器硬件和OS(操作系統)調優&…

python語句print(type([1、2、3、4))_Python 學習第一天

一、學習內容1.print:表示輸出print (“hello world”)單行注釋:#多行注釋:“““ ”””2.運算符注意:才表示等于,!表示不等于3.位運算符~按位取反:~104.變量和賦值teacher“老馬的…

mysql核心參數_MySQL技術體系之核心參數

本文主要基于MySQL 5.7版本的數據庫環境,總結my.cnf文件中核心參數的配置使用,讓更多的人對MySQL技術體系有更全面、更專業的深度了解。一、客戶端核心參數1、port端口號,默認33062、socketSocket文件地址,默認以.sock為文件名稱后…

svd降維 python案例_SVD(奇異值分解)Python實現

注: 在《SVD(異值分解)小結 》中分享了SVD原理,但其中只是利用了numpy.linalg.svd函數應用了它,并沒有提到如何自己編寫代碼實現它,在這里,我再分享一下如何自已寫一個SVD函數。但是這里會利用到SVD的原理,…

salt 啟動mysql_saltsack自動化配置day03:服務部署mysql部署

一、MySQL集群需求分享1、抽象:功能模塊把基礎的寫成通用服務部署也要抽象出來模塊redis內存有的多,有的少,可以config set在線更改redis 安裝、配置、啟動mysql 安裝、配置(my.cnf可以統一 目錄默認配置可以統一)master: server_id 1111slav…

jtag引腳定義_從逆向分析的角度學習硬件調試技巧JTAG,SSD和固件提取

我想從逆向的角度做了深入了解JTAG,JTAG是許多嵌入式CPU使用的硬件級別調試機制,我希望通過這篇文章從逆向工程師的角度解釋如何使用JTAG,并在此過程中提供一些實際示例。0x01 研究目標通過這篇文章,我希望做到以下幾點&#xff1…

python virtualenv conda_在vscode中啟動conda虛擬環境的思路詳解

問題:cudatoolkit cudnn 通過conda 虛擬環境安裝,先前已經使用virtualenv安裝tf,需要在conda虛擬環境中啟動外部python虛擬環境思路:conda prompt即將 [虛擬環境位置] 以參數形式傳入 [activate.bat]VSOCDE中的設置添加以下語句{&…

python如何導入圖片imread_OpenCV 使用imread()函數讀取圖片的六種正確姿勢

經常看到有人在網上詢問關于imread()函數讀取圖片失敗的問題。今天心血來潮,經過實驗,總結出imread()調用的四種正確姿勢。通常我要獲取一張圖片的絕對路徑是這樣做的:在圖片上右鍵——屬性——安全——對象名稱。然后復制對象名稱就得到了圖…

python2.7與3.7腳本轉換_python 2.7 - python 3.7 升級記錄

更換的模塊python 3.7 模塊名python 2.7 模塊名python 3.7 包python 2.7包pymysqlMySQLdbPyMySQLMySQL-pythonpdfminerpdfminerpdfminer.sixpdfminerurllib.parseurlparse自帶自帶htmlHTMLParser自帶HTMLparser語法變化1. print 修改為 print()2. except Exception, e 修改為 e…

遠程過程調用失敗_Java開發大型互聯網RPC遠程調用服務實現之問題處理方案

引言RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡…

chrome 新的session 設置_為什么還是由這么多人搞不懂Cookie、Session、Token?

作者:不學無數的程序員鏈接:https://urlify.cn/Yfm6Vr# Cookie洛:大爺,樓上322住的是馬冬梅家吧? 大爺:馬都什么? 夏洛:馬冬梅。 7大爺:什么都沒啊? 夏洛…

mysql for update用處_for update的作用和用法

一、for update定義for update是一種行級鎖,又叫排它鎖,一旦用戶對某個行施加了行級加鎖,則該用戶可以查詢也可以更新被加鎖的數據行,其它用戶只能查詢但不能更新被加鎖的數據行.如果其它用戶想更新該表中的數據行&…

python大數據零基礎_零基礎學習大數據人工智能,學習路線篇!

大數據處理技術怎么學習呢?首先我們要學習Python語言和Linux操作系統,這兩個是學習大數據的基礎,學習的順序不分前后。Python:Python 的排名從去年開始就借助人工智能持續上升,現在它已經成為了語言排行第一名。從學習難易度來看…