我的任务是使用7,3,19,5的列表加密随机消息。这是我执行此任务的代码:
def k():
m=input ("Please enter a message: ")
x=""
w = [7,3,19,5]
g=0
for ch in m:
en = chr(ord(ch)+ w[g])#encryption
x = (x+en)#adding
print(str(x))#output
g=g+1
k()
我的输出是:
Please enter a message: hello world
o
oh
oh
ohq
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
k()
File "H:\t2test.py", line 7, in k
en = chr(ord(ch)+ w[g])#encryption
IndexError: list index out of range
答案 0 :(得分:1)
如果您了解模运算符%
(除法余数),则无需修改列表。
您也不需要手动计算(这里有enumerate()
),您应该使用更好的变量名称:
def encrypt():
message = input("Please enter a message: ")
encrypted = ""
offsets = [7,3,19,5]
lenoff = len(offsets)
for index, char in enumerate(message):
encrypted += chr(ord(char)+ offsets[index % lenoff]) #encryption
print(encrypted)
答案 1 :(得分:0)
字符串的长度是可变的,列表有固定的元素。所以修改你的列表。
修改您的列表w = [7,3,19,5]*len(m)
def k():
m=input ("Please enter a message: ")
x=""
w = [7,3,19,5]*len(m)
g=0
for ch in m:
en = chr(ord(ch)+ w[g])#encryption
x = (x+en)#adding
print(str(x))#output
g=g+1
k()
输出:
Please enter a message: hello world
o
oh
oh
ohq
ohqv
ohqv#
ohqv#
ohqv#t
ohqv#ty
ohqv#tyo
ohqv#tyow
相反,您可以使用随机数字。
对于上述功能,您可以随机导入
w=[]
for i in range(len(m)):
w.append(random.randrange(len(m)))
答案 2 :(得分:0)
当达到w的长度时重置g值也可以。
def k():
m=input("Please enter a message: ")
x=""
w = [7,3,19,5]
g=0
for ch in m:
en = chr(ord(ch)+ w[g])#encryption
x = (x+en)#adding
print(str(x))#output
g=g+1
if (g==len(w)):
g=0
k()