在Python中更新和清除字典

时间:2012-12-18 22:41:39

标签: python dictionary

所以我对Python中的词典有疑问。 我想创建一个字典,其中将提示用户2个选项;更新字典或清除字典。 让我先向您展示我的代码:

def myStuff():
    food = {'Apple': 0, 'Banana': 0, 'Grapes': 0}
    choice = raw_input('Please pick an option:\n1) Update number of food I have\n2) Clear all\n>>')
    if choice == str(1):
        apple = int(raw_input('How many apples do you want to add?\n>>'))
        banana = int(raw_input('How many bananas do you want to add?\n>>'))
        grapes = int(raw_input('How many grapes do you want to add?\n>>'))
        print 'Updating...'
        food['Apple'] = apple
        food['Banana'] = banana
        food['Grapes'] = grapes
        print  food
    elif choice == str(2):
        food['Apple'] = 0
        food['Banana'] = 0
        food['Grapes'] = 0
        print food
    else:
        return False

myStuff()

现在我想补充一下:

1.用户持续更新字典的能力(这意味着如果有人输入10个苹果,字典将存储10个苹果,并且将再次提示用户输入他想要输入的苹果数量以进行更新词典)。 我真的不确定如何实现循环。

2,用户在更新后清除字典的能力。例如:如果有人输入10个苹果,则循环将再次询问用户他/她是否想要清除字典。

这有点像银行存款,如果他们的帐户中没有任何资金,他们会清算帐户。

3 个答案:

答案 0 :(得分:0)

  1. 要在循环中更新,可以尝试类似:

    for key in food:
        food[key] += int(raw_input('How many %s do you want to add?> ' % key) or 0)
    
  2. 您已经通过将值设置为零来清除字典。

答案 1 :(得分:0)

如果我理解正确 - 你想反复问这个问题吗?在这种情况下,您需要做的只是放置while True:并缩进要重复的代码块,它将永远循环。您可能希望从raw_input(仅在Python 3中input)到elif之后 - 或者,如果您使food成为全局变量(这样每次调用myStuff()时都不会重新初始化为0,你可以这样做:

while True:
  myStuff()

答案 2 :(得分:0)

通过你正在做的事情,创建自己的类可能会更好。对于您希望执行的所有不同操作,您还应该具有不同的功能。即。更新,清除,添加

class Fruit:
    Apple = 0
    Banana = 0
    Grape = 0

    def __repr__(self):
         return "You have {self.Apple} apples, {self.Banana} bananas, and {self.Grape} grapes".format(**locals())

    def update(self):
       while 1:
         choice = raw_input('Please pick an option:\n1) Update number of food I have\n2) Clear all\n>>')
         if (int(choice) == 1):
            self.Add()
         elif (int(choice) == 2):
            self.Clear()
         else:
             print "Input not valid"

    def Add(self):
       self.Apple += int(raw_input('How many apples do you want to add?\n>>'))
       self.Banana += int(raw_input('How many bananas do you want to add?\n>>'))
       self.Grape += int(raw_input('How many grapes do you want to add?\n>>'))
       print self

    def Clear(self):
       self.Apple = 0
       self.Banana = 0
       self.Grape = 0
       print self

if __name__ == "__main__":
    fruit = Fruit()
    fruit.update()         

您还应该查看使用tryexcept语句,以确保在使用错误输入时程序不会崩溃。您还应该添加退出命令以退出程序,否则这将永远循环。例如。如果用户输入是"退出"然后有条件通知它和break