Olá, Matheus!
Parabéns por desenvolver a lógica do jogo Pedra, Papel e Tesoura! Seu código está muito bem estruturado e a lógica de vitória/derrota, usando os operadores lógicos, está correta e funciona perfeitamente.
Sugestões de Melhoria
Eu notei apenas um detalhe que pode tornar seu código mais robusto e evitar erros, especialmente na captura da entrada do usuário:
Padronização da Entrada (Normalização): A entrada do usuário (choice_user) pode ser digitada de diversas formas (ex: 'Rock', 'PAPER', 'rock '). Se o usuário não digitar exatamente 'rock', 'scissors' ou 'paper' em minúsculo, o jogo não funcionará corretamente.
O ideal é normalizar o texto do usuário, convertendo-o para minúsculo e removendo espaços em branco extras, antes de fazer a comparação.
import random
print('Bem vindo ao pedra papel tesoura digital !')
# 1. Normalizar a entrada do usuário
choice_user = input('Digite sua escolha (rock, paper, or scissors): ').lower().strip()
def computer_choice():
alternativas = ['rock', 'scissors', 'paper']
# A variável choices já armazena a escolha do computador,
# então pode ser usada diretamente.
computer_ch = random.choice(alternativas)
# 2. Adicionar uma verificação inicial de entrada válida (opcional, mas recomendado)
if choice_user not in alternativas:
print(f'Entrada inválida: {choice_user}. Por favor, escolha entre rock, paper ou scissors.')
return # Encerra a função se a entrada for inválida
print(f'Sua escolha: {choice_user}')
print(f'Escolha do computador: {computer_ch}')
# 3. Lógica de comparação (Correta)
if choice_user == computer_ch:
print('Deu empate')
elif ((choice_user == 'paper' and computer_ch == 'rock') or
(choice_user == 'rock' and computer_ch == 'scissors') or
(choice_user == 'scissors' and computer_ch == 'paper')):
print('Usuário venceu!, computador perdeu.')
else:
print('Usuário perdeu, computador ganhou !')
# A função computer_choice() já exibe o resultado,
# então podemos chamar ela diretamente.
computer_choice()
Seu código está ótimo e a lógica está perfeita! Continue programando!