我这里有密码
input1 = input("Toppings: ")
split = input1.split("|")
length = len(split)
for i in range(0, length-1):
if "cheese" in str(split[i]):
del split[i]
s = "|"
print(s.join(split))
它意味着获取一个字符串,将它按"|"
分割成一个数组,然后在数组中搜索字符串"cheese"
,如果找到了,就从数组中取出,然后打印出解析后的数组。你知道吗
输入时:
Toppings: ham|lettuce|cheddar cheese|sliced cucumber|tomato
ham|lettuce|sliced cucumber|tomato
输出是正确的-它从数组中删除了包含"cheese"
的元素。但是,输入时:
Toppings: egg|lettuce|cheese spread|mac'n'cheese
egg|lettuce|mac'n'cheese
它不会从数组中删除它。当我查找in
操作符时,它说它不匹配整个单词,所以我认为它可以工作。在if
语句中放入什么样的正确代码才能检测到"mac'n'cheese"
中的"cheese"
?你知道吗
我喜欢使用一个单独的数组,并向其中添加允许的值,而不是删除不允许的值。请参阅“allowedToppings”以及我如何切换下面的If语句。你知道吗
您在对列表进行迭代时正在修改它。具体地说,因为您正在删除项,而不是调整索引,所以您跳过了一些内容;在本例中是
mac'n'cheese
。你知道吗你也有另一个问题,你碰巧没有遇到这些输入。由于每个示例输入只删除了一个元素,
range(0, length-1)
碰巧没有给出IndexError
;但是如果删除了多个元素,它就会被删除。你知道吗这里有一个更好的方法来做你想做的事情:
问题是这条线:
范围的结尾已经是独占的。你可以做:
但这将引发异常,因为指针将通过数组的结尾。解决问题的简单方法是:
相关问题 更多 >
编程相关推荐