2017-07-24 58 views
-1

我正在使用Python制作POS系统。我得到了一切运作良好,但现在是时候真正实现它。我想添加一个选项来根据比萨饼和大小获得价格。我认为它需要存储在一个字典和词典的列表中。无论如何,现在我处于困境中,无法想出如何正确解开列表来做到这一点。任何和所有的帮助表示赞赏。Python中的POS定价系统

这里是我正在运行的代码的链接。更容易。 https://gist.github.com/spa1mer/5eba249124d1a237d4adb88395659298

这里是我想出了字典:

pizza_prices = {'El Jefe' : [{'small' : 12.99}, {'medium' : 13.99}, {'large' 
: 15.99}], 'OMV' : [{'small' : 13.99}, {'medium' : 14.99}, {'large' : 
16.99}], 'Dirty Hipster' : [{'small' : 14.99}, {'medium' : 15.99}, {'large' 
: 17.99}],} 

在我的理论,我知道它需要在某处这里去的总数。

enter image description here

+3

邮政代码块,而不是一个截图代码块,也不是代码的链接。 SO已经为此格式化了。 (也许看到[MCVE]?) – Peri461

+4

我可能只是做一个“披萨”类,而不是一个列表字典。这似乎更容易实施,并将有助于未来的问题/可读性 – user3400223

+0

@ peri461有一个链接 –

回答

0

这个数据结构可以显著改善,但让我试试你有什么工作。

pizza_prices = { 
    'El Jefe' : [{'small' : 12.99}, {'medium' : 13.99}, {'large' : 15.99}], 
    'OMV' : [{'small' : 13.99}, {'medium' : 14.99}, {'large' : 16.99}], 
    'Dirty Hipster' : [{'small' : 14.99}, {'medium' : 15.99}, {'large' : 17.99}] 
} 

def get_price(name, size): 
    sizes = pizza_prices[name] 
    size_dict = list(filter(lambda s: size in s, sizes))[0] 
    return size_dict[size] 

这第一次用匹萨的名字抓取列表。然后它将列表过滤到只包含比萨饼大小的字典中,最后返回它的价格。

最后请注意,你的字典可以有一个以上的条目:

{'small': 12.99, 'medium': 13.99, 'large': 15.99} 

这至少把你的方法提取到:

def get_price(name, size): 
    return pizza_prices[name][size] 
+0

上试试这个问题修正了这个例子中我所有的愚蠢错误。 – Peri461