我收到IndexError:列表索引超出范围错误

我在代码上遇到麻烦,该代码实现了一个函数,该函数可以验证字符串的长度并返回带空格或不带空格的字符串。

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

如果strinf

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

跟踪:

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

ascii_letters = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 追溯(最近一次通话):

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

IndexError:列表索引超出范围

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

非常感谢您提供任何可能的帮助。

  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) + "|")
super_grubby 回答:我收到IndexError:列表索引超出范围错误

问题在于您的列表o1中只有一个元素。剪下其余所有代码,您可以执行以下操作:

s = "some string"
o1 = []
o2 = []

# now has one element
o1.append(s)

for i in range(9622):
    # when i > 0,IndexError will be raised
    state = o1[i]
    o2.append(a(state))   

之所以会发生这种情况,是因为您要遍历与o1的大小/内容无关的范围。要解决此问题,您可以考虑:

s = "some string"
o1 = []
o2 = []

o1.append(s)
for element in o1:
    o2.append(a(element))

原因是,现在您直接在o1上进行迭代,而不是假设它中始终包含9622个元素,而在这种情况下不会。

此外,经过进一步检查,您的a函数似乎正试图填充空格(最多15个字符)的字符串。幸运的是,有一个内置功能:

x = "some string"

x.rjust(15)
'    some string'

rjust将在其中插入空格以创建给定长度的字符串

,

您的indentation似乎不正确(另请参见What is Python Whitespace and how does it work?)。

如果您更改以下内容:

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 = []
for e in range(9622):
    k = randint(1,25)
    s = ""
    for l in range(k):
        s = s + choice(ascii_letters)
        o1.append(s)

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

本文链接:https://www.f2er.com/3107831.html

大家都在问