Dados algunos datos en un archivo de texto, la tarea es codificar el texto y generarlo en un archivo de texto separado. Entonces, necesitamos escribir un programa en Python que lea un archivo de texto, codifique las palabras en el archivo y escriba la salida en un nuevo archivo de texto.
Reglas a seguir:
- Las palabras menores o iguales a 3 caracteres no necesitan codificarse.
- No mezcle el primer y el último carácter, por lo que la codificación puede convertirse en Srbmnacilg o Srbmnailcg o Snmbracilg , es decir, las letras, excepto la primera y la última, se pueden codificar en cualquier orden.
- La puntuación al final de la palabra debe mantenerse como está, es decir, «Sorprendente», podría convertirse en «Spsirnirug», pero no en «Spsirn, irug».
- Se admitirán los siguientes signos de puntuación: coma, signo de interrogación, punto, punto y coma, exclamación.
- Haga esto para un archivo y mantenga secuencias de líneas.
Al ejecutar el programa, debe solicitar al usuario que ingrese el nombre del archivo de entrada y generar un archivo de salida con texto codificado. El archivo de salida debe nombrarse agregando la palabra «Codificado» al nombre del archivo de entrada.
Ejemplo:
Input : MyFile.txt -> Scrambling words is very interesting. Because even if they are scrambled, it doesn't impact our reading. Because we don't read letter by letter, we read the word as a whole. Output : MyFileScrambled.txt -> Srbmnacilg words is very itrensientg. Bscauee even if tehy are srelabcmd, it dosn'et ipcmat our raidneg. Bacusee we dn'ot raed lteetr by letetr, we raed the word as a wolhe.
A continuación se muestra la implementación:
Python3
import random punct = (".", ";", "!", "?", ",") count = 0 new_word = "" inputfile = input("Enter input file name:") with open(inputfile, 'r') as fin: for line in fin.readlines(): # Read line by line in txt file for word in line.split(): # Read word by word in each line if len(word) > 3: # If word length >3 '''If word ends with punctuation Remove firstletter, lastletter and punctuation Shuffle the words Add the removed letters (first letter) Add the removed letters (last letter) Add the removed letters (punctuation mark)''' if word.endswith(punct): word1 = word[1:-2] word1 = random.sample(word1, len(word1)) word1.insert(0, word[0]) word1.append(word[-2]) word1.append(word[-1]) '''If there is no punctuation mark Remove first letter and last letter Shuffle the word Add the removed letters (first letter) Add the removed letters (last letter) Append the word and " " to the previous words''' else: word1 = word[1:-1] word1 = random.sample(word1, len(word1)) word1.insert(0, word[0]) word1.append(word[-1]) new_word = new_word + ''.join(word1) + " " '''If word length <3 just append the word and " " to the previous words''' else: new_word = new_word + word + " " # "Append to <filename>Scrambled.txt" with open((inputfile[:-4] + "Scrambled.txt"), 'a+') as fout: fout.write(new_word + "\n") new_word = ""
Producción:
Smcinrablg wodrs very Bauscee eevn tehy dnoes't icpamt Bcuesae d'not read lteter raed wrod whole.
Publicación traducida automáticamente
Artículo escrito por NarenSaiKrishna y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA