[cjtoolbox name=’JavaC’]

練習問題 解答

6.5 練習問題 解答

問1

① ○
② ×:int型やfloat型の変数ではiter関数を介してイテレータは生成できない。
③ 〇
④ 〇
⑤ ×:戻り値を何度でも返すことができる。

問2

① iter
② next

[python] books = [‘Java’,’PHP’,’Python’,’Javascript’] #booksをイテレータに変換する books2 = iter(books) #books2の最初の2つの要素を飛ばして次の次の要素(Python)から参照させます。 next(books2) next(books2) print(‘私はJavaとPHPの書籍は購入しません。’) for book in books2: print(‘私は’,book,’の書籍を購入します。’) [/python]

問3

[python] class Book: def __init__(self,books): self.books = books self.index = 0 #__iter__メソッドの定義 def __iter__(self): return self #__next__メソッドの定義 def __next__(self): #全ての要素を参照しイテレータ終了させる条件分岐 if self.index >= len(self.books): raise StopIteration #現インデックス番号の要素の値を格納 value = self.books[self.index] #次のインデックス番号を指定 self.index += 1 return value books = [‘Java’,’PHP’,’Python’,’Javascript’] books1 = Book(books) next(books1) print(‘私はJavaの書籍は購入しません。’) for book in books1: print(‘私は’,book,’の書籍を購入します。’) [/python]

問4

[python] #ジェネレータbooksを定義する def books(): #解答欄 yield ‘Java’ yield ‘PHP’ yield ‘Python’ yield ‘Javascript’ #イテレータbook1を定義する books1 = books() #第1の要素Javaの次の要素を参照させる next(books1) print(‘私はJavaの書籍は購入しません。’) for book in books1: print(‘私は’,book,’の書籍を購入します。’) [/python]

NEXT>> 第7章 ループの応用