ジェネレータ関数の使い方、あるいはwhile文、for文の基本的な理解が間違っていると思うのですが、素数を10個作る以下のコードの動きがわかりません。
実行すると2,3,5,7,11,13,17,19,23,29と表示されますが、コード的に4が表示されない理由をご教示ください。
具体的には、ループでfor文のxに4が入ってからの動きを以下のように考えているのですが、間違っている部分をご指摘お願いいたします。
まず、i = 2と代入され、4/2 == 0でbreak
次に、i = 3と代入され、4/3 != 0でelseに飛んでyeildでxが4を渡してprintする。
実際はそうならないので間違っているのですが、そうではない正しい動きがイメージできません。
よろしくお願いいたします。
※環境:Windows10、Anaconda3
python
1def get_primes(x=2): 2 while True: 3 for i in range(2, x): 4 if x%i == 0: 5 break 6 else: 7 yield x 8 x += 1 9 10i = get_primes() 11for c in range(10): 12 print(next(i))
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/12 12:29
2020/09/12 12:58