2016-06-07 3 views
1

Вопрос сформулирован странно. Трудно сказать это в нескольких словах. Но здесь мы идем: Я написал эту программу, которая запрашивает у пользователя их имя и некоторые данные, связанные с ними. Если вы введете одно и то же имя во второй раз, программа спросит вас, хотите ли вы обновить, в этом случае вы вводите y (для да), и вы можете ввести новые данные для хранения. Когда вы дважды нажмете enter или return, программа перечислит ключи и их значения.Как удалить подсказку при добавлении нового значения в словарь?

Вот код:

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: ') 

Теперь, что я хочу сделать, это уничтожить всю строку я даю в этом коде
if input(name + ' has ' + store[name] + '. Update? ') != 'y':. Я просто хочу, когда я введу имя во второй раз, он покажет мне Item:, и я введу элемент, и когда я дважды удалю enter, и он перечисляет ключи и значения, он покажет мне обновленную пару.

Я просто хочу исключить приглашение попросить пользователя, хотят ли они обновить или нет. Если они вводят имя во второй раз, мы предположим, что это намерение.

Я пробовал возиться с этой строкой кода, где я пробовал
if input('Item: ')!= '', но это не удалось. И куча других вариантов кода. Тогда я понял, что мне нужно устранить этот input. Когда я удалил эту строку, очевидно, что код не работал должным образом. Я знаю, что это крошечное решение, но я часами смотрю на него, и я не могу его получить.

Выходной будет выглядеть так:

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, извините, если мои примеры супергероев вас расстроить.

Вот мой код точно.

enter image description here

+0

так ... удаление 'если вход (имя +«имеет»+ магазин [name] + '. Update?')! = 'y': continue' не сделал то, что вы хотели? –

+0

Правильно. Если я удалю до и включу 'continue', он никогда не предложит мне элемент. Теперь, если я удаляю до, но не включая 'continue', просто' if input (name + 'has + store [name] +'. Update? ')! =' Y ': ', он вернет оба элемента для batman 'batarang' и' kryptonite', когда он должен возвращать только последний. – adhamncheese

+0

Кроме того, когда я удаляю эту строку, опять же, не включая 'continue', я буду отступать от последней строки' store [name] = input ('item:') 'непосредственно под' continue'. – adhamncheese

ответ

1

Просто пропустите if name in store: чек и просто попросить снова пункта, когда имя не является пустым:

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

Это решает! Спасибо! – adhamncheese