Python 入門指南 5.0
exercise1308.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
127
128 | # 定義計算數列的類別
class NumberSequence:
# 設定實體屬性
def __init__(self, v1):
# 呼叫設定屬性的方法
self.set_value(v1)
# 設定屬性的方法
def set_value(self, v1):
# 檢查參數是否為整數
try:
# 將參數轉換成整數
v1 = int(v1)
# 設定實體屬性
self.__value1 = v1
except ValueError:
# 將實體屬性設定為 None
self.__value1 = None
# 印出錯誤訊息
print("型態錯誤")
# 階乘的 getter
@property
def factorial(self):
if self.__value1:
# 暫存結果的變數
result = 1
# 計算到 self.__value1 的階乘
for i in range(1, self.__value1+1):
result *= i
# 回傳計算結果
return result
else:
return None
# 階乘數列產生器
@classmethod
def get_factorial(cls, n):
# 檢查參數是否為整數
try:
# 將參數轉換成整數
n = int(n)
# 暫存結果的變數
result = 1
# 計算到 n+1 的階乘
for i in range(1, n+1):
result *= i
# 產生計算結果
yield result
except ValueError:
# 印出錯誤訊息
print("型態錯誤")
# 產生 None
yield None
# 費氏數列的 getter
@property
def fibonacci(self):
if self.__value1:
# 計算第 self.value1 個費式數列數字
F0 = 0
F1 = 1
result = F0 + F1
# 處理第一個數字
if self.__value1 == 1:
# 回傳第一個數字
return result
# 處理第二個以後的數字
else:
for i in range(2, self.__value1):
F0 = F1
F1 = result
result = F0 + F1
# 回傳第二個以後的數字
return result
else:
return None
# 費氏數列產生器
@classmethod
def get_fibonacci(cls, n):
# 檢查參數是否為整數
try:
# 將參數轉換成整數
n = int(n)
# 計算第 n 個費式數列數字
F0 = 0
F1 = 1
for i in range(1, n+1):
# 產生第一個數字
if i == 1:
yield F1
# 產生後續數字
else:
result = F0 + F1
F0 = F1
F1 = result
yield result
except ValueError:
# 印出錯誤訊息
print("型態錯誤")
# 產生 None
yield None
# 使用者輸入
n1 = input("請輸入整數:")
# 建立類別
n = NumberSequence(n1)
# 印出重新設定的提示訊息
print("輸入被重新設定為 6")
# 重新設定
n.set_value((n1:=6))
# 印出計算出的階乘
print(n.factorial)
# 印出階乘數列
for i in n.get_factorial(n1):
print(i)
# 印出計算出的費氏數列
print(n.fibonacci)
# 印出費氏數列
for i in n.get_fibonacci(n1):
print(i)
# 檔名: exercise1308.py
# 說明:《Python入門指南》的練習
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 9 月
|