2
respostas

Tratamento de espaços

def jogar():
    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    palavra_secreta = "maça".upper()
    letras_acertadas = ["_" for letra in palavra_secreta]

    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while(not enforcou and not acertou):

        chute = input("Qual letra? ")
        chute = chute.strip().upper()

        if(chute in palavra_secreta):
            index = 0
            for letra in palavra_secreta:
                if(chute == letra):
                    letras_acertadas[index] = letra
                index += 1
        else:
            erros += 1

        enforcou = erros == 6
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)


    if(acertou):
        print("Você ganhou!!")
    else:
        print("Você perdeu!!")
    print("Fim do jogo")

Bom dia amigos,

No código acima, eu encontrei um problema para tratamento caso o usuário insira um espaço, ou simplesmente dê um Enter. O phyton encontra o espaço em "palavra_secreta", porém no "if(chute == letra)" retorna False.

    if(chute in palavra_secreta):
        index = 0
        for letra in palavra_secreta:
            if(chute == letra):
                letras_acertadas[index] = letra
            index += 1
    else:
        erros += 1

Qual seria a melhor maneira para tratar este pequeno problema, já que acrescentar a condição abaixo não funciona.

    if (chute in palavra_secreta and not chute == ' '):

Obrigado.

2 respostas

O problema seria por estar utilizando:

    chute = chute.strip().upper()

Que no caso específico, deixaria chute sem valor?

Se sim, como faria para ver o valor de uma variável que está limpa pelo strip?

Oi Odirlei! Como vai?

Não sei se compreendi sua dúvida totalmente, pode me ajudar?

***Bem vindo ao jogo da Forca!***
*********************************
['_', '_', '_', '_']
Qual letra? 
['_', '_', '_', '_']
Qual letra?  m
['M', '_', '_', '_']
Qual letra?      a
['M', 'A', '_', 'A']
Qual letra? 

Testei seu código por aqui. Quando dei enter, ele considera o espaço como entrada, e retorna o mesmo resultados que retornaria caso chutássemos uma letra errada.

Entretanto quando chutei "m" com um espaço antes, ele encontrou a letra. E quando chutei "a", com vários espaços antes, ele também encontrou a letra.

Esse era um resultado que você não gostaria de ter? O que você gostaria que acontecesse?

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