входное значение такое же, как и в заранее определенном списке, но с другим выводом - PullRequest
0 голосов
/ 20 февраля 2020

Я написал программу, которая берет имя и возраст нескольких записей, разделенных запятой, а затем отделяет символы от чисел, а затем сравнивает имя с заранее заданным набором / списком. Если запись не соответствует предварительно определенным данным, программа отправляет сообщение «неверная запись» вместе с элементом, который не соответствует. вот код:

from string import digits

print("enter name and age")
order=input("Seperate entries using a comma ',':")
order1=order.strip()
order2=order1.replace(" ","")
order_sep=order2.split()
removed_digits=str.maketrans('','',digits)
names=order.translate(removed_digits)
print(names)
names1=names.split(',')
names_list=['abby','chris','john','cena']

names_list=set(names_list)

for name in names1:
    if name not in names_list:
        print(f"{name}:doesnt match with predefined data")

проблема, с которой я сталкиваюсь, даже когда я ввожу Криса или Джона, программа обрабатывает их, поскольку они не принадлежат заранее определенному списку

sample input : ravi 19,chris 20
output:ravi ,chris 
ravi :doesnt match with predefined data
chris :doesnt match with predefined data

также я есть еще одна проблема, я написал часть для устранения пробелов, но я не знаю почему, он не устраняет их

sample input:ravi , chris 
ravi :doesnt match with predefined data 
()chris :doesnt match with predefined data

есть место, где я поставил круглые скобки.

любое предложение для решения этой проблемы и / или улучшить этот код приветствуется!

1 Ответ

0 голосов
/ 20 февраля 2020

Я думаю, что некоторые части могут быть упрощены, особенно при удалении цифр. Пока ввод вводится с пробелом между именем и возрастом, вы можете использовать split () дважды. Сначала разделите записи с помощью split(','), а затем выделите возраст с помощью split(). Позже будет легче сравнивать, если вы сохраняете имена без знаков препинания или пробелов вокруг них. Чтобы распечатать имена из итерируемого, вы можете использовать функцию str.join(). Вот пример:

print("enter name and age")
order = input("Seperate entries using a comma ',': ")
names1 = [x.split()[0] for x in order.split(',')]
print(', '.join(names1))

names_list=['abby', 'chris', 'john', 'cena']
for name in names1:
    if name not in names_list:
        print(f"{name}:doesnt match with predefined data")

Это даст желаемый результат:

enter name and age
Seperate entries using a comma ',': ravi 19, chris 20
ravi, chris
ravi:doesnt match with predefined data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...