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

Dúvida sobre o código

Coloquei uma opção que informa ao usuário que a letra que ele colocou não existe, caso a mesma não exista na palavra. Essa foi a única forma que eu consegui pensar, teria alguma outra alternativa?

defini uma variável

letra = 0

if chute != letra: print("A letra", chute, "não existe na palavra")

teria alguma outra alternativa? apenas pra ter em mente uma possibilidade a mais

def jogar():
    print("Bem Vindo ao Jogo da Forca!")

    palavra_secreta = "flamengo"

# As duas variavéis começam com o valor False pois quando o jogo começa o usuário ainda não acertou a palavra secreta

    enforcou = False
    acertou = False
    letra = 0


    while(not enforcou and not acertou):

        chute = input("Qual é a Letra?")
        chute = chute.strip()


        #a função .strip() remove todos os espaços do início ao fim
        #importante declara-la para melhorar o código

        if (chute != letra):
            print("Não existe a letra", chute, "na palavra")
            print("Digite uma nova letra")
            continue

        index = 0
        for letra in palavra_secreta:
            #a função .upper() retorna todas as strings com letra em maiúsculo
            #ao comparar o chute com a palavra secreta, podemos comparar as duas strings em maiúsculo
            if (chute.upper() == letra.upper()):
                print(f"Encontrei a letra {letra} na posição {index}")




            index = index + 1


        print("Jogando...")




print("Fim de Jogo")

if(__name__ == "__main__"):
#     jogar()
3 respostas

Refiz uma parte do código, vi que estava dando um erro onde mesmo as letras certas estavam constando como erradas.

Ficou assim:

Coloquei fora da identação do for pois estava repetindo várias vezes

def jogar():
    print("Bem Vindo ao Jogo da Forca!")

    palavra_secreta = "flamengo"

# As duas variavéis começam com o valor False pois quando o jogo começa o usuário ainda não acertou a palavra secreta

    enforcou = False
    acertou = False


    while(not enforcou and not acertou):

        chute = input("Qual é a Letra?")
        chute = chute.strip()


        #a função .strip() remove todos os espaços do início ao fim
        #importante declara-la para melhorar o código


        index = 0
        for letra in palavra_secreta:
            #a função .upper() retorna todas as strings com letra em maiúsculo
            #ao comparar o chute com a palavra secreta, podemos comparar as duas strings em maiúsculo
            if (chute.upper() == letra.upper()):
                print(f"Encontrei a letra {letra} na posição {index}")

        if(chute != letra):
            print("A letra não existe na palavra")
            print("Digite uma nova letra")
            continue


            index = index + 1


        print("Jogando...")




print("Fim de Jogo")

if(__name__ == "__main__"):
    jogar()
solução!

Olá Alessandro, tudo bem com você?

Uma forma que podemos implementar essa verificação é utilizando o operador lógico not em conjunto com o in para criar uma verificação se o chute não está na palavra_secreta. Para isso vamos modificar a lógica do teste que você criou. Ficando da seguinte forma.

        if (chute not in palavra_secreta):
            print("Não existe a letra", chute, "na palavra")
            print("Digite uma nova letra")
            continue

O teste do código acima será basicamente, se o valor do chute não está na palavra secreta, será executado o código do if.

Deixo abaixo o código completo para comparação:

def jogar():
    print("Bem Vindo ao Jogo da Forca!")

    palavra_secreta = "flamengo"

# As duas variavéis começam com o valor False pois quando o jogo começa o usuário ainda não acertou a palavra secreta

    enforcou = False
    acertou = False

    while(not enforcou and not acertou):

        chute = input("Qual é a Letra? ")
        chute = chute.strip()

        #a função .strip() remove todos os espaços do início ao fim
        #importante declara-la para melhorar o código

        if (chute not in palavra_secreta):
            print("Não existe a letra", chute, "na palavra")
            print("Digite uma nova letra")
            continue

        index = 0
        for letra in palavra_secreta:
            #a função .upper() retorna todas as strings com letra em maiúsculo
            #ao comparar o chute com a palavra secreta, podemos comparar as duas strings em maiúsculo
            if (chute.upper() == letra.upper()):
                print(f"Encontrei a letra {letra} na posição {index}")

            index = index + 1

        print("Jogando...")


print("Fim de Jogo")

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

Para saber um pouco mais sobre os operadores lógicos, recomendo a leitura do seguinte artigo.

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

Coloco-me à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Bacana demais, Felippe! Tamo junto e obrigado pela força! ;)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software