Python 入門指南 5.0
exercise1403.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 | # 定義算術運算類別
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 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(format(c, "+"))
# 檔名: exercise1403.py
# 說明:《Python入門指南》的練習
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 9 月
|