项目自动售货机:
学校里的自动售货机只能买一个东西付一次帐,不能同时选几个商品,同时付帐!
写一个程序自动售货机的程序可以实现同时选择商品且能同时付账的程序!
已知商品及商品价格的字典如下:
{'方便面':'4.5','香肠':'2','锅巴':'3','磨片':'3','可乐':'3','雪碧':'3','鸡蛋':'3','蛋卷':'5','派':'4.5'}
要求:
1、定义class来实现。
2、输入要买的商品名及个数且可输入多个商品,返回总价。
3、类要有商品清单的属性,以返回实例所购买的商品名称个数单价及总价
4、每次购买成功后,流水要保存到excel表格。
import openpyxl, datetime
class SaleMachine:
def init(self):
self.sale_goods = {'方便面':'4.5','香肠':'2','锅巴':'3','磨片':'3','可乐':'3','雪碧':'3','鸡蛋':'3','蛋卷':'5','派':'4.5'}
self.buy_dict = {}
self.excel = openpyxl.load_workbook('a.xlsx')
self.buy_goods()
def buy_goods(self):
print("------------欢迎光临------------")
while True:
g = input('请输入想要购买的商品名称:')
n = input('请输入想要购买的数量:')
if g not in self.sale_goods.keys():
print("该商品目前没有货, 买点别的吧~")
continue
try:
new_n = int(n)
if new_n <= 0:
print("该数量不正确哦, 请重新输入~")
continue
except:
print("该数量不正确哦, 请重新输入~")
continue
self.buy_dict[g] = new_n
keep = input('~~~~~~~~~~~还买点别的吗?~~~~~~~~~~~`')
if keep == "否":
print('总价格:', self.add_price())
self.save_excel()
break
def save_excel(self):
wb = self.excel.active
row = wb.max_row
for k, v in self.buy_dict.items():
cell_a = wb["A%d" % (row+1)]
cell_a.value = k
cell_b = wb["B%d" % (row+1)]
cell_b.value = v
cell_c = wb["C%d" % (row+1)]
cell_c.value = datetime.datetime.now()
row += 1
self.excel.save('a.xlsx')
def add_price(self):
all_price = 0
for k, v in self.buy_dict.items():
price = self.sale_goods[k]
all_price = all_price + (float(price) * v)
return all_price
if name == "main":
g = SaleMachine()