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 月 |