We use Python 3.6

go back Level: Advanced (img: AV / score: 4) level Bite 93. Rock-paper-scissors and generator's send

8 out of 8 users completed this Bite ...
Will you be Pythonista #9 to crack this Bite?
Average Bite difficulty 1-10 rating: 5.0
» Up for a challenge? 💪

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')
>>> game.send('q')
Traceback (most recent call last):

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!

Github login button