Python 需要帮助在输出vigenere密码时删除其中的空格吗

Python 需要帮助在输出vigenere密码时删除其中的空格吗,python,encryption,vigenere,Python,Encryption,Vigenere,当我在文本文件中输入“tests is fun”并从中读取进行加密时,我得到的是“ICLAGQPPXKTHCB”,而不是“iclangcybb”,我使用python作为密钥。是什么导致了这个问题?当我试图在转换字符串到上限后添加if语句时,我一直收到一个错误,指出file1没有定义 代码: Alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S

当我在文本文件中输入“tests is fun”并从中读取进行加密时,我得到的是“ICLAGQPPXKTHCB”,而不是“iclangcybb”,我使用python作为密钥。是什么导致了这个问题?当我试图在转换字符串到上限后添加if语句时,我一直收到一个错误,指出file1没有定义

代码:

Alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
        "V", "W", "X", "Y", "Z", ",", ".", "-", " ","\n"]


*def encrypt():
    count = 0
    i = 0
    output = []
    encrypted = []
    keylist = []
    stringlist = []

    **import os
    key = input("Please enter the key you want to use: ")
    fname = input("Enter filename to open and decode: ")
    fname1 = fname + (".txt")
    if os.path.isfile(fname1):
        file1 = open(fname1,'r')
        file1 = file1.read()
        mod = fname + ("_e.txt")
        file2 = open(mod,'w')
    else:
        print()
        print("file doesnt exist try again")
        return()


for index, letter in enumerate(file1):
    if letter.isalpha():
        number = alphabet.index(letter)
        cw = key[index % len(key)]
        shift = alphabet.index(cw)
        nli = (number + shift) % 26
        nl = alphabet[nli]
        output += nl
    else:
        output += letter


   # main function
if __name__ == '__main__':       
       main()*

计算您拥有的输出字符与正在查找的字符的比较,似乎您不希望在测试中使用“”,或者在传递代码之前删除这些字符。这应该会删除3个额外的字符,并且可能会解决这个问题。那么我需要向代码中添加什么来删除额外的字符呢@Jeremiet您可以做很多事情,但我认为最简单的修复方法是添加一个跳过空格字符的条件。在迭代文件中的字符时,添加如下内容:
if i!=“”:
,然后继续构建stringlist变量。这将导致与stringlength变量中的数字不同的条目数,因此您还需要在下面进行一些调整。我更改了上面的代码,现在我得到了空格,但转换时得到了错误的字母。输出:编码文本为:iclag ppx thcYou现在输出的字符数正确,但您不需要空格,因此请删除else命令。至于字母不正确,我想你一定是无意中改变了算法,因为你第一次计算的前5个字母是正确的。请确保保留原有的算法,然后再次尝试运行该算法。计算您的输出字符与正在查找的字符的比较,您似乎不想在测试中使用“”,或者在传递代码之前删除这些字符。这应该会删除3个额外的字符,并且可能会解决这个问题。那么我需要向代码中添加什么来删除额外的字符呢@Jeremiet您可以做很多事情,但我认为最简单的修复方法是添加一个跳过空格字符的条件。在迭代文件中的字符时,添加如下内容:
if i!=“”:
,然后继续构建stringlist变量。这将导致与stringlength变量中的数字不同的条目数,因此您还需要在下面进行一些调整。我更改了上面的代码,现在我得到了空格,但转换时得到了错误的字母。输出:编码文本为:iclag ppx thcYou现在输出的字符数正确,但您不需要空格,因此请删除else命令。至于字母不正确,我想你一定是无意中改变了算法,因为你第一次计算的前5个字母是正确的。确保你的算法完好无损,然后再次尝试运行它。