練習問題
6.4 練習問題
本章で習った内容を元に練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① イテレータは「__iter__メソッド」と「__next__メソッド」を含むものである。
② イテレータは、全てのデータ型の変数に対してiter関数を使えば生成できる。
③ イテレータにnext関数を使うと次の要素が参照できる。
④ ジェネレータは定義する際にはreturnの代わりにyieldを使用する。
⑤ yieldを使うと戻り値は一つしか返すことができない。
問2 以下に示すソースコードの①、②の内容を以下のソースコードの仕様に従って埋めなさい。
ソースコード
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第6章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第6章.ipynb
1 | books = ['Java','PHP','Python','Javascript'] |
8 | print('私はJavaとPHPの書籍は購入しません。') |
11 | print('私は',book,'の書籍を購入します。') |
実行結果
3 | 私は Javascript の書籍を購入します。 |
ソースコードの仕様
① 変数booksをイテレータに変換しbooks2に格納させる(3行目)
② 変数books2の値を参照する際、1番目と2番目の要素(Java、Python)をスキップさせ、3番目の要素(Python)から参照させる(5、6行目)
問3 以下に示すソースコードにおいてイテレータ生成するクラスBookになるよう①、②の内容を、以下のソースコードの仕様に従って埋めなさい
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第6章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第6章.ipynb
2 | def __init__(self,books): |
24 | books = ['Java','PHP','Python','Javascript'] |
27 | print('私はJavaの書籍は購入しません。') |
30 | print('私は',book,'の書籍を購入します。') |
実行結果
4 | 私は Javascript の書籍を購入します。 |
ソースコードの仕様
① インスタンス変数booksの全ての要素を参照しイテレータ終了させるために、self.booksの要素の数と現インデックス番号(self.index)を比較させる条件分岐を設定する(14行目)
② self.booksの現インデックス番号の要素の値を格納させる(18行目)
問4 次のソースコードで以下の条件を満たすイテレータbooks1を生成できるジェネレータBooksを記述しなさい。
ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第6章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第6章.ipynb
14 | print('私はJavaの書籍は購入しません。') |
17 | print('私は',book,'の書籍を購入します。') |
実行結果
4 | 私は Javascript の書籍を購入します。 |
ジェネレータBooksの仕様
代入先のbooks1が「Java」、「PHP」、「Python」、「Javascript」の各要素を含むイテレータとして生成される。
NEXT>> 6.5 練習問題 解答