異常處理,MD5
阿新 • • 發佈:2018-12-27
異常處理. try except raise
try:
程式碼
except 異常類:
除了錯, 如何處理異常
except 異常類:
除了錯, 如何處理異常
except 異常類:
除了錯, 如何處理異常
else:
當程式不出錯
finally:
不管出不出錯, 都要執行
raise 異常類("資訊")
如何自己定義異常
class 類(Exception):
pass
堆疊
import traceback
traceback.format_exc()
# print(1/0) # 報錯. 程式會結束執行 # print("哈哈哈哈哈哈哈") # 0不能作為除數 , 在程式執行的時候產生了一個錯誤物件. # 系統會丟擲這個錯誤. 如果沒有人處理錯誤. 錯誤就會被噴出給使用者 # 處理異常: 在python中可以通過try....except...來處理錯誤 # try: # print(1/0) # except Exception: # print('出錯了') # print('哈哈') # 可以正常執行下去 # 所有的異常的根是Exception, 所有的異常類都會預設繼承Exception # 錯誤 # 打架錯誤 鬥毆錯誤 賭博錯誤 # try: # # print(1/0) # f = open('哈哈哈哈', mode='r') # # d = {[]: 123} # except ZeroDivisionError: # print('除以0出錯了') # except FileNotFoundError: # print('檔案不存在的錯誤') # except Exception: # 兜底的 # print('其他錯誤') # else: # 當try中的程式碼不產生任何錯誤的時候,會自動的執行else裡的程式碼 # pass # finally: # 最終,不管出錯還是不出錯,都要執行最後的finally 一般用來收尾 # print('哈哈哈哈哈哈哈哈哈') # 如何自己定義異常 # 隨便寫一個類. 這個類只要繼承了Exception 這個類就是一個異常類就可以作為raise物件 # class CulException(Exception): # pass # # # 如何手動丟擲異常 # def cul(a, b): # # 只能是數字相加 # if (type(a) == int or type(a) == float ) and (type(b) == int or type(b) == float): # return a + b # else: # # 丟擲異常 # # raise 異常類(錯誤資訊) # raise CulException("我沒辦法給你處理這樣的運算") # # # print(cul("就不放, 氣死你",2)) # # # class JackException(Exception): # pass # 寫一個男澡堂子 import traceback # 用來檢視堆疊資訊 class GenderException(Exception): pass class Person: def __init__(self, name, gender): self.name = name self.gender = gender def xizao(self): print(f"{self.name}在洗澡") def nan_zao_tang_zi(ren): if ren.gender == "男": ren.xizao() else: raise GenderException("性別不對. 去對門看看") # 拋異常是很重要的 try: p1 = Person("趙亞磊", "不知道") p2 = Person("婁鯤鵬", "男") nan_zao_tang_zi(p1) nan_zao_tang_zi(p2) except GenderException: # ret = traceback.format_exc() # 檢視堆疊資訊, 看錯誤的 # print(ret) print("出錯了. 很可惜") # 錯誤資訊叫堆疊資訊
MD5加密
import hashlib
obj = hashlib.md5(b'鹽')
obj.update(b"要加密的內容")
print(obj.hexdigest())
# 加密,不可逆 相對安全 import hashlib # md5物件 # obj = hashlib.md5(b'dsadasdasdas') # 加鹽 # obj.update('123456'.encode("utf-8")) # 把要加密的內容給md5 # print(obj.hexdigest()) # 拿到密文 82f69062874319af1af5024f39f62f41 def my_md5(s): obj = hashlib.md5(b'dsadasdasdas') # 加鹽 obj.update(s.encode("utf-8")) # 把要加密的內容給md5 return obj.hexdigest() # print(my_md5('123456')) # 82f69062874319af1af5024f39f62f41 # 應用 # 庫裡 username = 'wusir' password = '82f69062874319af1af5024f39f62f41' uname = input('請輸入你的使用者名稱:') upwd = input('請輸入你的密碼:') # 123456 if uname == username and my_md5(upwd) == password: print('登入成功') else: print('登入失敗')