Как напечатать определенные части списка, используя пользовательский ввод в Python - PullRequest
0 голосов
/ 19 февраля 2019

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

Employee Name: Jeffery Medina
Salary: 101442.00
Age: 23

Это мой список

lst=[('Jeffery Medina','Officer','1254','101442.00','23'),('Katrina Peters','Officer','3423','94122.00','45'),('Kim Alan','Captain','6434','101592.00','29'),('Vincente Mendez','Officer','3235','110064.00','32'),('Chris Boalen','Captain','8769','50436.00','56'),('James Vito','Clerk','4451','23500.00','61'),('Terry George','Fireman','3342','93354.00','32'),('Zaid Dane','Officer','2345','84054.00','19'),('Ernesto Rodriguez','Officer','9091','87006.00','35'),('Josefine White','Fireman','3401','102228.00','26'),('Mario Infante','Officer','3234','84054.00','22'),('Juan Almonte','Fireman','4103','91272.00','50'),('Kevin Smith','Fireman','3450','111492.00','62'),('Abdum Smith','Captain','2234','95484.00','20'),('Juan Gomez','Clerk','9023','23890.00','49')]

И для пользовательского ввода я просто использовал это: name=input("Who are you looking for? :")

Спасибо

Ответы [ 5 ]

0 голосов
/ 19 февраля 2019

Вы должны проверить каждого человека в списке, и если имя пользовательского ввода соответствует первому элементу каждого человека (имени), распечатать всю его информацию.

Кроме того, я бы предложил переименоватьваш список к чему-то кроме «списка», так как это может запутать позже!

while True:
    name = input("Who are you looking for?: ")

    for person in people:
        if person[0] == name:
            print("Name: {},\nRank: {},\nNumber: {},\nSalary: {},\nAge: {}".format(person[0],person[1],person[2],person[3],person[4]))
            break
        else:
            print("This person does not exist. Try Another")

Надеюсь, это поможет, -Nate

0 голосов
/ 19 февраля 2019

У вас есть список кортежей.Ваш пользовательский ввод будет именем, поэтому основной подход будет проверять каждый кортеж на это конкретное имя:

name = input("Who are you looking for? :")
lst = [('Jeffery Medina','Officer','1254','101442.00','23'),('Katrina Peters','Officer','3423','94122.00','45'),('Kim Alan','Captain','6434','101592.00','29'),('Vincente Mendez','Officer','3235','110064.00','32'),('Chris Boalen','Captain','8769','50436.00','56'),('James Vito','Clerk','4451','23500.00','61'),('Terry George','Fireman','3342','93354.00','32'),('Zaid Dane','Officer','2345','84054.00','19'),('Ernesto Rodriguez','Officer','9091','87006.00','35'),('Josefine White','Fireman','3401','102228.00','26'),('Mario Infante','Officer','3234','84054.00','22'),('Juan Almonte','Fireman','4103','91272.00','50'),('Kevin Smith','Fireman','3450','111492.00','62'),('Abdum Smith','Captain','2234','95484.00','20'),('Juan Gomez','Clerk','9023','23890.00','49')]

for x in lst:
    if name in x:
        do_something_with_this_tuple(x)
0 голосов
/ 19 февраля 2019

С пониманием списка:

data = [('Jeffery Medina','Officer','1254','101442.00','23'),('Katrina Peters','Officer','3423','94122.00','45'),('Kim Alan','Captain','6434','101592.00','29'),('Vincente Mendez','Officer','3235','110064.00','32'),('Chris Boalen','Captain','8769','50436.00','56'),('James Vito','Clerk','4451','23500.00','61'),('Terry George','Fireman','3342','93354.00','32'),('Zaid Dane','Officer','2345','84054.00','19'),('Ernesto Rodriguez','Officer','9091','87006.00','35'),('Josefine White','Fireman','3401','102228.00','26'),('Mario Infante','Officer','3234','84054.00','22'),('Juan Almonte','Fireman','4103','91272.00','50'),('Kevin Smith','Fireman','3450','111492.00','62'),('Abdum Smith','Captain','2234','95484.00','20'),('Juan Gomez','Clerk','9023','23890.00','49')]
name = input('Who are you looking for: ')
print([x for x in data if name in x[0]])

