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成为一个包含1个元素的列表)list3=['']
- 替换第19行:
附加为list3。将(x)
(即保持大小为1的list3,并将新元素放在前一个元素的列中)list3[0]=x
汽车是蓝色的
这是个棘手的问题
(请注意,空格不再重复)首先修复程序的缩进,使其在问题中的显示方式与在文件中的显示方式相同。我应该能够复制/粘贴它并让它运行。顺便说一句,在它的正下方有一个
for x in…
和另一个for x in…
可能不是你的问题,但它确实令人困惑。给这四个变量起不同的名字。如果您试图表示不想使用外部代码,请给它起一个名称\ucode>,而不是给它一个稍后会隐藏的名称。更一般地说,像n
、n1
、x
这样的名称没有内在含义,因此它们很难理解您的程序在做什么。如果您想让我们猜测您的程序应该如何工作,以便我们可以告诉您如何修复它,有意义的名称将使这一点变得更容易。我所说的n和x是指程序在解码时检查给定字符串的每个字符。代码使用变量I
,该变量未分配到任何位置。