Exercícios Resolvidos de Módulo Random

Ver Teoria

Enunciado

Implemente o jogo "A Máquina Adivinha". Neste jogo, o usuário entra com uma palavra e a máquina tenta descobrir a palavra escolhendo letra por letra. A quantidade máxima de letras que a máquina pode escolher pra tentar formar a palavra é o dobro do tamanho da palavra. O programa não memoriza as jogadas anteriores. Caso a máquina forme a palavra, ela ganha o jogo, caso contrário, o usuário é o vencedor!

Exemplo 1:

Entrada: dez

Saída:

Letra a? ["_","_","_"]

Letra d? ["d","_","_"]

Letra b? ["d","_","_"]

Letra a? ["d","_","_"]

Letra e? ["d","e","_"]

Letra z? ["d","e","z"]

Eu ganhei!

Exemplo 2:

Entrada: flu

Saída:

Letra x? ["_","_","_"]

Letra y? ["_","_","_"]

Letra b? ["_","_","_"]

Letra u? ["_","_","u"]

Letra q? ["_","_","u"]

Letra z? ["_","_","u"]

Você ganhou!

Passo 1

Fala comigo, meu compatriota! Nessa aqui a gente junta uns conhecimentos de laços de repetição com o módulo random e tira de letra! Vem comigo que te mostro como resolver essa parada!

A gente precisa perguntar pro usuário uma palavra e tentar fazer nosso programa adivinhar ela. Então bora perguntar com a função input().

Começamos bem! hehehe mas como a gente sabe que vai precisar usar o módulo random em algum lugar, bora adiantando as coisas já importando o módulo no início do código.

Show! E, pra armazenar os acertos da máquina, bora fazer uma lista com “_” do mesmo tamanho da palavra:

Pronto! Agora que já temos tudo certo, bora começar os trabalhos de adivinhação.

Passo 2

Primeiramente, o enunciado diz que o computador pode tentar até o dobro de letras do tamanho da palavra. Então, vamos fazer um laço de repetição que se repita 2 * len(palavra) vezes! Se liga nesse for:

Irado! Agora a gente quer chutar uma letra do alfabeto… Vou usar a função choice(), mas também poderia ter escolhido usar qualquer outra que tenha o mesmo resultado, ok?!

Criei uma variável pra armazenar todo o alfabeto e depois, dentro do loop, disse que o chute da máquina tem que ser um dos itens do alfabeto (ou seja, alguma letra). Agora, a gente tem que verificar se essa letra existe na palavra e, se existir, a gente substitui na lista “tentativa”.

Viu? Se a letra existir, a gente substitui na lista na mesma posição que a letra se encontra na string “palavra”, e depois tira essa letra da string. A gente repete isso até não ter mais aquela letra na string! Assim, o programa consegue abranger todas as letras repetidas, sacou? Agora, a gente pode exibir a tentativa no formato que foi especificado no enunciado.

Pronto! Com o print dessa forma, vai ser exibida a tentativa exatamente como no exemplo do professor… Só falta a gente dizer, no fim, se a máquina venceu ou não.

Passo 3

Pra verificar se a máquina acertou tudo, a gente só precisa verificar, depois do loop, se sobrou algum “_” sem ser preenchido na lista “tentantiva”. Se sobrou, então a máquina perdeu, caso contrário, venceu!

E assim, a gente finaliza o exercício! hehehe até o próximo, doido! Nós se vê por aí!

Resposta