如何在向字典添加新值时消除提示?

时间:2016-06-07 00:48:04

标签: python-3.x dictionary overwrite

问题措辞奇怪。用几句话来说很难说出来。但是我们走了: 我编写了这个程序,提示用户输入他们的名字和一些与之相关的数据。如果您再次输入相同的名称,程序将询问您是否要更新,在这种情况下,键入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

1 个答案:

答案 0 :(得分: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: ')