Crie um programa que abre um arquivo chamado entrada.txt, existente no diretório do projeto, e que substitui cada ocorrência da letra/caractere ’ a ’ por ’ X '.
Passo 1
O enunciado pede um programa que abra o arquivo chamado entrada.txt (que já existe no diretório do projeto) e substitua cada ocorrência do caractere
Informações dadas:
'a' por 'X'.Informações dadas:
- Arquivo de entrada:
entrada.txt(no diretório do projeto). - Substituição desejada: cada
'a'→'X'.
O que o programa deve produzir: - Atualizar o conteúdo do arquivo de modo que todas as letras
'a'sejam trocadas por'X'(preservando todo o resto do conteúdo).
Passo 2
Escolha do método: vamos usar uma solução simples e clara em Python:
- Abrir o arquivo e ler todo o conteúdo como texto.
- Usar o método de string
.replace()para trocar'a'por'X'. - Gravar o resultado de volta no mesmo arquivo (sobrescrevendo-o).
Justificativa: essa abordagem é direta, fácil de entender/implementar e funciona bem para arquivos de tamanho razoável (o comum em exercícios). Para arquivos enormes seria melhor processar por blocos, mas não é necessário aqui.
Passo 3
Explicando os passos de I/O em arquivos (sem pular etapas):
open(nome, modo, encoding=...): abre um arquivo. Omodopode ser:'r'para leitura,'w'para escrita (sobrescreve o arquivo),'a'para acrescentar ao final.
Usaremos'r'para ler e depois'w'para escrever.
file.read()lê todo o conteúdo como uma única string.file.write(texto)escreve a string no arquivo.- Sempre fechar o arquivo ao terminar; usando
with open(...) as f:isso é feito automaticamente. encoding='utf-8'garante que caracteres especiais sejam lidos/escritos corretamente (boa prática).
Passo 4
Explicando
.replace() de strings:- Em Python,
nova = velha.replace(antigo, novo)cria uma nova string onde todas as ocorrências deantigoforam trocadas pornovo. - É sensível a maiúsculas/minúsculas:
'a'não troca'A'. Se quiser trocar também'A', é preciso chamar.replace('A', 'X')adicionalmente ou usar outra estratégia. .replace()não altera a string original (strings são imutáveis); por isso atribuiremos o resultado a uma variável.
Passo 5
Boas práticas/observações:
- A solução simples ler+replace+escrever é suficiente aqui.
- Se se desejar maior segurança (não corromper o arquivo em caso de erro durante escrita), pode-se escrever num arquivo temporário e depois renomeá-lo para o original. A versão final abaixo é a forma simples — clara para prova/uso cotidiano.
- Se for preciso trocar também
'A', adapte o código (mostro variação nos comentários do código).
Passo 6
Exemplo passo a passo do que o código fará (em palavras):
- Abrir
entrada.txtem modo leitura ('r') comutf-8. - Ler todo o texto para uma variável
conteudo. - Fazer
novo = conteudo.replace('a', 'X'). - Abrir
entrada.txtem modo escrita ('w') comutf-8(isso sobrescreve o arquivo). - Escrever
novono arquivo e fechar.
Passo 7
Como executar:
- Salve o código abaixo em um arquivo, por exemplo
substitui_a.py, no mesmo diretório onde estáentrada.txt. - Execute com
python substitui_a.py(oupython3 substitui_a.py, dependendo do sistema). - Ao terminar,
entrada.txtterá todas as letras'a'substituídas por'X'.
Resposta
# substitui_a.py
# Programa que abre 'entrada.txt' no diretório atual e substitui cada 'a' por 'X'
def main():
nome_arquivo = 'entrada.txt'
try:
# Ler todo o conteúdo do arquivo
with open(nome_arquivo, 'r', encoding='utf-8') as f:
conteudo = f.read()
except FileNotFoundError:
print(f"Erro: o arquivo '{nome_arquivo}' não foi encontrado no diretório atual.")
return
except Exception as e:
print(f"Erro ao ler o arquivo: {e}")
return
# Substituir cada ocorrência de 'a' por 'X' (sensível a maiúsculas)
novo_conteudo = conteudo.replace('a', 'X')
# Se quiser também substituir 'A', descomente a linha abaixo:
# novo_conteudo = novo_conteudo.replace('A', 'X')
try:
# Sobrescrever o arquivo com o novo conteúdo
with open(nome_arquivo, 'w', encoding='utf-8') as f:
f.write(novo_conteudo)
except Exception as e:
print(f"Erro ao escrever no arquivo: {e}")
return
print(f"Substituição concluída: todas as ocorrências de 'a' foram trocadas por 'X' em '{nome_arquivo}'.")
if __name__ == '__main__':
main()