代码:
import random
randomnum = random.randint(1, 256)
enter = "john"
enterlen = (len(enter))
enterarray = [randomnum, enterlen]
i = 0
while i <= enterlen:
enterarray.append(enter[i])
i = i + 1
错误:
Traceback (most recent call last):
File "/home/kdogg/PycharmProjects/starter/encode.py", line 9, in <module>
enterarray.append(enter[i])
IndexError: string index out of range
我正在尝试使用此数组生成加密代码。我应该以一个随机数开始填充数组,然后是我要编码的单词的长度,然后使用1对1的代码(a = 1
,b = 2
,c = 3
,等等)
我将随机乘以给定的数字(a = 1
,b = 2
等),得到两个值之间的数字(a可能在1和25之间,等等),然后将其转换为十六进制以使其变暗
比如说,你把ABC这个词放在了一起。它的结果类似于(100)(3)(1545784)
首先是随机数,然后是单词长度,然后在两个值之间为每个字母分配一个随机数,然后将所有内容转换为十六进制。
但是,即使使用append()
,我的数组也没有填满
很简单。数组从0开始,但
len()
返回项目计数,因此需要减少此数字。我建议在while循环中将其更改为i < enterlen
。你应该考虑使用for循环。用
while i<enterlen:
代替while i<=enterlen:
因为在你的例子中,i一直到4[5个字符],而John只有4个字符,所以它给出的索引超出了范围您正在尝试访问enter[4],它不是该字符串值的有效索引。数组是基于0的索引,因此enter的唯一有效索引是0、1、2和3
要解决问题,必须将while循环调整为i<;进入。从而得出当i=4时的结论
现在可以正确打印[98,4,'j','o','h','n']
相关问题 更多 >
编程相关推荐