我有一个清单
listA = ["Hello", "World", "in", "a", "frame"]
我有这个代码,它应该正常工作
a = 0
for nb in listA:
if a == 0:
print("*"*10).center(20)
a += 1
if len(listA[nb]) == 2:
print("* " + nb + " *").center(20)
elif len(listA[nb]) == 1:
print("* " + nb + " *").center(20)
else:
print("* " + nb + " *")
if a == len(listA):
listA[-1]
print("*"*10).center(20)
#print(a)
然而,我有这个错误
TypeError:list indices必须是整数,而不是str
看着它,我已经将nb改为整数并且它有效。不过,当我正在做len(listA[1])
时,我有5个。
我的错误在哪里?
由于
答案 0 :(得分:2)
nb
是string
中的listA
。因此listA[nb]
无效,您只需使用nb
。
a = 0
for nb in listA:
if a == 0:
print("*"*10).center(20)
a += 1
if len(nb) == 2:
print("* " + nb + " *").center(20)
elif len(nb) == 1:
print("* " + nb + " *").center(20)
else:
print("* " + nb + " *")
if a == len(listA):
listA[-1]
print("*"*10).center(20)
#print(a)
答案 1 :(得分:2)
作为其他2个答案的补充,您有一行listA[-1]
。
我不知道你期望它做什么,但它什么也没做。它只返回listA
中的最后一个元素。
答案 2 :(得分:1)
你的错误不是len,而是 listA [nb] 。您遍历列表,因此 nb 是一个字符串。我不确定你要做什么,只需要 len(nb)来获取列表项的长度。
答案 3 :(得分:1)
for nb in listA
将迭代listA的每个元素,因此nb
始终是“current”元素的类型。
我不完全确定你想要做什么,但是如果你想知道/使用listA
中元素的索引,你可以使用enumerate()
listA = ["Hello", "World", "in", "a", "frame"]
for idx, nb in enumerate(listA):
if idx == 0:
print("*"*10).center(20)
if len(listA[idx]) == 2:
print("* " + nb + " *").center(20)
elif len(listA[idx]) == 1:
print("* " + nb + " *").center(20)
else:
print("* " + nb + " *")
if idx == len(listA):
# listA[-1] # this does nothing at all, just returns the last element of the list
print("*"*10).center(20)