Probleme:
- Du
chosen
in der Linie for chosen in books:
überschrieben werden.
- Loop-Aufforderung für mehrere Bücher fügt nur die zuletzt ausgewählte Buch-ID an, wenn y für mehr eingegeben wird.
- 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 .
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