一、流程設計

二、代碼設計
#coding:utf-8 money = 0 coinChoice = [1,5,10,20,50,100] print u'請注意只接受1,5,10,20,50,100的面值!' #drinking chose drinklist = {'milk':4,'cola':5,'juice':7,'xuebi':6} drinkNum = 0 for key,value in drinklist.items(): drinkNum += 1 print u'飲料編號:%d,飲料名稱:%s,單價:%s元'%(drinkNum,key,value) def putCoin(): while True: coin = input(u'請輸入投幣金額(按q退出):'.encode('gbk')) #print type(coin) #<type 'int'> global money if coin == 'q': print u'投幣結束,余額%d元'%money break else: if coin not in coinChoice: print u'請注意只接受1,5,10,20,50,100的面值!' continue money += coin print u'您本次成功投幣%d元,余額%d元'%(coin,money) return money #buy drinking trans = True while trans: if money == 0: print u'您的余額為零,請投幣' putCoin() else: drinkCode = input(u'請輸入想買的飲料編號(按q退出):'.encode('gbk')) if drinkCode == 'q': print u'購買飲料結束,找零%d元'%money break else: if drinkCode in range(1,len(drinklist)+1): num = 0 for k,v in drinklist.items(): num += 1 if drinkCode == num: print 'drinking name:',k print 'price:',v if money >= v: money -= v #charge if money > 0: print u'您購買的飲料%s花費%s元,按q退出找零%d元,歡迎下次光臨!'%(k,v,money) else: print u'您的余額正好用完,歡迎下次光臨!' trans = False else: print u'抱歉,您的余額不足,請重新開始投幣!' putCoin() else: print u'您輸入的飲料編號不存在,請重新輸入!' continue
三、測試用例執行
1.投幣,正常購買,退出找零

2.投幣,未購買飲料,退出找零

3.余額不足,投幣,未購買飲料,退出找零

4.余額不足,投幣,購買飲料,退出找零

5.余額不足,不投幣,重新選擇購買飲料,余額正好用完

6.投幣金額、飲料編號不合法

四、其他
顯然,現實中飲料機還要考慮庫存夠不夠,零錢夠不夠等問題,市面上的自助飲料機大都是每件商品都有唯一的id,用戶輸入id購買,基本不存在投幣后庫存不足的情況,所以需要給每件商品貼上唯一的飲料編號;零錢呢,我想1元多多益善就可以了吧。
