题解 | #自动售货系统#
自动售货系统
https://www.nowcoder.com/practice/cd82dc8a4727404ca5d32fcb487c50bf
goods = {'A1':0,'A2':0,'A3':0,'A4':0,'A5':0,'A6':0}
money = {1:0,2:0,5:0,10:0}
price = {'A1':2,'A2':3,'A3':4,'A4':5,'A5':8,'A6':6}
yu = 0
def find(yu,a=0,b=0,c=0,d=0):
#a,b,c,d = 0,0,0,0
while yu>0:
if yu>=10 and money[10]>0:
d += 1
money[10] -= 1
yu -= 10
elif yu>=5 and money[5]>0:
c += 1
money[5] -= 1
yu -= 5
elif yu>=2 and money[2]>0:
b += 1
money[2] -= 1
yu -= 2
elif yu>=1 and money[1]>0:
a += 1
money[1] -= 1
yu -= 1
elif yu>0 and money[1]==0:
yu -= 1
return a,b,c,d
s = input().split(';')
for i in s[:-1]:
if i[0]=='r':
l1,l2 = list(map(int,i.split()[1].split('-'))),list(map(int,i.split()[2].split('-')))
goods['A1'],goods['A2'],goods['A3'],goods['A4'],goods['A5'],goods['A6'] = l1[0],l1[1],l1[2],l1[3],l1[4],l1[5]
money[1],money[2],money[5],money[10] = l2[0],l2[1],l2[2],l2[3]
print('S001:Initialization is successful')
if i[0]=='p':
if int(i[2:]) not in money:
print('E002:Denomination error')
elif money[1]+money[2]*2<int(i[2:]):
print('E003:Change is not enough, pay fail')
elif goods['A1']==0 and goods['A2']==0 and goods['A3']==0 and goods['A4']==0 and goods['A5']== 0 and goods['A6']==0:
print('E005:All the goods sold out')
else:
yu += int(i[2:])
money[int(i[2:])] += 1
print('S002:Pay success,balance=%d'%yu)
if i[0]=='b':
if i[2:] not in goods:
print('E006:Goods does not exist')
elif goods[i[2:]]==0:
print('E007:The goods sold out')
elif yu<price[i[2:]]:
print('E008:Lack of balance')
else:
yu -= price[i[2:]]
goods[i[2:]] -= 1
print('S003:Buy success,balance=%d'%yu)
if i[0]=='c':
if yu==0:
print('E009:Work failure')
else:
a,b,c,d = find(yu)
yu = 0
print('1 yuan coin number=%d'%a)
print('2 yuan coin number=%d'%b)
print('5 yuan coin number=%d'%c)
print('10 yuan coin number=%d'%d)
if i[0]=='q':
if i[1]!=' ' or i[2:] not in ['0','1']:
print('E010:Parameter error')
else:
if i[2]=='0':
lis = sorted(sorted(goods),key=lambda x:goods[x],reverse=True)
for j in lis:
print(*[j,price[j],goods[j]])
if i[2]=='1':
for j in money:
print('%d yuan coin number=%d'%(j,money[j]))


查看12道真题和解析