类型错误:切片索引必须是整数或无,或者在第一个 IF 行上工作了__index__方法,但在任何其他行上都不起作用



我知道有类似的问题,但没有一个答案对我有帮助。我已经写了这个程序来总结列表中的名字,如果我把print(name_length_list[0])放在第一个if语句下面,它就会打印出来。我将上传整个代码,所以没有混乱!

name_number = 0
name_length_list = [0,1,2,3,4,5,6,7]
name_list = ["Jennifer","Albatross","Justin","Dave","Shankarnarayan","Ezra","Alice","Kwabena"]
while (name_number<9):
print(len(name_list[name_number]))
name_number = name_number + 1
if (name_number is 0):
name_length_list["0":name_list[name_number]]
>HERE is where I put the print statement that worked
if (name_number is 1):
name_length_list["1":name_list[name_number]]
if (name_number is 2):
name_length_list["2":name_list[name_number]]
if (name_number is 3):
name_length_list["3":name_list[name_number]]
if (name_number is 4):
name_length_list["4":name_list[name_number]]
if (name_number is 5):
name_length_list["5":name_list[name_number]]
if (name_number is 6):
name_length_list["6":name_list[name_number]]
if (name_number is 7):
name_length_list["7":name_list[name_number]]
print(name_length_list["0"+"1"+"2"+"3"+"4"+"5"+"6"+"7"])
if (name_number is 8):
break
print("Code is done")

你没有确切地解释你的代码要做什么,但似乎你正试图打印出name_list中所有名称长度的总和。下面的代码实现了这一点:

total_length = 0
name_list = ["Jennifer","Albatross","Justin","Dave","Shankarnarayan","Ezra","Alice","Kwabena"]
for name in name_list:
total_length += len(name)
print(total_length)
print("Code is done")

输出:

57
Code is done

name_length_list["0":name_list[name_number]]这样的行不做任何事情;没有打印或赋值发生,所以即使使用字符串作为列表的索引是有效的语法,也不会发生任何事情。

Withprint(name_length_list["0"+"1"+"2"+"3"+"4"+"5"+"6"+"7"]);这根本不是Python的工作方式。似乎你认为这正在做的是将name_length_list中所有项目的值相加。但是发生的事情是,你将所有这些字符串连接在一起,这意味着你试图打印name_length_list["0123456789"],这在Python中不起作用,因为你不能使用字符串作为列表的索引。

如果您想使用列表来存储名称长度,您可以这样做,然后使用sum()来获得列表中最后值的总和:

name_list = ["Jennifer","Albatross","Justin","Dave","Shankarnarayan","Ezra","Alice","Kwabena"]
name_length_list = []
for name in name_list:
name_length_list.append(len(name))
print(sum(name_length_list))
print("Code is done")

输出:

57
Code is done

然而,再次因为你的问题不清楚,以及你的代码,我可能完全误解了你想要/需要做的事情,但我试图理解你的意思,因此根据我的理解给出了答案。

name_length_list["0":name_list[name_number]]

您正在使用字符串作为开始索引,它必须是一个整数(或None,或有__index__方法)。结束索引也是一个字符串。

考虑下面这行:

name_length_list["0":name_list[name_number]]

假设name_number0,行是:

name_length_list["0":name_list[0]]

name_length_list["0":"Jennifer"]

这意味着您正试图从索引"0"提取name_length_list的内容到索引"Jennifer"。当然,解释器不知道这是什么意思。

相关内容

  • 没有找到相关文章

最新更新