我知道有类似的问题,但没有一个答案对我有帮助。我已经写了这个程序来总结列表中的名字,如果我把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_number
是0
,行是:
name_length_list["0":name_list[0]]
name_length_list["0":"Jennifer"]
这意味着您正试图从索引"0"
提取name_length_list
的内容到索引"Jennifer"
。当然,解释器不知道这是什么意思。