Python 我得到一个索引器:列表索引超出范围错误

Python 我得到一个索引器:列表索引超出范围错误,python,function,range,Python,Function,Range,我的代码遇到了一些问题,它实现了一个函数,该函数验证字符串的长度并返回该字符串(带空格或不带空格) 如果字符串b>=15,则返回b 如果strinf0时,将引发索引器 状态=o1[i] o2.附加(州) 发生这种情况是因为您正在迭代与o1的大小/内容无关的范围。要解决此问题,您可以考虑: s=“一些字符串” o1=[] o2=[] o1.追加 对于o1中的元素: o2.附加(a(元素)) 原因是,现在您直接在o1上迭代,而不是假设其中始终有9622个元素,而在本例中没有 另外,进一步检查后,

我的代码遇到了一些问题,它实现了一个函数,该函数验证字符串的长度并返回该字符串(带空格或不带空格)

如果字符串b>=15,则返回b

如果strinf<15,则返回“在len(b)2+字符串b之前的os空格数

但我得到了一个索引错误:列表索引超出范围错误。我不知道在哪里或为什么

回溯:

=============重新启动:C:\Users\pbo\Desktop\Trab_04.py=============

ascii字母=ABCDEFGHIjklmnopqrstuvxyzabCDEFGHIjklmnopqrstuvxyz 回溯(最近一次呼叫最后一次):

文件“C:\Users\pbo\Desktop\Trab_04.py”,第30行,在 附加(a(o1[e]))

索引器:列表索引超出范围

=================================================================================================

非常感谢您的帮助

  from random import seed
  from random import randint
  from random import choice
  from string import ascii_letters

  seed(930)

  def a(b):

    if(len(b)<15) :
        s = "";
        l = len(b)
        while(len(s) + len(b) < 15) :
            s += " "
        s += b
        return s
    else: 
        return b


 print("ascii_letters = " + ascii_letters)
 o1 = []
 for e in range(9622):
         k = randint(1, 25)
         s = ""
 for l in range(k):
         s = s + choice(ascii_letters)
 o1.append(s)
 o2 = []
 for e in range(9622):
         o2.append(a(o1[e]))
 print("000000000111111111122222222223333333333")
 print("123456789012345678901234567890123456789")
 for e in range(9):
         print(o1[e] + "|")
 print("000000000111111111122222222223333333333")
 print("123456789012345678901234567890123456789")
 for e in range(9):
         print(o2[e] + "|")


 x1 = ""
 x2 = "a"
 x3 = "abc"
 x4 = "abcdefghijklmnopqrstuvwxyz"
 print("000000000111111111122222222223333333333")
 print("123456789012345678901234567890123456789")
 print(x1 + "|")
 print(x2 + "|")
 print(x3 + "|")
 print(x4 + "|")
 print("000000000111111111122222222223333333333")
 print("123456789012345678901234567890123456789")
 print(a(x1) + "|")
 print(a(x2) + "|")
 print(a(x3) + "|")
 print(a(x4) + "|")
从随机导入种子
从随机导入randint
从随机进口选择
从字符串导入ascii_字母
种子(930)
def a(b):

如果(len(b)问题是您的列表
o1
中只有一个元素。剪掉所有剩余的代码,您可以执行以下操作:

s=“一些字符串”
o1=[]
o2=[]
#现在有一个元素
o1.追加
对于范围内的i(9622):
#当i>0时,将引发索引器
状态=o1[i]
o2.附加(州)
发生这种情况是因为您正在迭代与
o1
的大小/内容无关的范围。要解决此问题,您可以考虑:

s=“一些字符串”
o1=[]
o2=[]
o1.追加
对于o1中的元素:
o2.附加(a(元素))
原因是,现在您直接在
o1
上迭代,而不是假设其中始终有9622个元素,而在本例中没有

另外,进一步检查后,您的
a
函数似乎只是试图在字符串中填充15个字符的空格。幸运的是,有一个内置的:

x=“一些字符串”
x、 rjust(15)
“一些绳子”
其中,
rjust
将留下空格以创建给定长度的字符串

看起来您的字符串不正确(另请参见)

如果您更改以下内容:

o1 = []
for e in range(9622):
    k = randint(1, 25)
    s = ""
for l in range(k):
    s = s + choice(ascii_letters)
o1.append(s)
致:


然后,您的代码似乎正常工作。

请共享完整的回溯
o1
中只有一个元素(
s
),因此任何索引>0都会引发该错误欢迎使用StackOverflow。请参阅。将您的整个程序发布为未跟踪的三行代码会让未来用户难以阅读。
o1 = []
for e in range(9622):
    k = randint(1, 25)
    s = ""
    for l in range(k):
        s = s + choice(ascii_letters)
        o1.append(s)