Python 入門指南 5.0
exercise1404.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | # 定義算術運算類別 class Calculator: # 設定實體屬性 def __init__(self, v1, v2): # 呼叫設定屬性的方法 self.set_value(v1, v2) # 設定實體物件的字串形式 def __str__(self): return str(self.__value1) + ", " +\ str(self.__value2) # 設定實體物件在互動介面的字串形式 def __repr__(self): return "兩個數字是 " + str(self.__value1) +\ ", " + str(self.__value2) + "\n" +\ "和" + str(self.addition) +\ "差" + str(self.substraction) +\ "積" + str(self.multiplication) +\ "商" + str(self.division) +\ "餘數" + str(self.modulo) # 設定實體物件的格式化字串形式 def __format__(self, op): # 建立格式化初始回傳字串 result = str(self.__value1) + " " +\ op + " " + str(self.__value2)\ + " = " # 依據運算子添加字串 if op == "+": result += str(self.addition) elif op == "-": result += str(self.substraction) elif op == "*": result += str(self.multiplication) elif op == "/": result += str(self.division) elif op == "%": result += str(self.modulo) else: result += "None" # 回傳格式化字串 return result # 依據實體屬性回傳真假值 def __bool__(self): if self.__value1 and self.__value2: return True else: return False # 設定屬性的方法 def set_value(self, v1, v2): # 檢查參數是否為整數 try: # 將參數轉換成整數 v1 = int(v1) v2 = int(v2) # 設定實體屬性 self.__value1 = v1 self.__value2 = v2 except ValueError: # 將實體屬性設定為 None self.__value1 = None self.__value2 = None # 印出錯誤訊息 print("型態錯誤") # 加法的 getter @property def addition(self): # 檢查實體屬性是否有值 if self.__value1 and self.__value2: return self.__value1 + self.__value2 else: return None # 減法的 getter @property def substraction(self): # 檢查實體屬性是否有值 if self.__value1 and self.__value2: return self.__value1 - self.__value2 else: return None # 乘法的 getter @property def multiplication(self): # 檢查實體屬性是否有值 if self.__value1 and self.__value2: return self.__value1 * self.__value2 else: return None # 除法的 getter @property def division(self): # 檢查實體屬性是否有值 if self.__value1 and self.__value2: return self.__value1 / self.__value2 else: return None # 取餘數的 getter @property def modulo(self): # 檢查實體屬性是否有值 if self.__value1 and self.__value2: return self.__value1 % self.__value2 else: return None # 使用者輸入 n1 = input("請輸入兩個整數:") n2 = input(":") # 建立類別 c = Calculator(n1, n2) # 印出實體物件的真假值 print(bool(c)) # 檔名: exercise1404.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 9 月 |