Python-购物车
来源:互联网 发布:教学过程的最优化是指 编辑:程序博客网 时间:2024/06/06 11:38
要求:
1、允许用户选择购买商品的数量(输入:1 2);
例:
输入:1 2回车;
则购买num为1的商品,数量为2,不输入数量默认为1。
2、允许多用户登录,查看当前余额;
3、选择同样的商品,不打印多行;
4、允许用户查看之前的购买记录,并显示购买时间;
import jsonimport timem_list=[ '购买商品', '查看购买记录', '查看余额', '退出']tupf = ("车辆类", "服装类", "家电类")tups = [ [("VW(Shanghai)",8000), ("SANTANA",70000), ("Phaeton",30000)], [("T-shirt",800), ("Jeep",700), ("Cat-fire",300)], [("Computer",1600), ("iphone",3750), ("TV",3000)]]exit_flag = False#数据保存进文件def save(file, data): with open(file, 'w') as f: json.dump(data, f)#打印字典数据def printData(data,t_flag): print("Your Shop Car".center(80, '*')) car_shop = data['buyHist'] if t_flag: print("{a:^5}".format(a='Num'), "{a:<20}".format(a='Name'), "{a:>8}".format(a='Price'), "{a:>8}".format(a='Count'), "{a:>8}".format(a='Cost'), "{a:>20}".format(a='BuyTime')) else: print("{a:^5}".format(a='Num'), "{a:<20}".format(a='Name'), "{a:>8}".format(a='Price'), "{a:>8}".format(a='Count'), "{a:>8}".format(a='Cost')) i = 0 total = 0 for key in car_shop: i += 1 obj_price = car_shop[key]['price'] obj_count = car_shop[key]['count'] obj_time = car_shop[key]['buyTime'] total += obj_count * obj_price if t_flag: print("{a:^5}".format(a=str(i) + '.'), "{a:<20}".format(a=key), "{a:>8}".format(a=obj_price), "{a:>8}".format(a=obj_count), "{a:>8}".format(a=obj_price * obj_count), "{a:>25}".format(a=obj_time)) else: print("{a:^5}".format(a=str(i) + '.'), "{a:<20}".format(a=key), "{a:>8}".format(a=obj_price), "{a:>8}".format(a=obj_count), "{a:>8}".format(a=obj_price * obj_count)) print("{a:>44}".format(a='Total:'), "{a:>8}".format(a=total)) print("END".center(80, '*')) # print("your salary\033[31;1m[%s]\033[0m" % user_salary)#购买--函数def buy(user_salary, exit_flag): data = {'salary': user_salary, 'buyHist': {}} while not exit_flag: data_list=ch_object(tupf, tups, []) shop_list=data_list.get('data') choose = data_list.get('num') input_on = choose.split() if input_on[0].isdigit(): if int(input_on[0]) < len(shop_list): if user_salary >= shop_list[int(input_on[0])][1]: if len(input_on) < 2: count_num = 1 else: count_num = int(input_on[1]) user_salary -= shop_list[int(input_on[0])][1]*count_num data['salary'] = user_salary if data['buyHist'].get(shop_list[int(input_on[0])][0]) is None: data['buyHist'][shop_list[int(input_on[0])][0]] = \ { 'price': int(shop_list[int(input_on[0])][1]), 'count': count_num, 'buyTime':time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) } else: count_num = count_num + data['buyHist'][shop_list[int(input_on[0])][0]].get('count') data['buyHist'][shop_list[int(input_on[0])][0]]['count'] = count_num print("your input_on \033[33;1m[%s]\033[0m your balance\033[31;1m[%s]\033[0m" % ( shop_list[int(input_on[0])][0], user_salary)) else: print("\033[31;1m余额不足,请充值!\033[0m") else: print("false number!") elif input_on[0] == 'q' or input_on[0] == "quit": return data exit_flag = True elif input_on[0] == 'c' or input_on[0] == 'check': printData(data,False) print("your salary\033[31;1m[%s]\033[0m" % user_salary)#打印三级菜单def check(list): for i in range(len(list)): print(i + 1, list[i]) return input("Choose(q-quit):")# 三级菜单-----此处只为两层,三级参看上一篇def ch_object(tupf, tups, mindex): data_num ={} if len(mindex) == 0: one = check(tupf) flag = tupf # 设置标志位,为len判断长度做好准备 elif len(mindex)==1: print("shop_list".center(40, '-')) for item in enumerate(tups[int(mindex[0])-1]): item_index = item[0] item_name = item[1][0] item_price = item[1][1] print(item_index, '.', item_name, item_price) print("END".center(40, '-')) one=input('Choose(q-quit/b-back):') if one.lower()=="b": mindex.pop() # 将最后一个参数弹出 return ch_object(tupf, tups, mindex) # 准备返回上级 else: data_num['data']=tups[int(mindex[0])-1] data_num['num']=one return data_num if one.lower() == "q" or one.lower()=='c': data_num['num'] = one.lower() return data_num elif not (one.isdigit()) or int(one) > len(flag): return ch_object(tupf, tups, mindex) else: mindex.append(one) # 将输入添加到数组中 return ch_object(tupf, tups, mindex)#主要函数---username = input("your name:")with open('test.json', 'r') as f: data = json.load(f)if data.get(username) is None: salary = input("your salary:") salary = int(salary) data[username]=buy( salary, exit_flag) save("test.json",data)else: user_data = data.get(username) while not exit_flag: for item in enumerate(m_list): item_index = item[0] + 1 item_content = item[1] print(item_index, '.', item_content) cho = input('your choose number:') if cho == '1': data[username] = buy(user_data['salary'], exit_flag) save("test.json", data) elif cho == '2': printData(user_data, True) elif cho == '3': print('账号余额\033[31;1m[%d]\033[0m'% user_data['salary']) elif cho == '4': exit_flag=True
此间出现的问题:
1、if-else 语句中
import sysdef test(a,mindex): if len(mindex)==0: print('1')#(1) else: return 1#(2) if a==2: sys.exit() else: print('digui')#(3) mindex.append(a)#(4) return test(a-1,mindex)#(5)print(test(3,[]))print('finished')
调试程序可以发现:程序执行顺序是(1)(3)(4)(5)(2)(5)
也是就是说当执行到(2)的return语句时候,程序还会跳到(5)的return,但是(3)(4)并没有执行!猜想是因为有两个if-else块,俩个else是平级,所以return都会执行(没有道理的猜想),于是继续测试:
import sysdef test(a,mindex): if len(mindex)==0:#(1) print('1')#(2) if a == 2: sys.exit() else: print('digui')#(3) mindex.append(a)#(4) return test(a - 1, mindex)#(5) else: return 1#(6)print(test(3,[]))print('finished')
将代码改成这样,程序执行顺序(1,2,3,4,5,1,6,5),我天!居然从(6)的return跳上去找(5)的return,颠覆小白的世界观喽~~求解呀
2、打印有中文字符的时候,"{a:<8}".format(a='hello')
讲道理是hello站8个字符,不够的用空白填充,但是换成a换成中文,各种错位,但是我测试了一下,python3中一个汉字就是一个字节呀
s='我们's1='wo'print(len(s))print(len(s1))#输出结果:#2#2
有点懵。。我想静静。。。
0 0
- python练习:购物车
- python练习-购物车
- Python-购物车
- python购物车
- python---购物车
- python--购物车
- python 购物车菜单
- Python--购物车
- python-----购物车
- python的购物车实例
- python基础学习--购物车小程序
- python实现简单的购物车
- python写的购物车小程序
- python练习题:实现购物车功能
- Python购物车系统模拟1
- Python笔记(三)购物车小程序
- Python Django实现简单购物车功能
- Python程序练习3--模拟购物车
- expdp利用dblink将远程数据导出到本地
- [BZOJ2594][Wc2006]水管局长数据加强版(kruskal+lct)
- 扩展AutoCompleteTextView让其默认显示一组列表。
- Oracle 系统包——dbms_output学习
- python爬虫知识小结
- Python-购物车
- Uva201 Squares
- Docker与Web自动化测试:一键创建Selenium Grid集群
- 经典狐狸逮兔子问题
- python实现九九乘法口诀
- jQuery操作select下拉框(增加,删除,修改)
- 构建基于 Docker + Jenkins + Sahi 的 Web UI 自动化测试环境
- HDU-4847 Wow! Such Doge!,模拟!
- mongodb 大结构文件系统 Gridfs c操作实例