西窗晓岩
我来不及认真地年轻,待明白过来时,只能选择认真地老去。

导航

 

1、购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
# 商品列表
products = [["iphone 7", 6000], ["kindle 2", 800], ["mi 6", 1200], ["huawei route", 75]]
# 购物车商品列表初始
choice_product = []
# 输入工资
salary = int(input("your salary is "))
# 初始化余额
balance = salary
while True:
    for i in products:
        print("%d、%s price is ¥%d"%((products.index(i)+1), i[0], i[1]))
    print("choice 0 exit")
    p_index = int(input("please choice:"))
    if p_index < 0 or p_index > len(products):  # 输入不是商品索引
        print("error index, please choice:")
        continue
    elif p_index == 0: # 如果输入0,则退出
        break
    else:
        if balance - products[p_index - 1][1] < 0: # 判断商品余额是否可购买所选商品
            print("your balance is not enought! please choice other")
            continue
        else:
            choice_product.append(products[p_index - 1]) # 加入购买列表
            balance -= products[p_index - 1][1] # 账号余额减去商品价格
            print("your balance is %d" % balance)
            continue
# 退出时显示已经购买商品,及账户余额
for i in choice_product:
    print("%d、%s price is ¥%d" % ((choice_product.index(i) + 1), i[0], i[1]))
print("your balance is ¥%d" % balance)

 增强版购物车:

用户入口:
1.商品信息存在文件里
2.已购商品,余额记录。
商家入口:
1.可以添加商品,修改商品价格

用户接口:shopplus.py

# 获取商品列表
products = []
with open("products", "r") as f:
    for line in f:
        if line != "\n":
            products.append([line.strip().split(",")[0], int(line.strip().split(",")[1])])
# 购物车商品列表初始
choice_product = []
# 输入工资
salary = int(input("your salary is "))
with open("balance") as f:
    if f.readline().strip().isdecimal():
        balance = f.readline().strip()
    else:
        balance = 0
# 初始化余额
balance = salary + int(balance)
while True:
    for i in products:
        print("%d、%s price is ¥%d" % ((products.index(i)+1), i[0], i[1]))
    print("choice 0 exit")
    p_index = int(input("please choice:"))
    if p_index < 0 or p_index > len(products):  # 输入不是商品索引
        print("error index, please choice:")
        continue
    elif p_index == 0: # 如果输入0,则退出
        break
    else:
        if balance - products[p_index - 1][1] < 0: # 判断商品余额是否可购买所选商品
            print("your balance is not enought! please choice other")
            continue
        else:
            choice_product.append(products[p_index - 1]) # 加入购买列表
            balance -= products[p_index - 1][1] # 账号余额减去商品价格
            print("your balance is ¥%d" % balance)
            continue
# 退出时显示已经购买商品,及账户余额,并保存到相应文件
with open("buy", "w") as f:
    for i in choice_product:
        print("%d、%s price is ¥%d" % ((choice_product.index(i) + 1), i[0], i[1]))
        line = "%s,%s\n" % (i[0], i[1])
        f.write(line)
with open("balance", "w") as f:
    f.write(str(balance))
print("your balance is ¥%d" % balance)

 商家入口:admin.py

# 从文件products中读取商品列表,存入字典并显示
products = {}
flag_modify = False
with open("products", "r+") as f:
    for line in f:
        if line != "\n":
            products[line.strip().split(",")[0]] = int(line.strip().split(",")[1])
for i in products:
    print("商品:%s, 价格:%d" % (i, products.get(i)))
# 管理操作加入、修改或退出
while True:
    choice = input("添加商品请输出a,修改商品价格请输入m,退出请输入q\n") 
    if choice == "a":
        product = input("请输入商品名称:")
        if product in products:
            print("此商品已经存在,不能添加请重新选择")
            continue
        else:
            while True:
                price = input("请输出商品价格:")
                if price.isdecimal():
                    if int(price) >= 0:
                        products[product] = price
                        flag_modify = True
                        break
                    else:
                        print("您输入的价格不能是负数,请重新输入!")
                        continue
                else:
                    print("您输入的价格不是数字,请重新输入!")
                    continue
    elif choice == "m":
        pkey = input("请输出商品名称:")
        if pkey in products:
            while True:
                pvalue = input("请输入商品新的价格:")
                if pkey.isdecimal():
                    if int(price) >= 0:
                        products[product] = price
                        flag_modify = True
                        break
                    else:
                        print("您输入的价格不能是负数,请重新输入!")
                        continue
                else:
                    print("您输入的价格不是数字,请重新输入!")
                    continue
    elif choice == "q":
        if flag_modify == True:
            with open("products", "w") as f:
                for i in products:
                    line = "%s,%s\n" % (i, products.get(i))
                    f.write(line)
            break
        else:
            break
    else:
        print("您的选择不在选项之内")

 

posted on 2017-05-23 14:35  西窗晓岩  阅读(111)  评论(0)    收藏  举报