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