1 总体说明
考生需要模拟实现一个简单的自动售货系统,实现投币、购买商品、退币、查询库存商品及存钱盒信息的功能。
系统初始化时自动售货机中商品为6种商品,商品的单价参见1.1规格说明,存钱盒内放置1元、2元、5元、10元钱币,商品数量和钱币张数通过初始化命令设置,参见2.1 系统初始化。
1.1规格说明
import sys
while True:
try:
pricegoods={'A1':2,'A2':3,'A3':4,'A4':5,'A5':8,'A6':6}
pricemoney=[1,2,5,10]
numgoods={'A1':0,'A2':0,'A3':0,'A4':0,'A5':0,'A6':0}
nummoney=[0]*4
balance=0
def printcoin(number):
print('1 yuan coin number=%s'%coinback[0])
print('2 yuan coin number=%s'%coinback[1])
print('5 yuan coin number=%s'%coinback[2])
print('10 yuan coin number=%s'%coinback[3])
def printgoods(number):
number=sorted(numgoods,key=lambda a:a[1],reverse=True)
for i in range(6):
print (numgoods[i][0]+' '+str(pricegoods[numgoods[i][0]])+' '+str(numgoods[i][0]))
line=raw_input().split(';')[:-1]
for i in line:
func=i.split()
if func[0]=='r':
goods=func[1].split('-')
money=func[2].split('-')
for i in range(6):
numgoods['A'+str(i+1)]+=int(goods[i])
for i in range(4):
nummoney[i]+=int(money[i])
print('S001:Initialization is successful')
elif func[0]=='p':
num=int(func[1])
if num not in pricemoney:
print('E002:Denomination error')
elif num in [5,10] and (nummoney[0]+nummoney[1]*2)<num:
print('E003:Change is not enough, pay fail')
elif num==10 and balance>10:
print('E004:Pay the balance is beyond the scope biggest')
elif numgoods['A1']==numgoods['A2']==numgoods['A3']==numgoods['A4']==numgoods['A5']==numgoods['A6']==0:
print('E005:All the goods sold out')
else:
nummoney[pricemoney.index(num)]+=1
balance+=num
print('S002:Pay success,balance=%s'%balance)
elif func[0]=='b':
good=func[1]
if good not in ['A1','A2','A3','A4','A5','A6']:
print('E006:Goods does not exist')
elif numgoods[good]==0:
print('E007:The goods sold out')
elif balance<pricegoods[good]:
print('E008:Lack of balance')
else:
balance-=pricegoods[good]
numgoods[good]-=1
print('S003:Buy success,balance=%s'%balance)
elif func[0]=='c':
if balance==0:
sys.stdout.write('E009:Work failure')
else:
coinback=[0]*4
for i in range(-1,-5,-1):
coinback[i]+=min(int(balance/pricemoney[i]),nummoney[i])
balance-=pricemoney[i]*coinback[i]
nummoney[i]-=coinback[i]
printcoin(coinback)
balance=0
elif func[0]=='q':
if func[1]=='0':
pricegoods(numgoods)
elif func[1]=='1':
printcoin(nummoney)
else:
sys.stdout.write('E010:Parameter error')
except:
break
1.print(’ 字符串’)
2.sys.stdout.write(’ ‘+’\n’)=print(’ ')
3.根据字典中值的大小,对字典中的项排序
sorted(d.items(), key=lambda x: x[1]) 中 d.items() 为待排序的对象;key=lambda x: x[1] 为对前面的对象中的第二维数据(即value)的值进行排序。 key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。
维数以字符串来表示
将列表中的age由大到小排序
alist = [{‘name’:‘a’,‘age’:20},{‘name’:‘b’,‘age’:30},{‘name’:‘c’,‘age’:25}]
b=sorted(alist,key=lambda x:x[‘age’],reverse=True)