日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Python異常之常見的Bug類型解決方法_python

作者:Python-派大星 ? 更新時間: 2022-05-20 編程語言

一、粗心導致的語法錯誤SyntaxError

1、input輸入報錯

age=input('請輸入你的年齡:')
if age>=18:
? ? print("成年人做事需要。。。。")

報錯:TypeError: '>=' not supported between instances of 'str' and 'int'

因為input輸入返回值是字符串所以無法與整數(shù)類型數(shù)字比較

解決辦法:input前面加上int(),把input輸入的數(shù)轉為整數(shù)類型,就可以比較數(shù)據(jù)了

age=int(input('請輸入你的年齡:'))
if age>=18:
? ? print("成年人做事需要。。。。")

2、循環(huán)語句報錯

while i<10:
? ? print (i)

循環(huán)語句報錯:錯誤原因,沒有循環(huán)變量初始值,也沒有循環(huán)變量的遞增,然后使用括號不規(guī)范,使用的中文的括號

解決方法: 添加虛幻變量的初始值,添加循環(huán)變量的遞增,將不規(guī)范的括號改正(使用中文括號)

循環(huán)要有三要素:

?i=1 ? #循環(huán)變量的起始值
while i < 10: ? #循環(huán)的條件語句
? ? print(i)
? ? i+=1 ? #變量的遞增

3、賦值報錯

for i in range(3):
? ? uname =input("請輸入用戶名:")
? ? upwd=input("請輸入密碼:")
? ? if uname="admin" and upwd=pwd:
? ? ? ? print("登陸成功!")
? ? else
? ? ? ? print("輸入有誤")
else
? ? print("對不起,三次均輸入錯誤")

報錯:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

錯誤多處:=是賦值,==才是比較,if語句比較時使用了=賦值語句,所以出錯,還有就是未定義比較的內(nèi)容admin然后就是else語句后面未加:

解決方法: ?在if語句比較處將=換成==,因為=是賦值,==是比較,還有就是在循環(huán)開始前加上用來比較的變量,然后再else語句后加上冒號:

admin="hua"
pwd="123456"
for i in range(3):
? ? uname =input("請輸入用戶名:")
? ? upwd=input("請輸入密碼:")
? ? if uname==admin and upwd==pwd:
? ? ? ? print("登陸成功!")
? ? else:
? ? ? ? print("輸入有誤")
else:
? ? print("對不起,三次均輸入錯誤")

粗心導致錯誤的自查寶典:

  • 1、漏了末尾的冒號,如if語句,循環(huán)語句,else子句等。
  • 2、縮進錯誤,該縮進的沒縮進,不該縮進的卻縮進了。
  • 3、把英文符號寫成中文符號沒比如說:引號,冒號,括號
  • 4、字符串拼接的時候,把字符串和數(shù)字拼接在一起
  • 5、沒有定義變量,比如說while的循環(huán)條件變量
  • 6、"=="比較運算符和"="賦值運算符的混用

二、知識不熟練導致的錯誤Bug

1、索引越界問題 IndexError

lst=[11,22,33,44]
print(lst[4])

錯誤:IndexError: list index out of range 索引越界,雖然有四個數(shù),但索引不是從一開始算,正索引是從0開始算,負索引是從-1開始算

解決辦法: 改寫為正確的索引

lst=[11,22,33,44]
print(lst[3])

2、append()函數(shù)的使用報錯

lst=[]
lst=append("A","B","C")
print((lst))

報錯:NameError: name 'append' is not defined 錯誤的方法使用append()函數(shù)

解決方法:掌握正確的使用函數(shù)的技巧,使用函數(shù)不是使用=調(diào)用,而是使用.去調(diào)用函數(shù),并且append()函數(shù)一次只能增加一個元素

lst=[]
lst.append("A")
lst.append("B")
lst.append("C")
print((lst)) ?#返回值['A', 'B', 'C']

知識點掌握不熟練的導致的錯誤,唯一的解決方法就是練練練

三、思路不清晰導致的問題解決方案

1、使用print()函數(shù)

將出錯的代碼用print輸出,將有問題的代碼注釋掉,一步一步的調(diào)試,最后將想要的結果輸出

2、使用"#"暫時注銷部分代碼?

解決方法:多加練習,掌握基礎知識

四、被動掉坑

程序代碼邏輯沒有錯,知識因為用戶錯誤操作或者一些"例外情況"而導致的程序崩潰

被動掉坑問題的解決方案:

python提供了異常處理機制,可以在異常出現(xiàn)時即使補貨,然后內(nèi)部消化,讓程序繼續(xù)運行
異常捕獲處理 try: ? except ?xxx:語句 ? xxx為錯誤類型

try:用于放入容易出錯的代碼
except用于處理異常并正常輸出后續(xù)代碼,可以使代碼不會報錯結束,可以出現(xiàn)多個except語句來處理多種異常類型。

使用方式:

try:

將容易出錯的代碼放入其中
易出錯代碼
易出錯代碼

except ?可能出現(xiàn)的類型:

print(捕獲異常后用于提示的話語)

except ?可能出現(xiàn)的類型:

print(捕獲異常后用于提示的話語)

一般代碼:

a=int(input("請輸入第一個整數(shù):"))
b=int(input("請輸入第二個整數(shù):"))
result=a/b
print("結果為:",result)

極容易出現(xiàn)報錯,導致終止后面的程序,比如整除不能輸入0,不能輸入英文,只要輸入了,那么就會報錯結束程序

所以就需要使用到try: ?except

try: ? ?#將易錯代碼放進去
? ? a=int(input("請輸入第一個整數(shù):"))
? ? b=int(input("請輸入第二個整數(shù):"))
? ? result=a/b
? ? print("結果為:",result)
except ZeroDivisionError: ? #不允許被0除的異常(異常類型在程序報錯時會出現(xiàn),將這種異常類型放入后,出現(xiàn)該異常就會自動處理,而不會報錯終止程序)
? ? print("對不起,除數(shù)不允許為0") ?#出現(xiàn)該異常后的提示
except ValueError: ? ?#輸入異常,int括號里的input只能輸入數(shù)字串,不能輸入字符串
? ? print("只能輸入數(shù)字串") ? #出現(xiàn)該異常后的提示
print("程序結束") ? ?#程序可能出現(xiàn)的異常都用except寫出來了,所以不管出現(xiàn)什么異常,后面的程序一樣運行

原文鏈接:https://blog.csdn.net/weixin_53466908/article/details/122780023

欄目分類
最近更新