Если пользователь вводит напр. INF, все слова, начинающиеся с INF в списке, печатаются. Как я могу сделать ограничение, которое печатает только определенные слова? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть список, содержащий слова, начинающиеся с "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)

Мой wi sh заключается в том, что печатается только "INF432" и "INF678", а не "INFO .." "когда пользователь запрашивает слова, начинающиеся с" INF "

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Из ваших примеров я мог видеть, что вы хотите оставить только те элементы, которые начинаются с «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».

0 голосов
/ 18 апреля 2020

Во-первых, weirdList - это set, а не 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...