如果用户输入 ex。 INF,打印列表中所有以 INF 开头的单词。我怎样才能限制只打印某些单词?

If user types ex. INF, all words that start with INF in a list are printed. How can I make a limit that only prints certain words?

我有一个包含以 "INF.." 和 "INFO.."

开头的单词的列表

当用户在"INF"中输入时,我不希望以 INFO 开头的单词也被打印出来。我怎样才能限制不打印 "info" 个字?

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

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

我希望只打印 "INF432" 和 "INF678",而不是 "INFO.." 当用户要求以 "INF"

开头的单词时

首先,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" 开头且后跟 numbers.For 的项目 例如 "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" 以外的其他标准。