Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida de como resolver para aceitar palavras acentoadas

arquivo palavras.txt

banana

melancia

morango

manga

matemática

forca.py


import random

def jogar():

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

    arquivo = open("palavras.txt", "r")
    palavras = []

    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)

    arquivo.close()

    numero = random.randrange(0, len(palavras))
    palavra_secreta = palavras[numero].upper()
    print(palavra_secreta)
    letras_acertadas = ["_" for letra in palavra_secreta]
    enforcou = False
    acertou = False
    erros = 0

    print(letras_acertadas)

    while (not acertou and not enforcou):

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

        if (chute == "0"):
            print("Encerrando a partida")
            break
        else:
            if (chute in palavra_secreta):
                index = 0
                for letra in palavra_secreta:
                    if (chute == letra):
                        print("Encontrei a letra {} na posição {}".format(letra, index))
                        letras_acertadas[index] = letra
                    index += 1
            else:
                erros = erros +1

        enforcou = (erros == len(palavra_secreta))
        acertou = "_" not in letras_acertadas

        print("Se deseja cancelar, digite 0")
        print("Você errou {} de {} letras".format(erros, len(palavra_secreta)))
        print(letras_acertadas)

    if (acertou == True):
        print("Parabèns!\nVocè acertou. A palavra era: {}".format(palavra_secreta))
    elif (enforcou == True):
        print("Você foi enforcado!\nA palavra era {}".format(palavra_secreta))
    else:
        print("Obrigado por jogar!")

    print("Fim do jogo")

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

No caso de sair no sorteio a palavra matemática, como fazer para que ele reconheça a letra "á" a agudo, como letra?


1 resposta
solução!

Você precisa definir o arquivo como encode padrão UTF-8, na mesma linha em que você manda o python ler o arquivo txt, por exemplo:

#abrindo o arquivo txt em modo de leitura, com padrão de encoding utf-8
with open ('arquivos.txt', encoding='utf-8', mode='r') as arquivo:

palavras = []

    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)

Por padrão, o tipo de encode utf-8 é universal, ele aceita todos os tipos de acentos, inclusive o 'á' que você precisa :) aconselho você a realizar o curso Python3 - Trabalhando com I/O lá você vai aprender bastante sobre manipulação de arquivos com python.

Para saber mais sobre UTF-8: UTF-8 - Glossário