Re: Rock Paper Scissors Code Bug?

Thomas Passin <[email protected]> Mon, 8 Dec 2025 18:57:34 -0500
Newsgroups gmane.comp.python.general
Message-ID <[email protected]>
On 12/8/2025 6:16 PM, MRAB wrote:
> On 08/12/2025 21:18, Thomas Passin wrote:
>> On 12/8/2025 2:49 PM, John Smith via Python-list wrote:
>>> Thanks for the tip. I'll do that here and in future games.
>>
>> In addition to using constants to parameterize the strings, the whole 
>> game can be made simpler and easier to change when you realize that 
>> the if/else block has a regular construction.  Here's a sketch of one 
>> way to take advantage of this structure (untested).  You should be 
>> able to fill in the elided code. Use lower case to check the input so 
>> a mistake in capitalization doesn't reject the input.  That's a simple 
>> courtesy to the user.
>>
>> import random #Allows for a random input.
>>
>> ROCK = 'rock'
>> PAPER = 'paper'
>> SCISSORS = 'scissors'
>> TIE = 'Tie'
>> ULOSE = 'You Lose'
>> UWIN = 'You Win'
>>
>> GAME = {
>>     (ROCK, ROCK): TIE,
>>     (ROCK, PAPER): ULOSE,
>>     # ...
>> }
>>
>> OPTIONS = (ROCK, PAPER, SCISSORS)
>> PROMPT = (f'Welcome to the {ROCK}, {PAPER}, {SCISSORS} game. ' +
>>         'Choose one of the three')
>>
>> # skipping some code
>>     player_choice = input(PROMPT)
>>     player_choice = player_choice.lower()
>>     if player_choice not in OPTIONS:
>>         print(f'{player_choice} is not an allowed input')
>>         continue
>>     result = GAME[(player_choice, choice)]
>>     print(result)
>>     # ...
>>
> There's another way of determining who won.
> 
> Give each of the choices a value, such as:
> 
>      OPTION_VALUES = {ROCK: 0, PAPER: 1, SCISSORS: 2}
> 
> Look at the difference between the values of what the bot chose and what 
> the player chose.
> 
> There are 5 possible differences, from -2 to +2.
> 
>  From that difference you can determine who won or whether it's a tie.

Sure, there are lots of possibilities.  Using a little arithmetic would 
be nice and concise and well-suited to a C program or even assembler. 
It's mostly personal taste, and mine is to make the program easy to 
write and later on, read.

-- 
https://mail.python.org/mailman3//lists/python-list.python.org