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 月

回到練習題目
上一頁 exercise1403.py
回 Python 入門指南 5.0 首頁
下一頁 exercise1405.py
回 Python 教材首頁
回程式語言教材首頁