1.編寫一個計算減法的方法,當第一個數小於第二個數時,拋出“被減數不能小於減數"的異常。 class Sub(Exception): def __init__(self, x, y): self.x = x self.y = y try: a = int(input('請輸入被減數')) b = i ...
1.編寫一個計算減法的方法,當第一個數小於第二個數時,拋出“被減數不能小於減數"的異常。
class Sub(Exception): def __init__(self, x, y): self.x = x self.y = y try: a = int(input('請輸入被減數')) b = int(input('請輸入減數')) if a < b: raise Sub(a, b) except Sub as error: print('異常原因:被減數%d不能小於減數%d' % (error.x, error.y)) else: c = a - b print('%d減%d的結果為%d' % (a, b, c)) 輸出結果: 請輸入被減數>? 0 請輸入減數>? 1 異常原因:被減數0不能小於減數1 請輸入被減數>? 4 請輸入減數>? 2 4減2的結果為2
2.編寫程式,提示輸入兩個數字a、b,併進行a與b的除法運算,把運算結果列印出來。要求對輸入和程式進行檢測,可以排除所有的錯誤。(可以使用以下的異常檢查下麵的錯誤:IOError、ValueError、ZeroDivisionError等,不能使用BaseException異常)。
方法一: def division() : try : a, b = int(input("輸入兩個數字以完成除法(a/b):")) print("{} / {} = {}".format(a, b, c)) except ZeroDivisionError : print("Error: The divisor can not be zero") # 除數不能為零! except IOError : print("Error:Wrong input or output") # 輸入或輸出錯誤” except ValueError : print("Error:Wrong value,變數應為數值類型!") # 值錯誤 except NameError : print("Error: No characters or strings 變數缺少") # 使用了沒有定義的對象,沒有字元或字元串 except SyntaxError : print("Error:No symbols or whitespaces") # 語法錯誤:無符號或空格 except TypeError : print("Error: The data type is wrong and must be number") # 數據類型錯誤,必須要求除數和被除數是數字,不能是字元串或者其他 else : print(a, '/', b, '=', c)
輸出結果: 3/0 Traceback (most recent call last): File "D:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-31-f6cc6d14333b>", line 1, in <module> 3/0 ZeroDivisionError: division by zero 8/2 Out[33]: 4.0 hhhhj/7 NameError: name 'hhhhj' is not defined
方法二: try: a = int(input("Please input the first number: ")) b = int(input("Please input the second number: ")) c = a / b print("{} / {} = {}".format(a, b, c)) except IOError: print("You input a non-number!") except ValueError: print("You input a non-number!") except ZeroDivisionError: print("You can not divide a number by zero!") else: print("Division done!") 輸出結果: 請輸入a的值:>? 3 請輸入b的值:>? 2 a除以b的結果是:1.5 請輸入a的值:>? q 輸入不是正確的數字,請重新輸入: 請輸入a的值:>? f 輸入不是正確的數字,請重新輸入:
3、定義函數,在控制臺中獲取成績(1-100),如果輸入有誤,請重新輸入。
class OutOfRange(Exception) : def __init__(self, x) : self.x = x self.x = "輸入有誤,請重新輸入" def grades() : try : x = int(input("請輸入[0,100]之間的分數:\n")) if x < 0 or x > 100 : raise OutOfRange(x) except OutOfRange as er : print(er.x) else : print("你的成績為", x) grades() 輸出結果: 100 你的成績為 100 -80 輸入有誤,請重新輸入 120 輸入有誤,請重新輸入
# 方法二: def score() : global score try : score = int(input('請輸入學生的成績:')) assert 0 <= score <= 100 # 斷言 成績必須在0-100範圍內 if score >= 90 : print("輸入正確,成績為:A ,優秀") if 80 <= score < 90 : print("輸入正確,成績為:B,良好") if 60 <= score < 80 : print("輸入正確,成績為:C,合格") if score < 60 : print("輸入正確,成績為:D,不及格") except ValueError : print("輸入有誤,輸入必須為整數,請重新輸入") except AssertionError : # 斷言異常信息 print("輸入有誤,輸入的成績{},不在0-100範圍內請重新輸入,".format(score)) else : # 可選項,必須try-except語句為前提 print("程式正常運行,沒有捕捉到異常") score()
輸出結果: 請輸入學生的成績:>? 99 輸入正確,成績為:A ,優秀 程式正常運行,沒有捕捉到異常 請輸入學生的成績:>? 55 輸入正確,成績為:D,不及格 程式正常運行,沒有捕捉到異常 請輸入學生的成績:>? 66 輸入正確,成績為:C,合格 程式正常運行,沒有捕捉到異常 請輸入學生的成績:>? -98 輸入有誤,輸入的成績-98,不在0-100範圍內請重新輸入,
方法一:
def division() :
try :
a, b = int(input("輸入兩個數字以完成除法(a/b):"))
print("{} / {} = {}".format(a, b, c))
except ZeroDivisionError :
print("Error: The divisor can not be zero") # 除數不能為零!
except IOError :
print("Error:Wrong input or output") # 輸入或輸出錯誤”
except ValueError :
print("Error:Wrong value,變數應為數值類型!") # 值錯誤
except NameError :
print("Error: No characters or strings 變數缺少") # 使用了沒有定義的對象,沒有字元或字元串
except SyntaxError :
print("Error:No symbols or whitespaces") # 語法錯誤:無符號或空格
except TypeError :
print("Error: The data type is wrong and must be number") # 數據類型錯誤,必須要求除數和被除數是數字,不能是字元串或者其他
else :
print(a, '/', b, '=', c)
輸出結果:
3/0
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-31-f6cc6d14333b>", line 1, in <module>
3/0
ZeroDivisionError: division by zero
8/2
Out[33]: 4.0
hhhhj/7
NameError: name 'hhhhj' is not defined
方法二:
try:
a = int(input("Please input the first number: "))
b = int(input("Please input the second number: "))
c = a / b
print("{} / {} = {}".format(a, b, c))
except IOError:
print("You input a non-number!")
except ValueError:
print("You input a non-number!")
except ZeroDivisionError:
print("You can not divide a number by zero!")
else:
print("Division done!")
輸出結果:
請輸入a的值:>? 3
請輸入b的值:>? 2
a除以b的結果是:1.5
請輸入a的值:>? q
輸入不是正確的數字,請重新輸入:
請輸入a的值:>? f
輸入不是正確的數字,請重新輸入: