#!/usr/bin/env python
#-*-coding:utf8-*-
import time
#知识回顾
#顺序传参
strvar = "{:s}".format("止戈流")
print(strvar)
#关键字传参
strvar="{who}".format(who="俏如来")
print(strvar)
#传进来dewho,这个数据类型是字符串
strvar = "{who:s}".format(who="天之道")
#填充字符,*填充符号 ^ 原字符居中 10填充个数 s数据类型是字符串
strvar = "{who:*^10s}".format(who="墨狂")
print(strvar)
# 可以不强制指定类型,默认什么数据类型都可以
dic2={"name":"电脑","price":1888}
strvar="{dic[name]:*^10}".format(dic=dic2)
print(strvar)
# 可以不强制指定填充符号,默认填充空格
dic2={"name":"电脑","price":1888}
strvar="{dic[name]:^10}".format(dic=dic2)
print(strvar)
#程序开始
print("==================================")
goods_list=[
{"name":"电脑","price":1888},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":888},
{"name":"风油精","price":2},
]
#充值的金额
money = 0
#购物车
car = {}
"""
序号 商品信息
car = { 2: {'name': '鼠标', 'price': 10, 'amount': 1}}
"""
#充值
def recharge():
global money
while True:
str_num = input("请充值,大哥:")
if str_num.isdecimal():
num = int(str_num)
money= num
print("充值{}元成功!!!".format(money))
break
else:
print("充值失败,非数字")
def loading():
print("加载中 .... ")
time.sleep(1)
def show():
it = enumerate(goods_list,start=1)
str1 = "{}".format("商品名称").center(18)
print("序号"+str1+"价格")
for k,v in it:
# print(k,v)
v["num"] = k
# print(v)
strvar = "{v[num]:<12}{v[name]:<12}{v[price]}".format(v=v)
print(strvar)
def add_car(num):
#如果num在字典中,说明已经购买过了,只需在amount上加1
#如果num不在字典中,说明是第一次购买,把对应的键值对添加到字典中
if num in car:
car[num]["amount"] +=1
else:
# car = {1:{},2:{},3:{}}
car[num]={"name":goods_list[num-1]["name"],"price":goods_list[num-1]["price"],"amount":1}
print(car)
def error():
strvar = """
***************************************
* 选项不存在,请重新输入 *
***************************************
"""
print(strvar)
time.sleep(1)
#查看购物车
def show_car(num):
print("*********************************")
print("你选择的商品具体信息")
print("*-商品名称:{}".format(car[num]["name"]))
print("*-商品单价:{}".format(car[num]["price"]))
print("*-商品数量:{}".format(car[num]["amount"]))
print("已成功添加到购物车 ~ 请继续购物 ~ ")
print("*********************************")
#结算
def balance():
total = 0
print("[---------购物车商品如下----------]")
for k,v in car.items():
# print(k,v)
# 添加序号
v["num"] = k
# 商品总价 = 单价 * 数量
v["total"] = v["price"] * v["amount"]
#把所有的单个商品总价格都累加在total变量中,表达消费总价格
total+=v["total"]
strvar = "序号{v[num]}: 商品名称:{v[name]} 商品单价:{v[price]} 商品数量:{v[amount]} 商品总价:{v[total]}".format(v=v)
print(strvar)
return total
#购买成功
def success(money,total):
print("[一共:{}元]".format(total))
# 剩余金额 = money - total
print("[已成功购买以上所有商品,余额还剩{}元,欢迎下次光临]".format(money-total))
#删除商品
def del_goods(money,total):
print("余额不足,还差{}元,请删除某些商品".format(total-money))
num = input("[--------请输入要删除的商品序号----------]")
if num.isdecimal():
num=int(num)
# car = {2: {'name': '鼠标', 'price': 10, 'amount': 1}}
if num in car:
car[num]["amount"] -= 1
if car[num]["amount"]== 0: # == if not car[num]["amount"]:
car.pop(num)
else:
#如果输入的序号不正确,提示错误
error()
else:
#如果输入的不是字符串,提示错误
error()
def main():
#充值
recharge()
#加载商品中...
loading()
#展示商品
show()
#开始购物
sign=True
while sign:
num=input("请输入要买的商品")
if num.isdecimal():
num=int(num)
if 1 <= num <= len(goods_list):
#添加到购物车
add_car(num)
#展示购物车
show_car(num)
else:
error()
elif num.upper() == "N":
while True:
#结算
total = balance()
print(total)
if money<total:
del_goods(money,total)
else:
#购买成功
success(money,total)
sign = False
break
elif num.upper() == "Q":
#退出
print("欢迎下次再来")
sign=False
else:
error()
main()