Python 入門指南 5.0

exercise1210.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
# 定義計算數列的類別
class NumberSequence:
    # 設定實體屬性
    def set_value(self, v1):
        # 檢查參數是否為整數
        try:
            # 將參數轉換成整數
            v1 = int(v1)
            # 設定實體屬性
            self.value1 = v1
        except ValueError:
            # 將實體屬性設定為 None
            self.value1 = None
            # 印出錯誤訊息
            print("型態錯誤")

    # 進行階乘計算
    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(self, n):
        # 檢查參數是否為整數
        try:
            # 將參數轉換成整數
            n = int(n)
            # 暫存結果的變數
            result = 1
            # 計算到 n 的階乘
            for i in range(1, n+1):
                result *= i
                # 產生計算結果
                yield result
        except ValueError:
            # 印出錯誤訊息
            print("型態錯誤")
            # 產生 None
            yield None

    # 進行費氏數列計算
    def fibonacci(self):
        if self.value1:
            # 計算第 self.value1 個費式數列數字
            F0 = 0
            F1 = 1
            result = F0 + F1
            # 處理第一個數字
            if self.value1 == 1:
                # 回傳第一個數字
                return F1
            # 處理第二個以後的數字
            else:
                for i in range(2, self.value1):
                    F0 = F1
                    F1 = result
                    result = F0 + F1
                # 回傳第二個以後的數字
                return result
        else:
            return None

# 建立類別
n = NumberSequence()
# 使用者輸入
n1 = input("請輸入整數:")
# 設定要計算的數字
n.set_value(n1)
# 印出計算出的階乘
print(n.factorial())
# 印出階乘數列
for i in n.get_factorial(n1):
    print(i)
# 印出計算出的費氏數列
print(n.fibonacci())

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

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