首页 > 解决方案 > 类型错误:切片索引必须是整数或 None 或者在第一 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")

标签: python

解决方案


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"]

这意味着您正在尝试提取name_length_listfrom index"0"到 index的内容"Jennifer"。当然,口译员不知道这意味着什么。


推荐阅读