Oii, Andressa.
O problema acontece porque o if, o elif e o else funcionam como uma "corrente" de condições conectadas. Quando você quebra essa corrente usando vários if soltos, o programa se comporta de maneira diferente.
O comportamento com elif (Correto):
Quando você usa a estrutura if -> elif -> else, você está dizendo ao Python: "Verifique a primeira condição. Se for verdadeira, execute e pare de verificar o resto".
- Verifica Empate: Se for verdade, imprime "Empate!" e pula todo o resto do código.
- Verifica Vitória do PC: Só é testado se não foi empate.
- Else: Só é executado se nenhuma das anteriores for verdade.
O comportamento com if (onde gera o erro):
Se você trocar o elif por um if, você quebra a conexão. O código passa a ter dois blocos independentes de verificação. Vamos imaginar que ocorreu um Empate (você e o PC escolheram pedra):
Bloco 1:
if pc_escolhas == escolha_do_usuario:
print('Empate!')
- O Python verifica: É empate? Sim.
- Ação: Imprime "Empate!".
- O programa continua para a próxima linha.
Bloco 2:
if (... condições de vitória do PC ...):
print('O Computador Venceu!')
else:
print('Você Venceu!')
- O Python verifica: O computador venceu? Não (porque foi empate).
- Como essa condição é falsa, o código cai imediatamente no
else atrelado a este if. - Ação: Imprime "Você Venceu!".
Então pra resumir:
O erro acontece porque, ao usar apenas if, o else final fica ligado somente à última verificação (se o computador venceu). Como no empate o computador não venceu, o programa entende que deve executar o else.
O elif serve justamente para garantir que as condições sejam exclusivas: se uma acontecer, as outras são ignoradas.
Espero que essa explicação tenha deixado o fluxo mais claro para você. Conte sempre com o fórum!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!