2017-12-11 3 views
0

Ich ziehe eine Textdatei als multidem Array und gebe dem Benutzer die Wahl, eines der Elemente auszuwählen, und es wird in einem anderen Array gespeichert. Im Versuch, herauszufinden, wie der Index der Faust-Array zu finden, mit den Elementen in dem zweitenSuche durch ein Array mit einem anderen Array

Code: https://pastebin.com/xcs3Leb7

Textdatei: https://pastebin.com/kY9wa3q1

I

for chosen in books: 
books.index(chosen[0]) 
versucht habe,

Wenn ich B12 wähle, möchte ich, dass das Ergebnis 0 0 für die Indexnummern

ist
+0

Bitte fügen Sie [MCVE] inline in Ihre Frage ein, nicht über externe Links. Einer ist suchbar und elastisch, um die Verbindung zu verrotten, der andere nicht. – ShadowRanger

Antwort

0

Probleme:

  1. Du chosen in der Linie for chosen in books: überschrieben werden.
  2. Loop-Aufforderung für mehrere Bücher fügt nur die zuletzt ausgewählte Buch-ID an, wenn y für mehr eingegeben wird.
  3. Das Wort select Farben in meinem Editor als ein Modul select existiert. Vielleicht möchten Sie den Namen ändern.

Auswahl() mit dieser Änderung ersetzen.

def choice(): 
    global chosen 
    chosen = [] 

    while True: 
     select = input("Which books would you like? (ID):\n") 
     chosen.append(select) 

     flag = input("Would you like to add more books to your cart? (y/n): ") 
     if flag != 'y': 
      break 
    print(chosen) 

    index = [] 
    for item in chosen: 
     for idx, book in enumerate(books): 
      if item == book[0]: 
       index.append([idx, 0]) 

    print('index:', index) 

Die Indexliste enthält das heißt [[2, 0], ...]

Die 2 ist der Index das Buch in Bücher zu finden. Die 0 ist der Index der Buch-ID. Wenn das Ergebnis nicht genau das ist, was Sie wollen, können Sie alle erforderlichen Änderungen vornehmen.


Das Speichern der Buch-ID bedeutet späteres Suchen. Sie könnten stattdessen den Index des Buches speichern.

dh

def choice(): 
    global chosen 
    chosen = [] 

    while True: 
     select = input("Which books would you like? (ID):\n") 
     # Get the index of the selected book in books. 
     for idx, book in enumerate(books): 
      if select == book[0]: 
       chosen.append(idx) 
       break 

     flag = input("Would you like to add more books to your cart? (y/n): ") 
     if flag != 'y': 
      break 
    print(chosen) 

    # [[0, 0], ...] 
    result = [[idx, 0] for idx in chosen] 
    print(result) 

Diese Funktion gibt den Index des Buches gewählt speichert anstatt die ID des Buches ID wie es bequemer ist, den Index später als die Verwendung von Liste Verständnis zu verwenden zeigt am Ende .

Verwandte Themen