Python 入門指南 5.0
exercise1809.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 | # 定義計算費氏數列的迭代器
class Fibonacci:
# 設定實體屬性
def __init__(self, number: int):
# 呼叫設定屬性的方法
if not self.set_value(number):
raise ValueError
# 累計迭代器的數量
self.count = 0
# 設定屬性的方法
def set_value(self, number: int):
# 檢查參數是否為整數
try:
# 檢查參數 number 是否為整數
assert type(number) is int
# 設定實體屬性
self.number = number
# 回傳 True
return True
except AssertionError:
# 回傳 False
return False
# 迭代器初始化並且回傳迭代器本身
def __iter__(self):
# 迭代器初始化
self.f0 = 0
self.f1 = 1
# 回傳迭代器本身
return self
# 回傳迭代器的下一個物件
def __next__(self):
# 計數遞增以符合結束條件
self.count += 1
# 計算下一個迭代器物件
if self.count <= self.number:
# 處理第一個數字
if self.count == 1:
# 回傳第一個數字
return self.f1
# 處理第二個以後的數字
else:
# 計算費氏數列
result = self.f0 + self.f1
self.f0 = self.f1
self.f1 = result
# 回傳第二個以後的數字
return result
else:
# 超出迭代器範圍
raise StopIteration
# 執行部分
if __name__ == "__main__":
# 使用者輸入
n1 = input("請輸入整數:")
try:
# 建立 Fibonacci 物件
n = Fibonacci(int(n1))
# 印出階乘中的所有數字
for i in n:
print(i)
except ValueError:
print("輸入錯誤")
# 檔名: exercise1809.py
# 說明:《Python入門指南》的練習
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 10 月
|