1. 程式人生 > >python實現簡單購物車

python實現簡單購物車

#Encoding = UTF-8
'''
    @author:xianyt
    @vertion:python3
    @date:20180723
'''

'''
    21、	模擬實現選購商品
1)	列出所有商品的編號、名稱和價格
2)	選擇多個商品
3)	檢視已經選擇的商品 單價 小計 和 總價
4)	支付(輸入實付金額、折扣,輸出購物清單、總計、實付、找零)

實現流程和邏輯::
1)	建立巢狀list,儲存若干商品的編號、名稱和價格
2)	提示選擇項 1-》查詢商品, 2-》結算, 3-》退出
3)	查詢商品功能:
i)	顯示商品列表
ii)	提示 1-》選購商品  2-》加入購物車 2-》參考購物車 3-》返回上一級
iii)	選擇選購商品,提示輸入商品編號,新增成功,進入ii)
4)	結算功能:
i)	顯示選購商品列表
ii)	輸入實付金額和折扣
iii)	計算結果
5)	退出功能:退出程式

'''
import sys
'''
    實現顯示所有商品列表
'''
def viewGoodList():
    print("序號\t商品編號\t商品名稱\t單價")
    index = 1;
    for goodList in goods:
        print(index, "\t", goodList[0], '\t', goodList[1], '\t', goodList[2])
        index += 1
'''
    查詢buyNumber在商品列表中的位置,不存在返回-1
'''
def findGoodNum(buyNumber):
    index = 0
    for good in goods:
        if good[0] == buyNumber:
            return index
        index += 1;
    return  -1


'''
    加入購物車,需要輸入引數(商品編號,數量)
'''
def buyGood():
    while True:
        buyNumber = input("請輸入想要購買商品的編號")
        if findGoodNum(buyNumber) == -1:
            print("請輸入正確的商品編號!")
            continue
        while True:  #判斷輸入數量是否是數值型資料
            buyCount = input("請輸入商品的數量")
            if buyCount.isdigit():
                break
            else:
                print("請輸入正確的數字型資料!")
        buyCount = int(buyCount)
        if shopCar.__contains__(buyNumber):
            shopCar[buyNumber] = shopCar.get(buyNumber) + buyCount
        else:
            shopCar.update({buyNumber:buyCount})
        print("********已成功更新購物車***********")
        conti = input("是否繼續加入商品,退出按f/F鍵,按任意鍵繼續")
        if conti == 'f' or conti == 'F' :
            break;
'''
    檢視購物車,列印輸出shopCar裡的商品編號及數量
'''
def lookGood():
    print("序號\t\t商品編號\t\t商品名稱\t\t單價\t\t數量")
    index = 1;
    TempGoods = []
    print(shopCar.values())
    for shopCarValue in shopCar.keys():
        TempGoods = goods[findGoodNum(shopCarValue)]
        print(index, '\t\t', shopCarValue, '\t\t', TempGoods[1], '\t\t', TempGoods[2], '\t\t', shopCar.get(shopCarValue))
        index += 1

'''
    實現查詢商品
'''
def searchGoods():
    while True:
        print('查詢選單,請輸入選擇項:1)查詢商品, 2)新增購物車, 3)檢視購物車, 4)返回上一級')
        schoice = input()
        if schoice == '1':
            viewGoodList();
        elif schoice == '2':
            buyGood()
        elif  schoice == '3':
            lookGood()
        elif schoice == '4':
            break
        else:
            print('請輸入正確的選項!')

'''
    結算商品
'''
def account():
    if not shopCar:
        print("購物車為空,快去商城逛逛吧")
        return -1;
    totalPrice = 0;
    lookGood();
    for shopCarValue in shopCar.keys():
        tempGoods = goods[findGoodNum(shopCarValue)]
        totalPrice += tempGoods[2] * shopCar.get(shopCarValue)
    print("\n總計:", round(totalPrice,2));
    while True:
        money = input("請輸入錄入金額:")
        if not money.isdigit():
            print("請輸入數字")
        elif float(money) < totalPrice:
            print("支付不足!")
        else:
            break
    money = float(money)
    while True:
        dicount = input("請輸入折扣")
        if dicount == 0 or not dicount.isdigit():
            print("折扣輸入錯誤")
        else:
            break
    dicount = float(dicount)/100
    print('找零:', round(money-totalPrice*dicount,2))


if __name__ == '__main__':   #主函式
    goods = [
        ['001', 'apple', 5],
        ['002', 'banan', 2]
    ]
    shopCar = {}  # 利用字典在建立購物車
    while True:
        print("歡迎進入xianyt商城主選單,請輸入選擇項:1)進入選購選單, 2)結算, 3)退出 ")
        mychioce = input()
        if mychioce == '1':
            searchGoods()
        elif mychioce == '2':
            account()
        elif mychioce == '3':
            sys.exit(-1)
        else:
            print("請重新輸入!")

       新萌寫程式碼,如果還有什麼不足的地方,歡迎指出