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')
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!

Github login button