2017-07-24 251 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