Python学习之购物车练习

#!/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()

 

posted @ 2020-04-15 15:44  w_boy  阅读(181)  评论(0编辑  收藏  举报