Quand j'ai goûté Python récemment, j'avais une bonne tâche appelée Zundokokiyoshi, alors je l'ai faite. Est-ce uniquement Python avec un générateur?
zundoko.py
import random
def zundoko_gen():
    while True:
        yield random.choice(('Bouse', 'Doco', 'Huh'))
class ZunDokoChecker:
    def __init__(self):
        self.zun_count = 0
        
    def check(self, word):
        if word == 'Doco':
            result = self.zun_count >= 4
            self.zun_count = 0
        else:
            self.zun_count = self.zun_count + 1 if word == 'Bouse' else 0
            result = False
        return result
checker = ZunDokoChecker()
for word in zundoko_gen():
    print(word)
    if checker.check(word):
        print('Ki yo shi!')
        break
J'ai eu un thème de shiracamus, donc je l'ai fait immédiatement.
zundoko2.py
import random
def zundoko_gen():
    zun_count = 0
    word_list = ('Bouse', 'Doco', 'Huh')
    
    while True:
        word = random.choice(word_list)
        yield word
        
        if word == 'Bouse':
            zun_count += 1
        else:
            if word == 'Doco' and  zun_count >= 4:
                return
            zun_count = 0
            
for word in zundoko_gen():
    print(word);
    
print('Ki yo shi!')
J'ai essayé de le concevoir, mais quand j'ai détecté l'achèvement de Zundoko, j'ai dû notifier la fin de la génération avec le prochain retour de valeur, mais au début je l'ai fait avec un drapeau.
Depuis que j'utilise yield, j'ai renvoyé la valeur pour le moment, puis j'ai décidé de la mettre fin, j'ai donc pu actualiser sans indicateur.
C'est un passe-temps pour sortir word_list de la boucle la plus profonde. Puisqu'il s'agit d'une boutique intégrée, je souhaitais à chaque fois générer une instance de liste avec la commande BUILD_LIST.
Recommended Posts