我在代码上出现超出范围的错误,请参阅下面的详细信息

2024-09-30 18:30:17 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

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 = 1b = 2c = 3,等等)

我将随机乘以给定的数字(a = 1b = 2等),得到两个值之间的数字(a可能在1和25之间,等等),然后将其转换为十六进制以使其变暗

比如说,你把ABC这个词放在了一起。它的结果类似于(100)(3)(1545784)首先是随机数,然后是单词长度,然后在两个值之间为每个字母分配一个随机数,然后将所有内容转换为十六进制。 但是,即使使用append(),我的数组也没有填满


Tags: 代码importlen数字random数组john单词
3条回答

很简单。数组从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']

相关问题 更多 >