Pythonのサブジェネレータへの委譲構文を使ったズンドコキヨシ

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ふと、あまり使い道の分からなかったサブジェネレータへの委譲構文が使えるのではないか、と思った。
サブジェネレータへの委譲構文ってなに?って方は、公式ドキュメントか、手前味噌ですがこの記事をご覧ください。

(2016/3/22 ちょっと間違ってたので修正)

import random

def zundoko(n=0):
    if n == 5:
        yield 'キ・ヨ・シ!'
        raise StopIteration

    x = random.random() < 0.5
    if x:
        if n < 4:
            yield 'ズン'
        else:
            yield 'ドコ' 
        yield from zundoko(n+1)
    else:
        if n < 4:
            yield 'ドコ'
            yield from zundoko()
        else:
            yield 'ズン'
            yield from zundoko(4)

print(''.join(zundoko()))