GH avatar Bite 93. Rock-paper-scissors and generator's send

Generators are cool right?! Did you know you can send values into a generator by calling its send(value) method? Crazy right?

Let's do a little experiment: complete Rock-paper-scissors below, where player_choice receives the next value via send, if q is entered raise a StopIteration.

So the game would work something like this (see all scenarios in the tests):

>>> from rps import game
>>> game = game()
>>> next(game)
Welcome to Rock Paper Scissors
>>> game.send('rock')
paper beats rock, you lose!
>>> game.send('paper')
paper beats rock, you win!
>>> game.send('rock')
tie!
>>> game.send('q')
Traceback (most recent call last):
...
StopIteration

Pretty cool no? As this is an Advanced Bite we're not giving too much away. Good luck, have fun and and keep calm and code in Python!

Will you be Pythonista #25 to crack this Bite?
It takes an average of ~45 minutes to solve this Bite (submissions 5-240 min).
Pythonistas rate this Bite 4.0 on a 1-10 difficulty scale.
» Up for a challenge? 💪

Login and get coding
We use Python 3.7