python: позволяет пользователю выбирать несколько элементов из списка - PullRequest
0 голосов
/ 02 августа 2020

Здесь новичок:)

Без использования каких-либо графических интерфейсов, таких как tkinter, есть ли хороший способ позволить пользователю выбрать несколько элементов из списка и показать им, какие из них они выбрали?

Если у меня есть my_list с 10 элементами, и я показываю их на экране, я хочу, чтобы пользователь мог выбрать, какой из этих элементов он хочет, а затем создать новый список с выбранными элементами.

Edit: Я думал об этом больше и думал, что могу показать список элементов и выделить выбранные варианты другим цветом. Пользователь может использовать пробел, чтобы выбрать несколько вариантов (если кто-то использовал утилиту saml2 aws, мои мысли аналогичны). Я не знаю, есть ли в пакете Python что-то подобное?

Ответы [ 3 ]

0 голосов
/ 02 августа 2020

Я использовал словарь, чтобы дать более подходящий пример, вы можете настроить здесь и сообщить мне, если какие-либо ошибки или изменения должны быть сделаны. Это всего лишь один из способов сделать это, есть много способов сделать это: D

my_dictionary = {1: '1. Apple', 2: '2. Banana',
                 3: '3. Cocktail', 4: '4. Dolphin', 5: '5. Elephant'}

print('Choose an item by the number')
for value in my_dictionary.values():
    print(value)

print('To quit, enter 6')


new_list = []

while True:
    choice = int(input('Enter your choice: '))

    if choice == 1:
        # some indexing going on to choose just the item and not the numbers
        item = list(my_dictionary.values())[0][3:]
        new_list.append(item)
    
    elif choice == 2:
        # some indexing going on to choose just the item and not the numbers
        item = list(my_dictionary.values())[1][3:]
        new_list.append(item)
    
    elif choice == 3:
        # some indexing going on to choose just the item and not the numbers
        item = list(my_dictionary.values())[2][3:]
        new_list.append(item)
    
    elif choice == 4:
        # some indexing going on to choose just the item and not the numbers
        item = list(my_dictionary.values())[3][3:]
        new_list.append(item)
    
    elif choice == 5:
        # some indexing going on to choose just the item and not the numbers
        item = list(my_dictionary.values())[4][3:]
        new_list.append(item)
    
    elif choice == 6:  # to break out of the loop
        break


print(new_list)

Ура

0 голосов
/ 08 августа 2020

Не знаю, поможет ли это вам, но я попытался сделать его минимальным и чистым. Я просто разделяю запятую пользователей и проверяю, есть ли каждый элемент в данном списке. Если да, то он будет добавлен в другой список. Убедитесь, что когда он запрашивает ваш ввод, вы делаете что-то вроде: 1,2,3 Тогда он будет правильно разделен запятой. Код:

list1 = ['1','2','3']
chosen = []
ask = (input(': '))
ask = ask.split(',')
for asks in ask:
    if asks in list1:
        chosen.append(asks)
print(chosen)
0 голосов
/ 02 августа 2020

Было бы более эффективно использовать словари, но вы также можете использовать обычный список.

Если я правильно понимаю, у вас есть список, и вы будете предлагать пользователям выбирать элементы из этого списка. тогда вы хотите что-то сделать с выбранными элементами из списка.

Вот минимальный пример:

l = ['item1', 'item2', 'item3']
print(l)
n = int(input('number of items to choose?'))
chosed_items = []
while n > 0:
    chosed = input('choose item: ')
    if chosed in l and chosed not in chosed_items:
        chosed_items.append(chosed)
    n = n-1

# do something with the chosen items
print(chosed_items)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...