Python TypeError切片索引报错:首个IF语句正常其余行执行失败
问题原因
- 直接报错原因:你在列表切片操作中使用了字符串类型作为索引,比如
name_length_list["0":name_list[name_number]]中的"0"是字符串,Python要求列表的切片索引必须是整数、None或者实现了__index__方法的对象,字符串不满足要求,所以抛出TypeError。 - 额外逻辑错误:
- 你的while循环会先把
name_number从0累加至8才会退出循环,循环结束后name_number的值固定为8,后续所有判断name_number为0-7的if分支永远不会执行 - break语句不能写在while循环外部,属于语法错误
- 切片的右值你写的是
name_list[name_number],这是字符串类型的名称,本身也不能作为索引使用 - 你最后打印时拼接的
"0"+"1"+..."7"结果是字符串"01234567",同样不能作为列表索引使用
- 你的while循环会先把
修正后的实现代码
如果你要实现对列表中名称长度求和的需求,可参考如下代码:
name_length_list = [] name_list = ["Jennifer","Albatross","Justin","Dave","Shankarnarayan","Ezra","Alice","Kwabena"] total_length = 0 for name in name_list: current_len = len(name) print(current_len) name_length_list.append(current_len) total_length += current_len print("各名称长度集合:", name_length_list) print("总长度:", total_length) print("Code is done")
内容的提问来源于stack exchange,提问作者bubba gubba
相关产品推荐
相关产品推荐

