1
resposta

Meu código

import random
opções = ["pedra", "papel", "tesoura"]


def escolha_computador():
    return random.choice(opções)

    
def jogador():

    while True:

        usuario = input("Escolha: papel, pedra ou tesoura ? ").lower()
        if usuario in opções:
            return usuario
        else:
             print("Opção inválida! Digite apenas pedra, papel ou tesoura.\n")


def verificar_vencedor(usuario, computador):
    if usuario == computador:
        print(f"Computador escolheu: {computador}\n Empate !")
    elif ( usuario == "pedra" and computador == "tesoura"or
           usuario == "papel" and computador == "pedra" or
           usuario == "tesoura" and computador == "papel"):
        print(f"Computador escolheu: {computador}\n Você ganhou !")
    else:
        print(f"Computador escolheu: {computador}\n Você perdeu !")


def jogar():     
    computador = escolha_computador()
    usuario = jogador()
    verificar_vencedor(usuario, computador)

jogar()
1 resposta

Oii Eduardo, tudo bem?

Obrigado por compartilhar seu código no fórum! A estrutura ficou bem organizada — separar as responsabilidades em funções distintas (escolha_computador, jogador, verificar_vencedor e jogar) é exatamente a abordagem certa e deixa o código limpo e fácil de manter.

Uma consideração sobre a lógica das condições em verificar_vencedor: as expressões com and/or sem parênteses explícitos podem gerar leituras inesperadas, pois o and tem precedência maior que o or. No seu caso o resultado está correto, mas vale deixar os agrupamentos mais explícitos para garantir a intenção:

elif (
    (usuario == "pedra" and computador == "tesoura") or
    (usuario == "papel" and computador == "pedra") or
    (usuario == "tesoura" and computador == "papel")
):

Pequena mudança, mas torna a lógica inequívoca para quem ler o código depois.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade