1
resposta

Pedra, papel e tesoura

import random

def jogo(escolha_usuario):
    escolhas = ["pedra", "papel", "tesoura"]
    escolha_usuario = escolha_usuario.lower()
    if escolha_usuario not in escolhas:
        return("Erro! Escolha inválida!")
    else:
        escolha_COM = random.choice(escolhas)
        print(f"Computador escolheu: {escolha_COM}")
        if escolha_usuario == escolha_COM:
            return("Empate!")
        elif (
            (escolha_usuario == "pedra" and escolha_COM == "tesoura") or 
            (escolha_usuario == "tesoura" and escolha_COM == "papel") or
            (escolha_usuario == "papel" and escolha_COM == "pedra")):
            return("Você venceu!")
        else:
            return("Você perdeu!")

escolha = input("Escolha: pedra, papel ou tesoura? ")
print(jogo(escolha))
1 resposta

Olá, Luiz Fernando. Como vai?

Seu projeto do jogo "Pedra, Papel e Tesoura" está excelente! Você conseguiu reunir em um único código diversos conceitos fundamentais da programação, como funções, condicionais aninhadas, operadores lógicos e a utilização de bibliotecas externas.

Aqui estão os pontos de destaque do seu algoritmo:

  • Uso da Biblioteca random: A escolha de random.choice(escolhas) é a forma mais elegante e "Pythônica" de implementar a jogada do computador, garantindo a imparcialidade do jogo.
  • Tratamento de Erros: Validar se a entrada do usuário está dentro das opções permitidas (if escolha_usuario not in escolhas) é uma prática de programação defensiva que evita comportamentos inesperados do sistema.
  • Lógica Booleana: A forma como você agrupou as condições de vitória utilizando os operadores and e or demonstra um ótimo domínio de lógica, mantendo o código organizado mesmo com múltiplas verificações.
  • Encapsulamento: Ao colocar a lógica dentro da função jogo(), você torna o código modular e fácil de testar ou integrar em um projeto maior futuramente.

Para deixar o seu projeto ainda mais robusto, deixo uma pequena sugestão:

  • Estrutura de Repetição: Que tal envolver a chamada do jogo em um laço while? Assim, o usuário poderia jogar várias partidas seguidas sem precisar reiniciar o programa manualmente, parando apenas quando digitasse "sair".

Você está evoluindo rápido nos projetos práticos. Esse jogo é um clássico para treinar a tomada de decisão do computador e você o executou com maestria!

Espero que possa ter lhe ajudado!