Python 入門指南 5.0
exercise1808.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 | # 定義計算階乘的迭代器 class Factorial: # 設定實體屬性 def __init__(self, number: int): # 呼叫設定屬性的方法 if not self.set_value(number): raise ValueError # 累計迭代器的數量 self.count = 1 # 設定屬性的方法 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.n = 1 # 回傳迭代器本身 return self # 回傳迭代器的下一個物件 def __next__(self): # 計算下一個迭代器物件 if self.count <= self.number: # 計算階乘 self.n = self.n * self.count # 計數遞增以符合結束條件 self.count += 1 # 回傳 10 的次方值 return self.n else: # 超出迭代器範圍 raise StopIteration # 執行部分 if __name__ == "__main__": # 使用者輸入 n1 = input("請輸入整數:") try: # 建立 Factorial 物件 n = Factorial(int(n1)) # 印出階乘中的所有數字 for i in n: print(i) except ValueError: print("輸入錯誤") # 檔名: exercise1808.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 10 月 |