我是一个初学者程序员,我遇到了一个我不能解决的问题。我正在创建一个程序,通过依次将每个字母的序数值与文本中每个字母的序数值相加来加密文本,并使用chr()函数打印新字符。你知道吗
codeword = input('Enter codeword : ')
encrypt = input('Enter text to encrypt : ')
j = 0
for i in encrypt:
check = (ord(encrypt[j])+ ord(codeword[j])-96)
if check > 122:
no = check - 26
ok = (chr(no))
ok = ok.replace("%", " ")
print(ok, end="")
if check < 122:
yes = (chr(check))
yes = yes.replace("%", " ")
print(yes, end="")
j+=1
当我选择abc作为码字,hey作为要加密的字时,它可以很好地工作并打印igb。但是,如果我选择abc作为密码,选择helloworld作为要加密的单词,我将收到以下消息。你知道吗
Traceback (most recent call last):
File "C:/Python34/task 2.py", line 9, in <module>
check = (ord(encrypt[j])+ ord(codeword[j])-96)
IndexError: string index out of range
因为
encrypt
比codeword
长,所以可以到达,比如说,索引5
。encrypt[5]
是, but
codeword[5]
不存在。你需要找到最短的:您还可以使用
min()
函数:编辑:似乎您希望循环。您可以使用
itertools
执行该任务:cycle()
将永远遍历对象。当它到达终点时,它又回到起点。例如:因为
zip()
只能循环到最短的iterable,所以它只能循环到encrypt
的长度。例如:如果
encrypt
比codeword
短,它仍然有效:编辑2:似乎要将空格保留为空格。你可以这样做:
相关问题 更多 >
编程相关推荐