模擬實現商品加購物車

 簡易版購物車:

1) 商品有列表存儲,每個商品的屬性用字典存儲

2)用戶輸入商品編號,以及商品數量,這些商品被加入購物車

3)相同的商品,在購物車進行合併,數量相加

3)用戶退出挑選商品,自動進行結賬

4)結賬之後,商品列表中對應商品的數量減少,同時商品列表輸出在控制檯上

# -*- coding: utf-8 -*- 
# @File : 簡易購物車.py 
# 描述 : 使用字典,列表等簡單模擬商品加入購物車
# @Time : 2020/5/28 19:05 
# @Author : 崔
# @versions : 1.0

# 列表存放商品,每個商品的屬性用字典存儲

goods = [{'編號': 'B686', '名稱': '聯想電腦', '價格': 6000, '數量': 300},
         {'編號': 'B903', '名稱': '外星人電腦', '價格': 12000, '數量': 100},
         {'編號': 'B987', '名稱': '惠普電腦', '價格': 4599, '數量': 1000},
         {'編號': 'B990', '名稱': '小米筆記本', '價格': 5000, '數量': 239}]
carts = []  # 購物車
# 展示商品列表
while True:
    print("{:<10}\t{:<10}\t{:>6}\t{:>10}".format('編號', '名稱', '價格', '數量'))
    for good in goods:
        print("{:<10}\t{:<10}\t{:<10}\t{:<10}".format(good['編號'], good['名稱'], good['價格'], good['數量']))
    Id = input("請輸入Id選擇商品,輸入0退出:")
    # 退出
    if Id == '0':
        break

    # 如果輸入的編號不在商品列表裏,重新輸入
    for good in goods:
        if Id == good['編號']:
            stock = good['數量']  # 顯示當前選擇商品的數量
            break
    else:
        print("你輸入的商品不存在,請重新選擇商品")
        continue  # 重新開始下一次循環

    if stock == 0:
        print("商品已售空,請等待商品上架,重新選擇")
        continue
    while 1:  # 死循環,直到輸入正確的數量
        num = int(input("請輸入你選擇的商品的數量:"))
        if num < 0 or num > stock:
            print("你輸入的數量不合法")
            continue
        else:
            break

    for good in carts:
        if Id == good['編號']:
            good['數量'] += num
            break
    else:
        for good in goods:  # 用於遍歷對應編號的商品名稱,存到購物車中
            if good['編號'] == Id:
                d1 = {'編號': Id, '名稱': good['名稱'], '數量': num}
        carts.append(d1)

# 結賬 價格*數量之和
money = 0  # 總價初始爲0

# 雙重循環,用於查詢價格,計算總價
for wares in carts:
    for good in goods:
        if wares['編號'] == good['編號']:
            money += good['價格'] * wares['數量']
            good['數量'] -= wares['數量']
            break
print(carts)  # 輸出購物車的商品
print(f"你需要支付:{money}元錢")  # 需要支付的錢
# 輸出當前商品列表中,商品的數量
print("{:<10}\t{:<10}\t{:>6}\t{:>10}".format('編號', '名稱', '價格', '數量'))
for good in goods:
    print("{:<10}\t{:<10}\t{:<10}\t{:<10}".format(good['編號'], good['名稱'], good['價格'], good['數量']))

 

 測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章