1
resposta

Exercício feito, gostaria de feedback

## Jogo > Pedra, Papel, Tesoura
#
# Roadmap do exercício:
#
# 1. Capturar a escolha do usuário
#    - Aplicar .lower() para padronizar a entrada
#    - Validar se a resposta é uma das opções válidas (pedra, papel ou tesoura)
#    - Se inválida, informar o erro e pedir novamente
#
# 2. Gerar a escolha do computador
#    - Usar random.choice() para sortear entre as 3 opções
#
# 3. Comparar as escolhas e definir o resultado
#    - Pedra ganha de Tesoura
#    - Tesoura ganha de Papel
#    - Papel ganha de Pedra
#    - Mesma escolha = Empate
#
# 4. Exibir o resultado (vitória, derrota ou empate)
#
# 5. Perguntar se o usuário quer jogar novamente


import random

OPCOES = ["pedra", "papel", "tesoura"]


def comparar_resp(comp):
    return comp in OPCOES

    
def gerar_resposta():
    resp_sistema = random.choice(OPCOES)
    return resp_sistema


def verificar_vencedor(computador, usuario):
    if computador == usuario:
        return "Empate"
    elif (usuario == "pedra" and computador == "tesoura") or (usuario == "tesoura" and computador == "papel") or (usuario == "papel" and computador == "pedra"):
        return "Vitória"
    else:
        return "Derrota"
    

def main():
    while True:
        resposta = input("Bem vindo ao jogo, qual é a sua escolha? ").lower()
        if not comparar_resp(resposta):
            print("Opção inválida! Escolha pedra, papel ou tesoura.")
            continue
     
        resposta_maquina = gerar_resposta()
       
        resultado = verificar_vencedor(resposta_maquina, resposta)
        print(f"Computador escolheu: {resposta_maquina}")
        print(resultado)

        jogar_novamente = input("Gostaria de jogar novamente? ").lower()
        if jogar_novamente == "sim":
            continue
        else:
            break


if __name__ == "__main__":
    main()
1 resposta

Olá, Matheus, como vai?

Seu código cumpre muito bem o objetivo proposto no exercício e está organizado de forma clara. A separação em funções para validar a entrada, gerar a escolha do computador e verificar o vencedor deixa o programa mais legível e fácil de manter. O uso da constante OPCOES também é uma boa prática, pois centraliza os valores válidos em um único lugar.

A validação da resposta do usuário com comparar_resp, o sorteio com random.choice e a lógica condicional em verificar_vencedor estão corretos e atendem às regras do jogo. O loop principal também controla bem o fluxo da aplicação e permite jogar novamente sem reiniciar o programa.

Seu código demonstra boa organização, uso adequado de funções e uma lógica clara para resolver o problema proposto. Obrigado por compartilhar sua solução e continue trazendo seus exercícios para discussão.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!