在开始之前有个作业:就是购物车系统输入工资将产品列表列出并实现购买退出时实现打印已经购买清单。看一下我完成的代码还是有一些瑕疵但是功能全部实现了
#_author: "PXH" #date:2018/7/23 0023 while True: salary = input("你的工资:") if salary.isdigit(): salary = int(salary) break else: print("请输入整数") SHOP_LIST = [1,6800,"Iphone",2,9000,"MacBook",3,32,"Coofee",4,1500,"Bike",5,80,"PythonBook"] shopping_list = ''' 您的可以购买一向商品: 1、Iphone %d 元 2、MacBook %d 元 3、Coofee %d 元 4、Bike %d 元 5、PythonBook %d 元 '''%(SHOP_LIST[1],SHOP_LIST[1+3],SHOP_LIST[1+3+3],SHOP_LIST[1+3+3+3],SHOP_LIST[1+3+3+3+3]) print(shopping_list) shop_in_list="" #存放已经购买商品的清单 while True: #为确保多次购物使用死循环,当我们输入“quit”时才退出并且输出已经购买的清单 while True: shop_num = input("请输入你购买商品的序号:") if shop_num.isdigit(): shop_num = int(shop_num) if SHOP_LIST.count(shop_num) == 0: print("不存在的商品,请重新输入") else: break elif shop_num == "quit": exit("你购买的商品有:\n"+shop_in_list+"你当前余额为:%d元"%(salary)) else: print("请输入数字") position=SHOP_LIST.index(shop_num) shop_name=SHOP_LIST[position+2] shop_price=SHOP_LIST[position+1] if shop_price <= salary: salary -= shop_price shop_in_list += shop_name+" "+str(shop_price)+ "元\n" print("你购买了%s花去了%d账户余额%d"%(shop_name,shop_price,salary)) else: print("账户余额%d不足以购买%s需要%d"%(salary,shop_name,shop_price))
具体的缺点就是,如果我要添加商品很麻烦需要改很多代码。作业将昨天讲到的知识进行复习,今天再将引入了元组的概念、for、range、列表的一些知识查漏具体如下:
#先讲元组与类表差不多但是不能更改内容并且是用(,,,,)来实现的如果要 创建一个元素的元组那必须是(1,)不然不按照元组处理 #然后就是 for for i in range(5) #如果我们打印range(5)结果应该是[0,1,2,3,4]这是一个列表 range(5)=[0,1,2,3,4] #所以我们的 i 代表的是元组里面对应的元素,所以for还可以这么用 for i in ["q","w","e","r"] #实际上打印的是列表里面的元素range就是创建一个列表 #最后就是我们的列表里面的元素可以是任意类型包括列表和元组
补充一下anumerate()和len()然后就组成了更改后的作业了
#_author: "PXH" #date:2018/7/24 0024 #首先创建一个列表来存放商品 shopping_list =[("MACBOOK",5000),("PYTHONBOOK",50),("COFFEE",32),("CAR",90000),("BIKE",1500)] #输入工资并用一个变量存放 shop_car = ["你已经购买产品如下:","欢迎下次再来购物"] while True: salary = input("请输入你的工资:") #判断用户输入的数据是否为数字 if salary.isdigit(): salary = int(salary) print("商品列表如下所示:") for i,s_l in enumerate(shopping_list,1):#in后面是列表i存放的是列表里的元素 print("%s、 %s %d元"%(i,s_l[0],s_l[1])) while True: shop_num = input("请输入你要购买产品的序号:[退出:quit]") if shop_num.isdigit(): shop_num = int(shop_num) if shop_num>0 and shop_num<=len(shopping_list): shop_information = shopping_list[shop_num-1] shop_name = shop_information[0] shop_price = shop_information[1] if shop_price <= salary: salary -= shop_price print("购买%s成功账户余额为%d"%(shop_name,salary)) shop_car.insert(1,"%s %d元"%(shop_name,shop_price)) else: print("购买%s失败账户余额不足"%(shop_name)) else: print("输入的序号有误请重新输入") elif shop_num=="quit": for i in shop_car: print(i) exit() else: print("你输入有误请重新输入") else: print("你输入有误请重新输入")
大概总结一下字典吧
#_author: "PXH" #date:2018/7/24 0024 dic1={"name":"pxh"} dic1["age"]=18 #如果键存在做修改,不存在做添加 print(dic1) dic1.setdefault("name2","pxh2")#如果键存在则不改变键值并返回原键值,不存在则添加并返回键值 print(dic1) dic1.keys()#可以查看字典里面所有键有返回值 dic1.values()#可以查看字典里面所有键值有返回值 dic1.items()#可以查看字典的键和键值有返回值 dic1.update({"name3":"pxh3"})#update里面字典放到dic1中如果存在相同的key那么就会覆盖dic1中的键值 #dic1.clear()#清空字典 #del dic1["name"]#删除指定键值对 dic1.pop("name")#删除指定键值对并返回被删除键值 dic1.popitem()#删除随机键值对 dic2=dict.fromkeys(["z1","z2","z3"],"z")#字典快速初始化 print(dic2) #{'z1': 'z', 'z2': 'z', 'z3': 'z'} dic3 = {"2":2,"1":1,"3":3,"4":4,"5":5,"6":6} print(sorted(dic3.items())) for i,v in dic3.items(): #遍历 print(i,v)
字符串
#_author: "PXH" #date:2018/7/24 0024 a = "123" b = "abc" print("%d"%20)#格式化输出 c = a+b print(c) d = "---".join([a,b]) #字符串的拼接 print(d) print(a.count("1"))#统计某个元素出现次数 print(a.center(60,"#"))#居中 print(a.endswith("3"))#判断是否以某个内容结尾 print(a.startswith("1"))#判断是否以某个内容开头 print(b.capitalize())#以大写开头 e="12\t34567" print(e.expandtabs(tabsize = 20)) print(e.find("2")) f = "12344{name}is{age}" print(f.format(name = "pxh",age = 30)) print(f.format_map({"name":"pxh","age":123})) print(f.index("3"))#查找个数
处理方法还有很多,就不举例了太多了还没记住