2016-06-07 15 views
1

Frage ist seltsam formuliert. Es ist schwer, es in ein paar Worten zu formulieren. Aber hier gehen wir: Ich habe dieses Programm geschrieben, das einen Benutzer nach ihrem Namen und einigen damit verbundenen Daten fragt. Wenn Sie denselben Namen ein zweites Mal eingeben, fragt das Programm Sie, ob Sie aktualisieren möchten. In diesem Fall geben Sie y (für ja) ein und Sie können die neuen Daten eingeben, die gespeichert werden sollen. Wenn Sie zweimal enter oder return drücken, listet das Programm die Schlüssel und ihre Werte auf. HierWie kann die Eingabeaufforderung beim Hinzufügen eines neuen Werts zum Wörterbuch gelöscht werden?

ist der Code:

def thing(): 

    store = {} 

    while True: 
     name = input('Perp: ') 
     if not name: 
      for k, v in store.items(): 
       print('Perp' + k + ' has a ' + v) 
      break 

     if name in store: 

      if input(name + ' has ' + store[name] + '. Update? ') != 'y': 
       continue 

     store[name] = input('item: ') 

Nun, was ich tun möchte, ist die ganze prompt beseitigen ich in diesem Code geben
if input(name + ' has ' + store[name] + '. Update? ') != 'y':. Ich möchte nur, wenn ich den Namen ein zweites Mal eingeben, wird es mir zeigen Item: und ich gebe das Element und wenn ich zweimal drücken enter und es listet die Schlüssel und die Werte, wird es mir das aktualisierte Paar zeigen.

Ich möchte nur die Aufforderung, den Benutzer zu fragen, ob sie aktualisieren möchten oder nicht. Wenn sie den Namen ein zweites Mal eingeben, nehmen wir an, dass dies die Absicht ist.

Ich habe versucht, mit dieser Codezeile viel, wo ich versuchte
if input('Item: ')!= '' versucht, aber das ist fehlgeschlagen. Und eine Reihe anderer Variationen des Codes. Dann erkannte ich, dass ich diese input in gewisser Weise beseitigen muss. Als ich diese Zeile löschte, funktionierte der Code offensichtlich nicht so wie er sollte. Ich weiß genau, dass dies ein winziger Fehler ist, aber ich habe es stundenlang angeguckt und ich verstehe es nicht.

würde eine Ausgabe wie folgt sein:

Perp: Batman
Item: Batarang
Perp: Superman
Item: Heat Vision
Perp: Syndrome
Item: Stupidity
Perp: Batman
Item: Kryptonite
Perp:
Batman has Kryptonite
Superman has Heat Vision
Syndrome has Stupidity

PS, sorry, wenn mein Superheld Beispiele, die Sie aufregen.

Hier ist mein Code genau.

enter image description here

+0

so ... Entfernen der 'wenn der Eingang (Name + 'hat' + store [name] + '. Update?')! = 'y': continue 'hat nicht getan, was Sie wollten? –

+0

Korrigieren. Wenn ich bis einschließlich "Fortfahren" entferne, wird es mich nie nach dem Gegenstand fragen. Nun, wenn ich "continue" wegnehme, aber nicht einfach, wenn "input (name + '+' store [name] + '. Update?')! = 'Y':' hat, werden beide Items zurückgegeben für Batman 'Batarang' und' Kryptonite', wenn es nur die letzte zurückgeben sollte. – adhamncheese

+0

Auch, wenn ich diese Zeile lösche, wiederum ohne 'continue', werde ich die letzte Zeile' store [name] = input ('item:') 'einrücken, um direkt unter' continue' zu ​​sein. – adhamncheese

Antwort

1

einfach die if name in store: Check überspringen und nur für den Artikel noch einmal fragen, wenn der Name nicht leer ist:

def thing(): 

    store = {} 

    while True: 
     name = input('Perp: ') 
     if not name: 
      for k, v in store.items(): 
       print('Perp' + k + ' has a ' + v) 
      break 
     else:  
      store[name] = input('item: ') 
+0

Das löst es! Vielen Dank! – adhamncheese