所以我对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个苹果,则循环将再次询问用户他/她是否想要清除字典。
这有点像银行存款,如果他们的帐户中没有任何资金,他们会清算帐户。
答案 0 :(得分:0)
要在循环中更新,可以尝试类似:
for key in food:
food[key] += int(raw_input('How many %s do you want to add?> ' % key) or 0)
您已经通过将值设置为零来清除字典。
答案 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()
您还应该查看使用try
和except
语句,以确保在使用错误输入时程序不会崩溃。您还应该添加退出命令以退出程序,否则这将永远循环。例如。如果用户输入是"退出"然后有条件通知它和break
。