题解 | #自动售货系统#

自动售货系统

http://www.nowcoder.com/practice/cd82dc8a4727404ca5d32fcb487c50bf

python 解法 就按照题目要求一点一点写就好,主要是要有耐心

while True:
    try:
        a = input().split(';')
        coin = 0 #存储余额
        commodity_list = {'A1':[2],'A2':[3],'A3':[4],'A4':[5],'A5':[8],'A6':[6]} #初始化商品字典,列表中为商品单价
        balance_list = {'1':0,'2':0,'5':0,'10':0} #初始化存钱盒
        inita = a[0].split() #初始化的语句,以空格分开字符串
        inita_com = list(map(int,inita[1].split('-'))) #初始化商品部分,按‘-’分开
        commodity_list['A1'].append(inita_com[0]) #六种商品一一初始化他们的初始数量
        commodity_list['A2'].append(inita_com[1])
        commodity_list['A3'].append(inita_com[2])
        commodity_list['A4'].append(inita_com[3])
        commodity_list['A5'].append(inita_com[4])
        commodity_list['A6'].append(inita_com[5])
        inita_bal = list(map(int,inita[2].split('-'))) #初始化存钱盒部分
        balance_list['1'] += inita_bal[0] #四种面额的钱一一初始化
        balance_list['2'] += inita_bal[1]
        balance_list['5'] += inita_bal[2]
        balance_list['10'] += inita_bal[3]
        print('S001:Initialization is successful') #输出初始化成功语句
        for i in range(1,len(a) - 1): #输入的语句一一作出操作,因为输入的最后一天字符是‘;’所以a的最后一项是空,要去掉
            if(a[i][0] == 'p'): #投钱
                input_coin = int(a[i][2:]) #投钱的数目
                coin_all_1_2 = 1 * balance_list['1'] + 2 * balance_list['2'] #1元和2元面额的钱的总额度
                all_com_num = 0 #所有的商品总量
                for key,value in commodity_list.items(): #计算所有商品的总数量
                    all_com_num += value[1]
                if(input_coin != 1) and (input_coin != 2) and (input_coin != 5) and (input_coin != 10): #如果投的钱不为1,2,5,10
                    print('E002:Denomination error')
                elif(input_coin > coin_all_1_2): #投的钱比一元和二元总额度大
                    if(input_coin == 1) or (input_coin == 2): #一元二元不受此限制
                        coin += input_coin #余额加
                        balance_list[str(input_coin)] += 1 #放入对应存钱盒
                        print('S002:Pay success,balance=' + str(coin)) 
                    else:
                        print('E003:Change is not enough, pay fail')
                elif(all_com_num == 0): #商品总数为0
                    print('E005:All the goods sold out')
                else: #否则正常输出
                    coin += input_coin
                    balance_list[str(input_coin)] += 1
                    print('S002:Pay success,balance=' + str(coin))
            if(a[i][0] == 'b'):#买东西
                need_goods = a[i][2:]
                if(need_goods not in commodity_list): #不在商品列表中
                    print('E006:Goods does not exist')
                elif(commodity_list[need_goods][1] == 0): #存量为0
                    print('E007:The goods sold out')
                elif(coin < commodity_list[need_goods][0]): #钱不够
                    print('E008:Lack of balance')
                else: #正常够买
                    commodity_list[need_goods][1] -= 1 #存量减一
                    coin -= commodity_list[need_goods][0] #余额减
                    print('S003:Buy success,balance=' + str(coin))
            if(a[i][0] == 'c'): #退钱
                if(coin == 0):
                    print('E009:Work failure')
                else:
                    need_back = [0,0,0,0] #四张面额应退的数量
                    while coin >= 0: #余额大于0
                        if(coin >= 10) and (balance_list['10'] != 0): #大于10且存钱盒有10元
                            coin -= 10
                            balance_list['10'] -= 1
                            need_back[3] += 1
                        elif(coin >= 5) and (balance_list['5'] != 0):#大于5且存钱盒有5元
                            coin -= 5
                            balance_list['5'] -= 1
                            need_back[2] += 1
                        elif(coin >= 2) and (balance_list['2'] != 0):#大于2且存钱盒有2元
                            coin -= 2
                            balance_list['2'] -= 1
                            need_back[1] += 1
                        elif(coin >= 1) and (balance_list['1'] != 0):#大于1且存钱盒有1元
                            coin -= 1
                            balance_list['1'] -= 1
                            need_back[0] += 1
                        else:#到这里,只有余额为零或者剩余的钱已经无法退回
                            coin = 0 #余额清零
                            print('1 yuan coin number=' + str(need_back[0]))
                            print('2 yuan coin number=' + str(need_back[1]))
                            print('5 yuan coin number=' + str(need_back[2]))
                            print('10 yuan coin number=' + str(need_back[3]))
                            break
            if(a[i][0] == 'q'): #查询
                if(a[i] == 'q 0'): #必须是q 0,q 1,才能查询;q0不合法
                    for key,value in commodity_list.items():
                        print(key + str(value[0]) + str(value[1]))
                elif(a[i] == 'q 1'):
                    for key,value in balance_list.items():
                        print(key + ' yuan coin number=' + str(value))
                else:
                    print('E010:Parameter error')
    except:
        break
