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í!