1
resposta

Solução alternativa para o encerramento do laço de repetição.

Boa noite, Alura. Fiz uma pequena mudança para o encerramento do laço de repetição While. Ao invés de adicionar o ''not acertou and not enforcou'', coloquei o While True, com parada ''break'' em ganhou ou perdeu.

Minha dúvida é a seguinte. Fiz uma boa escolha? Há algum erro nessa minha opção? Ela exigirá uma memória maior do arquivo? Segue, abaixo, meu programa. Aguardo retorno, desde já.

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

#Palavra da rodada

palavra_secreta = 'banana'.lower()
letras_acertadas = ['_', '_', '_', '_', '_', '_']
erros = 0


print(letras_acertadas)

#Repetição dos chutes

while True:

    chute = str(input(f'Digite uma letra:'))[0].strip().lower()

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

    else:
        erros+=1
        tentativas = 6 - erros
        print(f'Você errou, resta(m) {tentativas} tentativa(s)!')

    print(letras_acertadas)

#Contagem de erros e acertos

    if (not '_' in letras_acertadas):
        print('Parabéns, você ganhou!')
        break

    elif (erros == 6):
        print('Que pena, você perdeu!')
        break

print("Fim do jogo")

if (name == 'main'): jogar()

1 resposta

Grande Emmanuel. Tudo certo?

Bom, em termos de custo computacional, no meu ponto de vista, o comando break consome menos recurso do que as variáveis que precisam ser declaradas e manipuladas no meio do código . Sem contar que o break é "nativo" da linguagem e característico dos laços de repetição que serve justamente para interromper a continuidade da iteração. Em resumo, não vejo motivo algum para crer que o comando foi usado de forma errada ou que tenha custo computacional alto.