Вывод:

Who are you looking for: Jeffery
[('Jeffery Medina', 'Officer', '1254', '101442.00', '23')]
0 голосов
/ 19 февраля 2019
list=[('Jeffery Medina','Officer','1254','101442.00','23'),('Katrina Peters','Officer','3423','94122.00','45'),('Kim Alan','Captain','6434','101592.00','29'),('Vincente Mendez','Officer','3235','110064.00','32'),('Chris Boalen','Captain','8769','50436.00','56'),('James Vito','Clerk','4451','23500.00','61'),('Terry George','Fireman','3342','93354.00','32'),('Zaid Dane','Officer','2345','84054.00','19'),('Ernesto Rodriguez','Officer','9091','87006.00','35'),('Josefine White','Fireman','3401','102228.00','26'),('Mario Infante','Officer','3234','84054.00','22'),('Juan Almonte','Fireman','4103','91272.00','50'),('Kevin Smith','Fireman','3450','111492.00','62'),('Abdum Smith','Captain','2234','95484.00','20'),('Juan Gomez','Clerk','9023','23890.00','49')]

name = input("Who are you looking for? :")
for i in range(len(list)):
    if list[i][0] == name:
        print("Employe Name: {} \nSalary: {} \nAge: {} ".format(name,str(list[i][3]),str(list[i][4])))

Результат:

Кого вы ищете?: Джеффри Медина

Имя сотрудника: Джеффри Медина

Зарплата: 101442,00

Возраст: 23

0 голосов
/ 19 февраля 2019
  1. Не используйте ключевое слово list в качестве имени переменной.

  2. Вы можете выполнить итерацию по длине list и проверить, если name равно любому первому элементу первого индекса.

Следовательно:

lst=[('Jeffery Medina','Officer','1254','101442.00','23'),('Katrina Peters','Officer','3423','94122.00','45'),('Kim Alan','Captain','6434','101592.00','29'),('Vincente Mendez','Officer','3235','110064.00','32'),('Chris Boalen','Captain','8769','50436.00','56'),('James Vito','Clerk','4451','23500.00','61'),('Terry George','Fireman','3342','93354.00','32'),('Zaid Dane','Officer','2345','84054.00','19'),('Ernesto Rodriguez','Officer','9091','87006.00','35'),('Josefine White','Fireman','3401','102228.00','26'),('Mario Infante','Officer','3234','84054.00','22'),('Juan Almonte','Fireman','4103','91272.00','50'),('Kevin Smith','Fireman','3450','111492.00','62'),('Abdum Smith','Captain','2234','95484.00','20'),('Juan Gomez','Clerk','9023','23890.00','49')]

name = input("Who are you looking for? :")

for i in range(len(lst)):
    try:
        if name == lst[i][i]:
            print("Employe Name: {} \nSalary: {} \nAge: {} ".format(lst[i][i], lst[i][i+3], lst[i][i+4]))
    except IndexError:
        pass

ВЫХОД:

Who are you looking for? :Jeffery Medina
Employe Name: Jeffery Medina 
Salary: 101442.00 
Age: 23 

РЕДАКТИРОВАТЬ:

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

for i in range(len(lst)):
    try:
        if re.search(name, lst[i][i], re.IGNORECASE):
            print("Employe Name: {} \nSalary: {} \nAge: {} ".format(lst[i][i], lst[i][i+3], lst[i][i+4]))
    except IndexError:
        pass

ВЫХОД:

Who are you looking for? :jeFFerY mEdinA
Employe Name: Jeffery Medina 
Salary: 101442.00 
Age: 23 
...