1、购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
# 商品列表
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("您的选择不在选项之内")
浙公网安备 33010602011771号