日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

?

?

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

                      Python人工智能從入門到精通

?

?

?

?

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

?

?

?



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

? ? 說明:

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


示例:

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

?

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

?示例:

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

?

?

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

?

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

?

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

?

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("錯誤數(shù)據(jù)是:", err)print('獲取成績失敗')score = 0print("學生的成績?yōu)?", score)

?


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

?

    

Python全部的錯誤類型

?

?

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

?

?

練習:
寫一個函數(shù) get_score() 來獲取學生成績,
要求用戶輸入 1~100的整數(shù),輸果輸入出現(xiàn)異常,返此函數(shù)返回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. 分解質因數(shù), 輸入一個整數(shù), 分解質因數(shù) ,
如:
輸入 90
則打印:
“90=2*3*3*5”
(質因數(shù)是指最小能被原數(shù)整除的素數(shù) 不包括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. 修改原學生信息管理程序,加入異常處理語句,讓程序在任何情況下都能夠按邏輯正常執(zhí)行.
例如:
輸入成績和年齡時,如果用戶輸入非法字符串也不會導致程序崩潰

?

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

總結

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

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