Python 入門指南 5.0

exercise1709.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
# 定義計算費氏數列的迭代器
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


# 使用者輸入
n1 = input("請輸入整數:")
try:
    # 建立 Fibonacci 物件
    n = Fibonacci(int(n1))
    # 印出費氏數列中的所有數字
    for i in n:
        print(i)
except ValueError:
    print("輸入錯誤")

# 檔名: exercise1709.py
# 說明:《Python入門指南》的練習
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 9 月

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