日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python全栈工程师(异常(基础))

發布時間:2023/12/18 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python全栈工程师(异常(基础)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

ParisGabriel 每天堅持手寫??一天一篇? 決定堅持幾年 為了夢想為了信仰 ?

                      Python人工智能從入門到精通

?

?

?

?

補充:包的相對導入 只對后兩種導入方式有用? 前兩次改進的學生管理系統在20課中 已補充

?

?

?



異常(基礎)except:
  什么是錯誤:
    是指由于邏輯或語法等導程序無法正常執行的問題
  什么是異常:
    是程序出錯的標識符的一種狀態
    當異常發時 程序會再向下執行,而轉去調用此函數的地方
    待處理此錯誤并恢復正常狀態
  異常的作用:
    用作信號, 通知上層調用者有錯誤產生需要處理
try 語句
  兩種語法:
    ry-except語句(接受異常通知)
    try-finally語句
try-except 語法
   try:
    可能觸發異常的語句
    except 錯誤類型1[as 變量1]:
      異常處理語句2
    except 錯誤類型2[as 變量2]:
       異常處理語句2
    except (錯誤類型3, 錯誤類型4,...)[as 變量3]:
       異常處理語句3
    ......
    except:
      異常處理語句(其他)(匹配所有類型錯誤)
    else:
      未發生異常語句(可以沒有此語句 沒有發成異常時調用)
    finlly:
      最終語句
 作用:
   嘗試捕獲異常程序由異常狀態轉為正常狀態并正常執行

? ? 說明:

   1. as 子句是用于綁定錯誤對象的變量,可以省略
   2. except 子句可以有一個或多個,但至少要有一個
   3. else 子句最多只能有一個,也可以省略不寫
   4. finally 子句最多只能有一個,也可以省略不寫
   5. else 子句將在try沒有出現異常時執行
   6. finally子句的語句在任何情況下都會被執行


示例:

# 此示例示意用try-except 語句捕獲異常并做出相應的處理 def div_apple(n):print("%d個蘋果您想分給幾個人?" % n)s = input("請輸入人數: ")cnt = int(s) # <- 此處可能觸發ValueError類型錯誤result = n / cnt # <- 此處可能觸發ZeroDivisitionError錯誤print("每個人分了%d個蘋果" % result)try:print("開始分蘋果")div_apple(10) # 可能觸發異常的調用print("結束分蘋果") except ValueError:print("發生成值錯誤,已處理并轉為正常狀態!") except ZeroDivisionError:print("發生了被零除的錯誤,程序已轉為正常狀態")print("程序正常執行并完全任務,退出程序")

?

try-finally語法
  try:
   ? ?可能觸發異常的語句
  finally:
    最終語句
 說明:
   1.finally子句不可以省略
   2.一定不存在except子句
 作用:
   通常try-finally語句來做觸發異常時必須要處理的事情
   無論異常是否發生 finally子句一定會被執行
 注意:
   try-finally 語句不會改變程序的(正常/異常)狀態

?示例:

# 以下以 煎蛋為例示意 try-finally語句的用法 # 必須要做的事情是,關閉天燃氣def fry_egg():print("打開天燃氣點燃...")try:count = int(input("請輸入雞蛋個數: "))print("完成煎雞蛋,共煎了%d個雞蛋" % count)finally:print("關閉天燃氣")fry_egg()

?

?

raise 語句:(發起異常通知)
  作用:
    觸發一個錯誤, 讓程序進入異常狀態
  語法:
    raise 異常類型
    或
    raise 異常對
  實例:

?

def make_exception():print("函數開始")# 發出一個ValueError類型的錯誤通知給調用者# raise ValueErrorerr = ValueError("這是自定義的錯誤數據")raise err # 用 err觸發一個異常通知print("函數結束")try:make_exception()print("make_exception調用結束!") except ValueError as e:print("接收到ValueError類型的異常通知")print("錯誤對象是:", e)

?

assert 斷言語句:
  語法:
    assert 真值表達式, 錯誤數據(通常是字符串)
  作用:
    當真值表達式為False時, 用錯誤數據創建一個AssertionError
    類型的錯誤, 并進入異常狀態
  等同于:
    if 真值表達式 == false
      raise AssertrtionError(錯誤數據)
  實例:

?

def get_score():s = int(input("請輸入學生成績: "))assert 0 <= s <= 100, '成績超出范圍'# if not (0 <= s <= 100):# raise AssertionError('成績超出范圍')return stry:score = get_score() except AssertionError as err:print("錯誤數據是:", err)print('獲取成績失敗')score = 0print("學生的成績為:", score)

?


    小結:
      異常處理語句(4條):
        try-except 語句:
          用于接受異常通知, 捕獲異常
        try-finally 語句:
          執行必須執行的語句
        raise 語句:
          發送異常通知, 并進入異常狀態
        assert 語句:
          根據條件選著性的發送 AssertionError類型的異常通知
為什么要處理異常機制:
  在程序調用層比較深的時候, 向主調用函數傳遞錯誤信息 需要層層return返回
  比較麻煩用異常處理機制可以較簡單傳遞錯誤信息

?

    

Python全部的錯誤類型

?

?

錯誤類型說明
以下內容必講?
ZeroDivisionError除(或取模)零 (所有數據類型)
ValueError傳入無效的參數
AssertionError斷言語句失敗
StopIteration迭代器沒有更多的值
IndexError序列中沒有此索引(index)
IndentationError縮進錯誤
OSError輸入/輸出操作失敗
ImportError導入模塊/對象失敗
NameError未聲明/初始化對象 (沒有屬性)
AttributeError對象沒有這個屬性
??
GeneratorExit生成器(generator)發生異常來通知退出
TypeError對類型無效的操作
KeyboardInterrupt用戶中斷執行(通常是輸入^C)
OverflowError數值運算超出最大限制
FloatingPointError浮點計算錯誤
BaseException所有異常的基類
SystemExit解釋器請求退出
Exception常規錯誤的基類
StandardError所有的內建標準異常的基類
ArithmeticError所有數值計算錯誤的基類
EOFError沒有內建輸入,到達EOF 標記
EnvironmentError操作系統錯誤的基類
WindowsError系統調用失敗
LookupError無效數據查詢的基類
KeyError映射中沒有這個鍵
MemoryError內存溢出錯誤(對于Python 解釋器不是致命的)
UnboundLocalError訪問未初始化的本地變量
ReferenceError弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError一般的運行時錯誤
NotImplementedError尚未實現的方法
SyntaxError Python語法錯誤
TabErrorTab 和空格混用
SystemError一般的解釋器系統錯誤
UnicodeErrorUnicode 相關的錯誤
UnicodeDecodeErrorUnicode 解碼時的錯誤
UnicodeEncodeErrorUnicode 編碼時錯誤
UnicodeTranslateErrorUnicode 轉換時錯誤
以下為警告類型?
Warning警告的基類
DeprecationWarning關于被棄用的特征的警告
FutureWarning關于構造將來語義會有改變的警告
OverflowWarning舊的關于自動提升為長整型(long)的警告
PendingDeprecationWarning關于特性將會被廢棄的警告
RuntimeWarning可疑的運行時行為(runtime behavior)的警告
SyntaxWarning可疑的語法的警告
UserWarning用戶代碼生成的警告
詳見:help(builtins)

?

?

練習:
寫一個函數 get_score() 來獲取學生成績,
要求用戶輸入 1~100的整數,輸果輸入出現異常,返此函數返回0,
否則返回用戶輸入的成績
示例:
def get_score():
...
score = get_score()
print("學生的成績是:", score)

?

?

練習:
1. 一個球從100米高空落下 ,每次落地后反彈高度是原高度的一半, 在落下
1)寫程序算出皮球在第10次落地后反彈高度是多高?
2)打印出球共經過多少米的路程

?

答案:

def ball(n, m):L = [100]while True:if n == 0:print("最后彈起的高度是%s米" % s)breaks = m * 0.5m = sL.append(s + m)n -= 1return L print("10次共經歷了%s米的路程" % sum(ball(10, 100)))

?


2. 分解質因數, 輸入一個整數, 分解質因數 ,
如:
輸入 90
則打印:
“90=2*3*3*5”
(質因數是指最小能被原數整除的素數 不包括1)

答案:

def m(n):ret = []while n > 1:for i in range(n):k = i + 2if n % k == 0:ret.append(k)n = int(n / k)breakreturn retprint(m(90))

?

?

?

?

3. 修改原學生信息管理程序,加入異常處理語句,讓程序在任何情況下都能夠按邏輯正常執行.
例如:
輸入成績和年齡時,如果用戶輸入非法字符串也不會導致程序崩潰

?

轉載于:https://www.cnblogs.com/ParisGabriel/p/9338724.html

總結

以上是生活随笔為你收集整理的Python全栈工程师(异常(基础))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。