Пользовательский ввод из нумерованного списка и возвращает список - PullRequest
1 голос
/ 29 апреля 2019

У меня есть эта программа, где она читает и отображает список, разделенный запятыми. У меня также есть каждый список нумеруется. Я прошу пользователя выбрать номер из этого списка. Из числа, которое они выбрали, я пытаюсь вернуть фактическое значение списка, которое идет с ним. У меня возникли проблемы с возвратом только списка значений по некоторым причинам.

Так что, если бы я выбрал «2» (целое число) в качестве входных данных, он должен вернуть клиентов.

Вот мой код:

list1 = ['ID', 'Customers', 'Employees', 'Orders']

def display(list1):
    counter = 0
    record = []
    for tables in list1:
        counter += 1
        record.append(tables)
        print("%s. %s" % (counter, tables))
    return record

def get_list(record):
    print("\nPick a number:")
    choose = input()
    choose = int(choose)

    x = []
    if choose in record:
        x.append(record)
        print(x)

record = display(list1)
get_list(record)

Ответы [ 5 ]

2 голосов
/ 29 апреля 2019

Вы можете использовать dict вместо.

list1 = ['ID', 'Customers', 'Employees', 'Orders']

def display(list1):
    counter = 0
    record = {}
    for tables in list1:
        counter += 1
        record[counter] = tables
        print("%s. %s" % (counter, tables))
    return record

def get_list(record):
    print("\nPick a number:")
    choose = input()
    choose = int(choose)

    if choose in record:        
        print(record[choose])

record = display(list1)
get_list(record)

Выход:

1. ID
2. Customers
3. Employees
4. Orders

Pick a number:
2
Customers

И ваша record переменная будет выглядеть так:

{1: 'ID', 2: 'Customers', 3: 'Employees', 4: 'Orders'}
1 голос
/ 29 апреля 2019

В Python индексирование списка начиналось с 0, для получения необходимого результата необходимо вычесть входное значение на 1.

    list1 = ['ID', 'Customers', 'Employees', 'Orders']

    def display(list1):
        counter = 0
        record = []
        for tables in list1:
            counter += 1
            record.append(tables)
            print("%s. %s" % (counter, tables))
        return record

    def get_list(record):
        print("\nPick a number:")
        choose = input()
        choose = int(choose)
        print(record[choose - 1])    

    record = display(list1)
    get_list(record)

выход

  1. ID
  2. Пользователи
  3. Сотрудники
  4. Заказы

Выберите номер: 2 Клиенты

1 голос
/ 29 апреля 2019

Вы можете сделать это с помощью одной функции, см. Код ниже:

list1 = ['ID', 'Customers', 'Employees', 'Orders']



def display(list1):
    maxnum = len(list1)
    print("\nPick a number from 1 to %s:"%(maxnum+1))
    choose = input()
    choose = int(choose)
    if choose > maxnum:
        print("enter number less than %s"%(maxnum+1))
        return
    choose = choose-1

    print (list1[choose])

display(list1)
1 голос
/ 29 апреля 2019

Вы просто получаете доступ к индексу списка, введенному пользователем

list1 = ['ID', 'Customers', 'Employees', 'Orders']

def display(list1):
    counter = 0
    record = []
    for tables in list1:
        counter += 1
        record.append(tables)
        print("%s. %s" % (counter, tables))
    return record

def get_list(record):
    print("\nPick a number:")
    choose = input()
    choose = int(choose)
    print(record[choose-1])

record = display(list1)
get_list(record)
1 голос
/ 29 апреля 2019

Вам необходимо использовать индекс choose, чтобы выбрать элемент из клавиши record с помощью
print(record[int(choose)-1])

Таким образом, код изменится на

list1 = ['ID', 'Customers', 'Employees', 'Orders']

def display(list1):
    counter = 0
    record = []
    for tables in list1:
        counter += 1
        record.append(tables)
        print("%s. %s" % (counter, tables))
    return record

def get_list(record):
    print("\nPick a number:")
    choose = input()
    choice = int(choose)-1
    print(record[choice])

record = display(list1)
get_list(record)

Вы также можете упростить свой код следующим образом

li = ['ID', 'Customers', 'Employees', 'Orders']

def display(li):
    #Iterate through the list using enumerate and print
    for idx, tables in enumerate(li):
        print("%s. %s" % (idx+1, tables))

def get_list(li):
    choose = int(input("\nPick a number:"))-1
    #If choose is not a valid index in list, print error and return empty string
    if choose < 0 or choose > (len(li)-1):
        print('Invalid Choice')
        return ''
    #Else return chosen string
    return li[choose]

display(li)
print(get_list(li))

Выход будет тогда

1. ID
2. Customers
3. Employees
4. Orders

Pick a number:
3
Employees

1. ID
2. Customers
3. Employees
4. Orders

Pick a number:0
Invalid Choice
...