2017-02-12 7 views
1

Ich versuche einen Code zu schreiben, der verschiedene Benutzer nach ihren Traumurlaubszielen fragt. Es ist ein Wörterbuch, in dem der Schlüssel der Name des Abstimmungsempfängers ist und der Wert eine Liste ist, die "Träume" genannt wird. Ich möchte eine neue Variable erstellen, wenn ein neuer Schlüssel erstellt wird. Was ist der beste Weg, das zu tun?Wie erstelle ich eine neue Variable für eine Liste jedes Mal, wenn ein neuer Schlüssel eingeführt wird?

vacation_poll = { } 

dream_vacations = [ ] 

while True: 

    name = input('What is your name?: ') 
    while True: 
     dream_vacation = input('Where would you like to visit?: ') 

     repeat = input('Is there anywhere else you like to visit? (Yes/No): ') 
     dream_vacations.append(dream_vacation) 

     if repeat.lower() == 'no': 
      vacation_poll[name] = dream_vacations 
      break 

    new_user_prompt = input('Is there anyone else who would like to take the poll? (Yes/No): ') 

    if new_user_prompt.lower() == 'no': 
     break 

Mein aktueller Code funktioniert nicht, da jeder erstellte Schlüssel die gleichen Werte hat.

Antwort

1

versuchen

vacation_poll = { } 
dream_vacations = [ ] 
while True: 

in

vacation_poll = { } 
while True: 
    dream_vacations = [ ] 

Ändern der Grund, sie alle den gleichen Traum Urlaub haben, liegt daran, dass, wenn Sie dream_vacations zuweisen, werden Sie die gleiche Liste verweisen. wenn Sie dream_vacations = [ ] am Anfang einer neuen Person, dream_vacations wird bei einer entirley unabhängigen Liste zeigen und so keine seltsamen Vervielfältigungen

+0

Es funktioniert! Vielen Dank! – iluv3142

+0

@ iluv3142 Bitte markieren Sie die Frage als beantwortet (klicken Sie auf das Häkchen neben Ihrer Lieblingsantwort) Dies hilft Menschen in der Zukunft mit einem ähnlichen Problem – Nullman

1

Sie brauchen keine neue Variable erstellen (und ich kann von keine Situation denken, in was du so dynamisch willst). Stattdessen einfach leer dream_vacations jedes Mal, das heißt:

new_user_prompt = input('Is there anyone else who would like to take the poll? (Yes/No): ') 

dream_vacations = [] 

if new_user_prompt.lower() == 'no': 
    break 

Dies setzt es auf eine leere Liste, so ist es jetzt leer und arbeitet für den nächsten Benutzer.

Verwandte Themen