自动售货系统

shopping = {
    'A1':{'name':'A1','price':2,'count':0},
    'A2':{'name':'A2','price':3,'count':0},
    'A3':{'name':'A3','price':4,'count':0},
    'A4':{'name':'A4','price':5,'count':0},
    'A5':{'name':'A5','price':8,'count':0},
    'A6':{'name':'A6','price':6,'count':0}
}

currency = {
    0:{'name':1,'count':0},
    1:{'name':2,'count':5},
    2:{'name':5,'count':5},
    3:{'name':10,'count':0}

}


info = '6-5-4-3-2-1 4-3-2-1'
def initial(info):
    data = []
    li = info.split(' ')
    for i in li[1][0:11:2]:
        data.append(i)
    for j,v in zip(data,shopping):
        shopping[v]['count'] = j
    data = []
    for k in li[2][0:7:2]:
        data.append(k)
    for m,n in zip(data,currency):
        currency[n]['count'] = m
    print(shopping)
    print(currency)
    print('s001:Initialization is succesful')


def buyGoods(arges):
    global surplus
    inshopping = arges.split(' ')
    inshopping = inshopping[1]
    if inshopping in shopping.keys():
        if shopping[inshopping]['count'] != 0:
            if surplus >= shopping[inshopping]['price']:
                surplus = surplus - shopping[inshopping]['price']
                shopping[inshopping]['count'] = shopping[inshopping]['count'] - 1
                print('S003:Buy success,balance=%s' %inshopping)
            else:
                print('E008:Lack of balance')
        else:
            print('E007,The goods sold out')
    else:
        print('E006,Goods does not exsit')


def payCoin(info):
    global surplus
    li = info.split(' ')
    incurrency = int(li[1])
    surplus = incurrency + int(surplus)
    if incurrency in [1,2,5,10]:
        if incurrency < (currency[0]['count']+currency[1]['count']*2):
            if surplus <= 10:
                for i in shopping.values():
                    if i['count'] != 0:
                        break
                else:
                    print('E005:All the goods sold out')
                for i in currency.values():
                    if incurrency == i['name']:
                        i['count'] += 1
                print('S002:Pay success,balance=%d' %incurrency)
            else:
                print('E004:Pay the balance is beyond the scope biggeest')
        else:
            print('E003:Change is not enough,pay fail')
    else:
        print('E002:Denomination error')


def returnCoin():
    global surplus
    print(surplus)
    li =[0,1,2,3]
    if surplus != 0:
        if surplus > 0:
            for i in li[::-1]:
                if surplus >= currency[i]['name']:
                    if int(surplus/currency[i]['name']) <= currency[i]['count'] :
                        print('%d yuan coin number= %d' %(currency[i]['name'] ,int(surplus/currency[i]['name'])))
                        surplus = surplus - (int(surplus/currency[i]['name'])*currency[i]['name'])

                    else:
                        print('%d yuan coin number= %d' %(currency[i]['name'] ,currency[i]['count']))
                        surplus = surplus - (currency[i]['name']*currency[i]['count'])
                else:
                      print('%d yuan coin number= 0' %(currency[i]['name']))
    else:
        print('E009:Work failure')


def my_sort(info):
    choice = info.split()
    if choice[1] == '0':
        li = sorted(shopping.values(),key=lambda v : (v['count'],v['price']),reverse=True)
        for i in li:
            print(list(i.values()))
    else:
        for coin in currency.values():
            print('%d yuan coin number = %d' %(coin['name'],coin['count']))


surplus = 0
def main():

    while True:
        info = input('input')
        if info[0] == 'r':
            initial(info)
        elif info[0] == 'b':
            buyGoods(info)
        elif info[0] == 'p':
            payCoin(info)
        elif info[0] == 'c':
            returnCoin()
        elif info[0] == 'q':
            my_sort(info)
        else:
            exit()

main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值