如果用户键入ex.INF,则会打印列表中以INF开头的所有单词。我如何限制只打印某些单词?

2024-05-29 06:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,其中包含以“INF…”和“INFO…”开头的单词

当用户输入“INF”时,我不希望以INFO开头的单词也打印出来。我如何限制“信息”字不打印

weirdList = {"INF432", "INF678", "INFO123", "INFO654"}
filtered_list = []

for word in weirdList
   if word[0:3] == input:
       filtered_list.append(word)

我的愿望是,当用户要求以“INF”开头的单词时,只打印“INF432”和“INF678”,而不打印“INFO…”


Tags: 用户info信息列表for单词filteredlist
2条回答

首先,weirdListset而不是list。代码不起作用的原因是所有元素的条件都是True

  • 'INF432'[0:3]将输出'INF'
  • 'INFO123'[0:3]还将输出'INF'

您可以做的是过滤掉以INFO开头的项目:

weirdList = {"INF432", "INF678", "INFO123", "INFO654"}
filtered_list = []

for word in weirdList:
   if not word.startswith('INFO'):
       filtered_list.append(word)

这也可以通过列表理解来实现:

weirdList = ["INF432", "INF678", "INFO123", "INFO654"]

filtered_list = [word for word in weirdList if not word.startswith('INFO')]

注意,在我的上一个示例中,我将weirdList更改为实际列表

如果要根据用户输入将项目添加到列表中,并忽略INFO项目,可以这样做:

user_item_list = []
user_input = input('Enter item here: ')

if not user_input.startswith('INFO'):
    user_item_list.append(user_input)

print(user_item_list)

从您的示例中,我可以看出您只希望保留以“INF”开头并后跟数字的项目。例如,“INFO”是“INF”,后跟“O”

这可以通过以下方式实现:

weirdList = {"INF432", "INF678", "INFO123", "INFO654"}
filtered_list = []

word1=input("enter something: ")

for word in weirdList:
   if word.startswith(word1) and word.replace(word1,"")[0].isnumeric():
     filtered_list.append(word)

print(filtered_list)

输出:

enter something: INF
['INF432', 'INF678']

这种方法还消除了“INFS01”等,适用于“INF”以外的其他标准

相关问题 更多 >

    热门问题