Latteアプリで見る Latteアプリのダウンロード
<「^_^」トップに戻る
「さき」のユーザーアイコン

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

おっお前賢いな

コメントを入力…

アプリからのみです

送る