问题描述
初学者编码问题 我应该编写一个代码来反转文件的内容,然后根据用户选择的强度插入一些随机字符。然后它会创建一个包含受阻文件的新文件。
例如,如果用户选择强度=2,它会在文本文件中的每个字母之间插入2个随机字符:猫坐---> sgyt6gilns t7faxdc e3dh1kT
现在我的程序在中间插入了太多字符,我不知道为什么。 这是它在做什么:
输入:CAT
强度输出 = 1:TeAEADQoC
import string
import random
def getRandomChar():
alpha = string.ascii_letters + string.digits
return random.choice(alpha)
def randomString(EncrypStrength):
count = 0
result = ''
while count < len(EncrypStrength):
result += getRandomChar()
count += 1
return result
def ReverseString(OrigFile):
return OrigFile[::-1]
def LineEncrypt(line,EncrypStrength):
EncrypStrength = ReverseString(line)
index = 0
newline = EncrypStrength[index]
index += 1
while index < len(EncrypStrength):
newline += randomString(EncrypStrength)
newline += EncrypStrength[index]
index += 1
return newline
def main():
OrigFile =input('Original File Name:')
EncryptedFile = input("obfuscated File Name:")
EncrypStrength = int(input('Enter the Encryption Strength:'))
Orig = open(OrigFile,'r')
Encrypted = open(EncryptedFile,'w')
line = Orig.readline()
while line!= '':
encryptLine = LineEncrypt(line,EncrypStrength)
Encrypted.write(encryptLine +"\n")
line = Orig.readline()
Orig.close()
Encrypted.close()
if __name__=="__main__":
main()
解决方法
在行加密方法中,您错误地使用了加密强度,您使用反向行覆盖了要作为 EncryptStrength 放置的字符数。
def LineEncrypt(line,EncrypStrength):
reversedString = ReverseString(line)
index = 0
newline = reversedString[index]
index += 1
while index < len(reversedString):
newline += randomString(EncrypStrength)
newline += reversedString[index]
index += 1
,
正如 Ritesh 提到的那样,您混淆了 EncrypStrength 并覆盖了它。 这是完整的更正代码,我希望它能按您的预期工作。
import string
import random
def getRandomChar():
alpha = string.ascii_letters + string.digits
return random.choice(alpha)
def randomString(EncrypStrength):
count = 0
result = ''
while count < EncrypStrength:
result += getRandomChar()
count += 1
return result
def ReverseString(OrigFile):
return OrigFile[::-1]
def LineEncrypt(line,EncrypStrength):
RevStr = ReverseString(line)
index = 0
newline = RevStr[index]
index += 1
while index < len(RevStr):
newline += randomString(EncrypStrength)
newline += RevStr[index]
index += 1
return newline
def main():
OrigFile =input('Original File Name:')
EncryptedFile = input("obfuscated File Name:")
EncrypStrength = int(input('Enter the Encryption Strength:'))
Orig = open(OrigFile,'r')
Encrypted = open(EncryptedFile,'w')
line = Orig.readline()
while line!= '':
encryptLine = LineEncrypt(line,EncrypStrength)
Encrypted.write(encryptLine +"\n")
line = Orig.readline()
Orig.close()
Encrypted.close()
if __name__=="__main__":
main()