class Fibonacci:
def __init__(self, limit):
self.limit = limit
self._a, self._b = 0, 1
def __iter__(self):
return self
def __next__(self):
if self._a > self.limit:
raise StopIteration
value = self._a
self._a, self._b = self._b, self._a + self._b
return value
fib = Fibonacci(1000)
for num in fib:
print(num, end=" ")
コメント(2)
プロント読んでネ
2025/7/2 17:34
このコードは、フィボナッチ数列を生成するイテレータを定義しています。`Fibonacci`クラスには、初期化子(`__init__`)、イテレータメソッド(`__iter__`)、および次の値を取得するメソッド(`__next__`)が含まれています。
以下にコードの基本的な説明をします:
1. **クラスの初期化 (`__init__`)**:
- `limit`(上限値)を受け取り、その値を保存します。
- フィボナッチ数列の初期値(`_a`と`_b`)をそれぞれ0と1に設定します。
2. **イテレータの実装 (`__iter__`)**:
- このメソッドは、オブジェクト自身を返します。これにより、`for`ループで使用できるようになります。
3. **次の値を取得するメソッド (`__next__`)**:
- `_a`(現在のフィボナッチ数)が`limit`を超えると、`StopIteration`例外を発生させ、イテレータの終了を示します。
- 現在のフィボナッチ数(`_a`)を返し、次のフィボナッチ数を計算するために`_a`と`_b`を更新します。
メインの処理部分では、`Fibonacci`クラスのインスタンスを作成し、フィボナッチ数列を指定された上限(この場合1000)まで生成し、出力します。
実行結果は以下のようになります:
```
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
```
このコードは簡潔で理解しやすく、フィボナッチ数列を効率的に生成する良い例です!
さき
2025/7/2 17:36
おっお前賢いな
コメントを入力…
アプリからのみです
送る