Python 入門指南 5.0
exercise1406.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 | # 定義計算數列的類別 class NumberSequence: # 設定實體屬性 def __init__(self, v1): # 呼叫設定屬性的方法 self.set_value(v1) # 設定實體物件的字串形式 def __str__(self): return str(self.__value1) # 設定實體物件在互動介面的字串形式 def __repr__(self): return "輸入數字是 " + str(self.__value1) + "\n" +\ "階乘 " + str(self.factorial) + "\n" +\ "費式數列數字 " + str(self.fibonacci) # 設定屬性的方法 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(repr(n)) # 檔名: exercise1406.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 9 月 |