python: permettre à l'utilisateur de sélectionner plusieurs éléments dans une liste

2020-08-02 python

Débutant ici :)

Sans utiliser d'interface graphique comme tkinter, existe-t-il un bon moyen de permettre à un utilisateur de sélectionner plusieurs éléments dans une liste et de leur montrer lequel (s) ils ont sélectionné (s)?

Si j'ai my_list avec 10 éléments et que je les affiche à l'écran, je veux que l'utilisateur puisse sélectionner lequel de ces éléments il veut et ensuite faire une nouvelle liste avec les éléments choisis.

Edit: J'y réfléchissais davantage et je pensais pouvoir afficher une liste d'articles et mettre en évidence les choix sélectionnés avec une couleur différente. L'utilisateur peut utiliser la barre d'espace pour sélectionner plusieurs choix (si quelqu'un a utilisé l'utilitaire saml2aws, ma pensée est similaire à cela). Je ne sais pas s'il existe un package Python qui a quelque chose de similaire à ça?

Answers

Il serait plus efficace d'utiliser des dictionnaires, mais vous pouvez également utiliser une liste normale.

Si je comprends bien, vous avez une liste et vous inviterez les utilisateurs à choisir des éléments dans cette liste. alors vous voulez faire quelque chose avec les éléments choisis dans la liste.

Voici un exemple minimal:

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)

J'ai utilisé le dictionnaire pour donner un exemple plus approprié, vous pouvez modifier ici et me faire savoir si des erreurs ou des modifications doivent être apportées Ce n'est qu'une façon de le faire, il existe de nombreuses façons de le faire: 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)

À votre santé

Je ne sais pas si c'est quelque chose qui vous aiderait mais j'ai essayé de le rendre assez minimal et propre. En gros, je divise simplement à la virgule des utilisateurs et vérifie si chaque élément est dans une liste donnée. Si tel est le cas, il sera ajouté à une autre liste. Assurez-vous que lorsqu'il vous demande votre contribution, vous faites quelque chose comme: 1,2,3 Ensuite, il se divisera correctement à la virgule. Code:

list1 = ['1','2','3']
chosen = []
ask = (input(': '))
ask = ask.split(',')
for asks in ask:
    if asks in list1:
        chosen.append(asks)
print(chosen)

Related