Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Mãos na massa usando aprendizados das aulas e da documentação do python

Este meu código abaixo, foi uma forma de avançar em um caminho diferente do curso a fim de agregar mais conhecimento me permitindo errar, desta forma conhecer o que funciona ou não colocando em pratica de maneira independente.

Se encontrarem problemas para corrigir ou melhorias, ficarei feliz em aprender.

def play():
    print(25*"/")
    print("/   O Jogo da Forca     / ")
    print(25*"/","\n")

    pais_secreto = [('brasil'), ('australia'), ('japao'), ('canada'), ('gana'), ('grecia'),('peru'), ('china'), ('chile'), ('cuba'), ('belgica'), ('polonia'), ('jamaica'), ('paraguai'), ('alemanha'), ('zimbabue'), ('argentina'), ('dinamarca'), ('madagascar'), ('eslovaquia'), ('montenegro')]
    random.shuffle(pais_secreto)
    pais_secreto = (pais_secreto[0])
    chute_completo = ""
    enforcou = False
    escapou = False
    print(pais_secreto)

    print("Jogando o Jogo da Forca" "\n")

    while(not enforcou and not escapou):
        print(f"O país tem {pais_secreto.__len__()} letras? _ _ _ _ _ _")

        chute = input("chute uma letra: ").casefold()
        chute = chute.strip()

        posicao = 0
        for letra in pais_secreto:
            if (chute == letra):
                print(f"O país tem a letra {chute}, na posição {posicao}")
            posicao = posicao + 1
        print("Jogando...")


if(__name__ == "__main__"):
    play()
2 respostas
solução!

Olá Leonardo, tudo bem com você?

Meus parabéns pela implementação do código, com a escolha dos países.

No código existem algumas implementações que deixo como dicas, deixo descrito abaixo.

Quando é feita a declaração da lista pais_secreto, os parênteses a cada nome podem ser retirados, quando estamos declarando uma lista colocamos os objetos (no seu exemplo os nomes dos países) separados apenas pela vírgula.

pais_secreto = ['brasil', 'australia', 'japao', 'canada', 'gana', 'grecia']

Sobre o uso do o __ len__, ele é um método especial, não é recomendado que seja chamarmos ele diretamente em um objeto (pais_secreto), para obter o comprimento de um objeto iremos utilizar a função len() que por baixo dos panos irá invocar o método __len__ no objeto, ficando assim um código mais "Pythonico".

        print(f"O país tem {len(pais_secreto)} letras? _ _ _ _ _ _")

Ainda sobre o uso do comprimento da palavra, podemos implementar a apresentação do underscore ( _ ) de forma que ele mude conforme a quantidade de letras do país secreto. O código ficará conforme abaixo.

        print(f"O país tem {len(pais_secreto)} letras: ", len(pais_secreto) * "_ ")

Código completo

import random


def play():
    print(25 * "/")
    print("/   O Jogo da Forca     / ")
    print(25 * "/", "\n")

    pais_secreto = ['brasil', 'australia', 'japao', 'canada', 'gana', 'grecia','peru', 'china', 'chile', 'cuba', 'belgica', 'polonia', 'jamaica', 'paraguai', 'alemanha', 'zimbabue', 'argentina', 'dinamarca', 'madagascar', 'eslovaquia', 'montenegro']
    random.shuffle(pais_secreto)
    pais_secreto = (pais_secreto[0])
    chute_completo = ""
    enforcou = False
    escapou = False
    print(pais_secreto)

    print("Jogando o Jogo da Forca" "\n")

    while(not enforcou and not escapou):
        print(f"O país tem {len(pais_secreto)} letras: ", len(pais_secreto) * "_ ")  # trocado para o uso de função
        chute = input("chute uma letra: ").casefold()
        chute = chute.strip()

        posicao = 0
        for letra in pais_secreto:
            if (chute == letra):
                print(f"O país tem a letra {chute}, na posição {posicao}")
            posicao = posicao + 1
        print("Jogando...")


if(__name__ == "__main__"):
    play()

Para saber um pouco mais sobre as funções recomendo a leitura do seguinte artigo:

O artigo está em inglês, caso tenha dificuldades com o idioma, recomendo o usos do tradutor do navegador.

Em caso de dúvidas, coloco-me à disposição.

Abraços e bons estudos.

Muito obrigado Felippe, realmente tinha feitos essas mudanças assim que avançei mas foi muito bom ter recebido esse feedback