Python Forum
Roshambo with only 1 if switch
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Roshambo with only 1 if switch
#11
Just thinking aloud: I need to know only winner, because logically another is looser. There are only three winning combinations (below, list of tuples, winner is first looser is second), all other combinations are either loosing or draw.

>>> first_wins = [('Rock', 'Scissors'), ('Paper', 'Rock'), ('Scissors', 'Paper')]
Comparison to determine winner could therefore be:

>>> if user_choice == computer_choice:
...     # draw
... elif (user_choice, computers_choice) in first_wins:
...     # user wins
... else:
...     # computer wins


One idea to improve clarity is to move user input validation into separate function. Something like this:

def validate_input(question):
    """Validate input to the question."""
    allowed = ['paper', 'scissors', 'rock', 'quit']
    while True:
        answer = input(question).lower()
        if answer in allowed:
            return answer
        else:
            print((f'Expected one from: {", ".join(allowed)} ' 
                   f'but your input was {answer}'))

user_choice = validate_input('Enter your choice, one from: paper, scissors, rock, quit ')
This enables to separate what is done from how it is done and code is (subjectively) more readable:

while True:
    user_choice = validate_input('Enter your choice, one from: paper, scissors, rock, quit ')
    if user_choice == 'quit':
        break
    computer_choice = random.choice([pair[0] for pair in first_wins])
    if user_choice == computer_choice:
        # draw
    elif (user_choice, computer_choice) in first_wins:
        # user wins
    else:
        # computer wins
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Messages In This Thread
Roshambo with only 1 if switch - by Clunk_Head - Jan-24-2019, 10:28 PM
RE: Roshambo with only 1 if switch - by ichabod801 - Jan-24-2019, 11:55 PM
RE: Roshambo with only 1 if switch - by Clunk_Head - Jan-25-2019, 12:02 AM
RE: Roshambo with only 1 if switch - by buran - Jan-25-2019, 08:20 AM
RE: Roshambo with only 1 if switch - by Clunk_Head - Jan-26-2019, 06:16 PM
RE: Roshambo with only 1 if switch - by perfringo - Jan-25-2019, 09:30 AM
RE: Roshambo with only 1 if switch - by Clunk_Head - Jan-27-2019, 03:19 AM
RE: Roshambo with only 1 if switch - by buran - Jan-25-2019, 09:37 AM
RE: Roshambo with only 1 if switch - by perfringo - Jan-25-2019, 11:48 AM
RE: Roshambo with only 1 if switch - by buran - Jan-26-2019, 06:56 PM
RE: Roshambo with only 1 if switch - by perfringo - Jan-27-2019, 09:02 AM
RE: Roshambo with only 1 if switch - by Clunk_Head - Jan-27-2019, 10:19 PM
RE: Roshambo with only 1 if switch - by perfringo - Jan-28-2019, 08:59 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  switch to python3 Skaperen 0 2,195 Jul-03-2018, 12:55 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020