Python 基于密钥的解码器程序不工作

Python 基于密钥的解码器程序不工作,python,decode,Python,Decode,我正在尝试制作一个解码编码信息的程序。我已经为大写字母和小写字母创建了两个单独的列表。但每次我输入带有空格的消息时,消息的第一个字母都会在每个单词后保留输出 n1=1 while n1!=0: n=input("\nEnter code") n1=int(n[0]) newcode=n[1:] list1=['a','b','c','d','e','f','g','h','i','j','k','l'

我正在尝试制作一个解码编码信息的程序。我已经为大写字母和小写字母创建了两个单独的列表。但每次我输入带有空格的消息时,消息的第一个字母都会在每个单词后保留输出

    n1=1
    while n1!=0:
        n=input("\nEnter code")
        n1=int(n[0])
        newcode=n[1:]
        list1=['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']
        list2=['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']
        list3=[]
        list4=[]
        for x in newcode:
            if i in list1:
                n=list1.index(i)
                n2=n-n1
                y=list1[n2]
                print(y, end="")
            else:
                list3.append(i)
                for x in list3:
                    if i in list2:
                        n=list2.index(i)
                        n2=n-n1
                        y=list2[n2]
                        print(y, end="")
                    else:
                        print(i, end="")

                    if n1==0:
                        '/n'
                        break
样本输入:3Wkh fdu lu eoxh

样本输出: 它是蓝色的

样本输入: 9Rc'b j carlthxwn

样本输出: 这是我的诡计


我可以毫无问题地运行您的程序并复制。问题不仅在于每个单词后面的第一个字母都是重复的。事实上,对于小写字母来说,所有这些都很好,但大写字母空格和其他空格会不断累积,并不断重复

来自这一行的所有内容:
list3。在
list3
中累加的附加(x)
,不是所有小写字母

我没有花足够的时间来全面分析您的脚本,但这里有一个快速而肮脏的解决方案:

  • 将第10行:
    list3=[]
    替换为
    list3=['']
    (即使list3成为一个包含1个元素的列表)
  • 替换第19行:
    list3。将(x)
    附加为
    list3[0]=x
    (即保持大小为1的list3,并将新元素放在前一个元素的列中)
我做到了,通过您的示例输入,我得到:

汽车是蓝色的
这是个棘手的问题

(请注意,空格不再重复)

首先修复程序的缩进,使其在问题中的显示方式与在文件中的显示方式相同。我应该能够复制/粘贴它并让它运行。顺便说一句,在它的正下方有一个
for x in…
和另一个
for x in…
可能不是你的问题,但它确实令人困惑。给这四个变量起不同的名字。如果您试图表示不想使用外部代码,请给它起一个名称
\ucode>,而不是给它一个稍后会隐藏的名称。更一般地说,像
n
n1
x
这样的名称没有内在含义,因此它们很难理解您的程序在做什么。如果您想让我们猜测您的程序应该如何工作,以便我们可以告诉您如何修复它,有意义的名称将使这一点变得更容易。我所说的n和x是指程序在解码时检查给定字符串的每个字符。代码使用变量
I
,该变量未分配到任何位置。