python - 类型错误:切片索引必须是整数或 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")
解决方案
name_length_list["0":name_list[name_number]]
您使用字符串作为起始索引,它必须是整数(或None
,或有__index__
方法)。您的结束索引也是一个字符串。
考虑以下行:
name_length_list["0":name_list[name_number]]
假设name_number
是0
,该行是:
name_length_list["0":name_list[0]]
这是
name_length_list["0":"Jennifer"]
这意味着您正在尝试提取name_length_list
from index"0"
到 index的内容"Jennifer"
。当然,口译员不知道这意味着什么。
推荐阅读
- django - 我怎样才能把评论显示在表格上
- java - while循环中的扫描仪
- google-cloud-platform - GCP Stackdriver:在日志中没有特定文本的情况下创建警报
- android - SpannableStringBuilder 不在文本视图中显示文本
- asp.net - Model is null in view on foreach
- swift - Swift 问题:如果 if else 块是协议类型,我们如何初始化一个非可选变量?
- oop - 扩展与重新实例化
- excel - 将数据从 Excel 文件导入 Access 表
- python - 从python中的视频导入大量图像的有效方法
- qt - 带有 QPushButton 的 QT GridLayout