gpt4 book ai didi

python - 为什么这个 "in"语句没有评估为 True?

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:56 25 4
gpt4 key购买 nike

我这里有这段代码

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" 的正确代码是什么?

最佳答案

您在遍历列表的同时修改列表。具体来说,因为您正在删除项目,而不是调整索引,所以您跳过了一些东西;在本例中,mac'n'cheese

您还遇到了另一个您碰巧没有遇到这些输入的问题。由于每个样本输入只删除了一个元素,range(0, length-1) 恰好没有给出 IndexError;但如果有多个元素被移除,它就会移除。

这里有一个更好的方法来完成您想要做的事情:

toppings = input("Toppings: ").split('|')

toppings_without_cheese = (top for top in toppings if 'cheese' not in top)

print('|'.join(toppings_without_cheese))

关于python - 为什么这个 "in"语句没有评估为 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com