網站首頁 編程語言 正文
1. 從鍵盤輸入一個整數,求 100 除以它的商,并顯示輸出。要求對從鍵盤輸入的數值進行異常處理。
try: ? ? n=int(input("請輸入一個整數:")) ? ? x=100/n ? ? print(x) except ValueError: ? ? print("異常,請重新輸入:") else: ? ? ? ? #可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
2.編程實現索引超出范圍異常 Index Error 類型。例如:chars=["a","b",100,-37,2]
try: ? ? chars=["a","b",100,-37,2] ? ? chars[5]="k" ? ? ? ? ? ? #產生該類型異常 except IndexError: ? ? print("異常,索引超出范圍") else: ? ? ? ? #可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
? 3.錄入一個學生的成績,把該學生的成績轉換為 A 優秀、B 良好、C 合格、D 不及格的形式,最后將該學生的成績打印出來。要求使用 assert 斷言處理分數不合理的情況。
try: ? ? score=int(input('請輸入學生的成績:')) ? ? assert 0<=score<=100 ?#斷言 成績必須在0-100范圍內 ? ? if score >= 90: ? ? ? ? print("A優秀") ? ? if score >= 80 and score < 90: ? ? ? ? print("B良好") ? ? if score >=60 and score <80: ? ? ? ? print("C合格") ? ? if score <60: ? ? ? ? print("D不及格") except ValueError: ? ? print("異常,輸入必須為整數") except AssertionError: ?#斷言異常信息 ? ? print("異常,輸入的成績{}不在0-100范圍內".format(score)) else: ? ? ? ? #可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
?4. 定義一個 Circle 類,其中有求面積的方法,當半徑小于 0 時, 拋出一個用戶自定義異常
import math class RangeErrorException(Exception):#自定義異常類,判斷半徑范圍是否異常 ? ? def __init__(self, error_reason='異常,圓的半徑不能為負數!'): ? ? ? ? Exception.__init__(self, error_reason)#定義的繼承自Exception的類RangeErrorException class Circle(): ? ? def __init__(self,r): ? ? ? ? self.r=r ? ? ? ? if self.r < 0:#當遇到自己設定的錯誤時,使用raise語句拋出自定義的異常 ? ? ? ? ? ? raise RangeErrorException ? ? def getS(self): ? #計算獲取圓的面積 ? ? ? ? area = math.pi *self.r *self.r ? ? ? ? return area try: ? ? r=eval(input("請輸入半徑r:")) ? ? c=Circle(r) ? ? print("面積為:{:.2f}".format(c.getS())) except RangeErrorException as reason: ? ? print(reason) else: ? ? ? ? #可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
?5. 假設成年人的體重和身高存在此種關系: ?身高(厘米)-100=標準體重(千克) ? 如果一個人的體重與其標準體重的差值在 其體重的正負 5%之間,顯示“體重正常”,其他則顯示“體重超標”或者“體重不達標”。編寫程序,能處理用戶輸入的異常并且使用自定義異常類來處理身高小于 30cm、大于 250cm 的異常情況。
class HighErrorException(Exception): ? ? def __init__(self,error_reason='異常,身高不能小于30cm或者大于250cm'):#自定義異常類,判斷身高是否異常 ? ? ? ? Exception.__init__(self,error_reason)#定義的繼承自Exception的類HighErrorException class relation: ? ? def __init__(self,high,weight): ? ? ? ? self.high=high ? ? ? ? self.weight=weight ? ? ? ? if self.high<30 or self.high>250: ? ? ? ? ? ? raise HighErrorException#當遇到自己設定的錯誤時,使用raise語句拋出自定義的異常 ? ? def rel(self): ? ? ? ? y=self.weight-(self.high-100) ? ? ? ? if abs(y) <= self.weight*0.05 : ? ? ? ? ? ? print("體重正常") ? ? ? ? elif y > self.weight*0.05 : ? ? ? ? ? ? print("體重超標") ? ? ? ? elif y < -self.weight*0.05: ? ? ? ? ? ? print("體重不達標") ? try: ? ? h=eval(input("請輸入身高(cm):")) ? ? w=eval(input("請輸入體重(kg):")) ? ? f=relation(h,w) ? ? f.rel() except HighErrorException as reason: ? ? print(reason) else: ? ? ? ? ? ?#可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
?6.設計一個一元二次方程類,并為這個類添加異常處理。
import math class FunctionErrorException(Exception): ? ? def __init__(self,error_reason='判別式<0,函數不存在實根'): ? ? ? ? Exception.__init__(self,error_reason) class Equation: ? ? def __init__(self,a,b,c): ? ? ? ? self.a = a ? ? ? ? self.b = b ? ? ? ? self.c = c ? ? def getDiscriminant1(self): ?#判別式 ? ? ? ? d=(self.b)**2 -(4*self.a*self.c) ? ? ? ? return d ? ? def getRoot1(self): ? ? ? ? if self.getDiscriminant1()>=0: ? ? ? ? ? ? x1=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a ? ? ? ? ? ? return x1 ? ? ? ? else: ? ? ? ? ? ? raise FunctionErrorException ? ? def getRoot2(self): ? ? ? ? if self.getDiscriminant1()>=0: ? ? ? ? ? ? x2=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a ? ? ? ? ? ? return x2 ? ? ? ? else: ? ? ? ? ? ? raise FunctionErrorException ? ?? try: ? ? a=eval(input("請輸入系數a:")) ? ? b=eval(input("請輸入系數b:")) ? ? c=eval(input("請輸入系數c:")) ? ? f=Equation(a,b,c) ? ? print("判別式:",f.getDiscriminant1()) ? ? print(" ? x1:",f.getRoot1()) ? ? print(" ? x2:",f.getRoot2()) except FunctionErrorException as reason: ? ? print(reason) else: ? ? ? ? #可選項,必須try-except語句為前提 ? ? print("程序正常運行,沒有捕捉到異常")
原文鏈接:https://blog.csdn.net/weixin_53173524/article/details/122590147
相關推薦
- 2021-12-09 C語言實現將double/float?轉為字符串(帶自定義精度)_C 語言
- 2022-10-17 Matlab實現帶豎線散點的核密度圖的繪制_C 語言
- 2022-07-18 RestTemplate轉發MultipartFile
- 2022-08-05 Python?list列表查找元素詳情_python
- 2022-10-05 Iptables防火墻基本匹配條件應用詳解_安全相關
- 2022-11-21 Android性能優化之JVMTI與內存分配_Android
- 2022-09-09 PyCharm?設置數據庫,查詢數據庫語句方式_python
- 2022-04-23 C語言字符函數isalnum()和iscntrl()詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支