2016-06-07 20 views
1

问题措辞怪异。用几句话来说很难。但在这里我们去: 我写了这个程序,提示用户输入他们的名字和一些与他们相关的数据。如果您第二次输入相同的名称,程序会询问您是否要更新,在这种情况下,您输入y(是),并且可以输入要存储的新数据。当您两次点击enterreturn时,程序将列出键和它们的值。如何消除向字典添加新值时的提示?

下面是代码:

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',那么简单地'如果输入(name +'有'+ store [name] +'。Update?')!='y':',它将返回两个项目蝙蝠侠'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