разделение по алфавиту вместо разделения слов с использованием списков - PullRequest
0 голосов
/ 19 февраля 2020

, поэтому я заранее определил набор имен в списке (lst1), и когда пользователь вводит имя, которое не совпадает с именами в предварительно определенном списке, печатает сообщение, которое возвращает элемент, который не совпадает с сообщением "не принадлежат нашей семье ", но когда я запускаю этот код, имя разделяется на список, например, вместо" Эбби: не принадлежит нашей семье ", оно печатает" a ": не принадлежит ...." b ": не принадлежит и так далее ...

вот код:

lst1=['john','undertaker','kane','randy']
a1=input().strip()
a=a1.split(',')

user_input=[str(i) for i in a]

for _input in user_input:
    for name in [str(i) for i in str(_input)]:
        if name not in lst1:
            print(f"{name}:Not in family")

пример ввода: 1) Rey mysteiro 2) Randy

вывод: 1) rey mysterio r : Не в семье e: не в семье y: не в семье: не в семье m: не в семье y: не в семье s: не в семье t: не в семье e: не в семье r: не в семье i: Не в семье o: не в семье

2) randy r: не в семье a: не в семье n: не в семье d: не в семье y: не в семье

для некоторых Причина, по которой это не работает, приветствуются любые предложения по улучшению этого кода, а также решению этой проблемы! Спасибо за помощь вне!

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Эта часть:

user_input=[str(i) for i in a]

не нужна, элементы в a уже являются строками. И вот так:

for name in [str(i) for i in str(_input)]:

(это часть, которая превращает ваше слово из _input в список букв). Правильный способ сделать это:

lst1 = ['john','undertaker','kane','randy']
user_input = input().strip().split(',')
for name in user_input:
    if name not in lst1:
        print(f"{name}:Not in family")
0 голосов
/ 19 февраля 2020

Вы можете попробовать это.

lst1=['john','undertaker','kane','randy'] #use a set instead of a list.
lst1=set(lst1)
user_names=input().split(',')
for user in user_names:
    if user not in lst1: #now for checking membership it takes O(1)  but with list it's O(N)
         print(f'{user} : Not part of the family')

user_input=[str(i) for i in a] это избыточно i уже str.

for name in [str(i) for i in str(_input)] это шаг, почему вы получаете отдельные алфавиты.

_input - это строка. Скажем, _input - это 'randy'. Когда вы делаете for name in [str(i) in str(_input)], что эквивалентно этому for name in ['r','a','n','d','y']. И str(_input) является избыточным _input уже является строкой, а str(i) также является избыточным, поскольку i уже является строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...