Fazer um jogo de JoKemPo em Python é simples, mas para complementar fiz alguns tratamentos diferentes, como a captura de KeyboardException para tratar a saída do programa.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from random import choice  # Esta função serve para escolher aleatoriamente um elemento da lista!


# Dicionário de movimentos, na chave a opção e no valor quem ela ganha!
MOVES = {
    'rock': 'scissors',
    'paper': 'rock',
    'scissors': 'paper',
}


# Lista de opções
OPTIONS = list(MOVES.keys())


def _get_user_choice():
    """
    Recupera e valida a opção do usuário
    """
    while True:
        user_choice = input('Choose one option [rock/paper/scissors] - ctrl+c to exit: ')

        if user_choice not in OPTIONS:
            print('Choose a valid option!')
            continue

        return user_choice


def _jokenpo(user_choice, computer_choice):
    """
    Valida a regra do jogo, comparando a escolha do usuário com a do computador!
    """
    if MOVES[user_choice] == computer_choice:
        print('You win!')
    elif MOVES[computer_choice] == user_choice:
        print('I win!')
    else:
        print('Meh!')


if __name__ == "__main__":
    while True:  # Roda infinitamente
        try:
            user_choice = _get_user_choice()
        except KeyboardInterrupt:
            print('\nBye!')  # Caso o usuário aperte ctrl+c sairá do loop infinito
            break

        computer_choice = choice(OPTIONS)  # Escolhe a opção do computador

        _jokenpo(
            user_choice=user_choice,
            computer_choice=computer_choice,
        )