华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论

相关推荐

文物君i:感觉简历里经历好丰富,同27届想找实习,之前0经验,现在也找不到
实习简历求拷打
点赞 评论 收藏
分享
2025-12-01 16:35
内蒙古工业大学 Java
上个月实习了7天被开,哎想起来真窝囊,领导叫我去会议室,问我技术栈,当时紧张的,问我有没有做项目啥的,我说没有,有练习,其实我也是做过两个项目的但是,当时紧张的说不出来,就说会java,springboot,我没好好看系统,就说系统是增删改查,他让我回去再看,说熟悉完再看走开发路线还是实施什么的路线,3天后问我,我说这是一个审批系统,其实也不是,是一个检测系统,主要流程是委托&nbsp;&nbsp;受理然后&nbsp;样品管理&nbsp;报告管理&nbsp;审核啥的&nbsp;。然后问我你觉得系统的好处是啥,忘了当时咋说的了,让我回去再熟悉一下。第二周也没安排任务,没有配电脑,然后周二,我当时企业微信没看,和朋友聊天呢,然后他发了任务一个小时之后我才看到,然后我回复的时候是3点半,未读过了一会儿hr给我叫到小黑屋,说觉得不合适,然后让我填离职表。后来想想一开始要是自信点是不是就能配电脑然后开发了。租的房子转租也没租出去,该交房租了,好在当时是月付,没有选择季付,不然哭都没地方。又回到基地了,好久没学了,有时候我也在想为啥我这么消极,这么不自信,哎,面试什么的也挂了好多了。昨天我妈和我打电话说他年前体检就检查出来脸上骨头里面有囊肿,手术很复杂,说要经过鼻子,医生说手术之后容易感染,他老是头疼,我现在在实训基地,离家好远,我爸也有事,我妈说要不拖到我姐放假回去得1月。不知不觉这么多字了,现在是12.1下午4.20,刚面试完胜软,感觉躺平已经成了口头禅了,想离家远一点,但是每个月还是会问家里要生活费,教室和宿舍还是那样,但是不知为何,我总有一种物是人非的感觉,上厕所和接水要去四楼,我们之前的教室就在四楼,路过教室的时候总有一种恍惚的感觉。网上说高敏感是种天赋,我却感觉老是很痛苦,总是能听出一些弦外之音,可能人家也不是那个意思。我也不知道要表达啥了在都是大佬都群里面,默默的看着他们的发言,遇到问题找大佬解决,但是没有利益交换,大佬也会觉得厌烦的。焦虑什么的是能力跟不上欲望,每天一边郁郁寡欢一遍暴饮暴食,总是希望别人能关心一下自己,但自己也不常关心别人。之前一个大佬给我内推,但是我力扣也没刷都不好意思面试,发了两次面试通知我也没面。就到这里吧,毕业设计题目出来了,先学一下黑马的springboot3vue3全栈吧。
_mos_:别的不多说 就你上班聊天摸鱼整整一个小时不看信息我都觉得很抽象了别扯什么自己这那的 我感觉领导确实已经给你很多时间和空间了 自己还是想想有没有真的用心去做 不是什么东西都要别人推着你去干的 总得学会主动一点吧 最后中肯地说一句 卷不了还是别走互联网这条路了 不好意思说话有些直白但希望你可以明白我的意思
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务