标签:env art rod 商品列表 商品 count car 无法 代码
开发环境,win7、Python3.6、Pycharm社区版2017
作业需求:
购物车程序:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 #再次登陆,输入工资进行充值服务,有没有人性化
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录 #不用查询,下次登录自动打印!苦笑
先写个不调用文件的“购物车”模拟练习一下:
这是超市的商品列表:
1 mart_list = [ 2 ("Iphone",5500), 3 ("Mac Book",9800), 4 ("Coffee",29), 5 ("ThinkPad",6690), 6 ("vcd",100), 7 ("Channel",2222) 8 ]
这是购物车主程序:
1 shopping_car = [] 2 while True: 3 salary = input("input your salary: ") 4 if salary.isdigit(): 5 salary = int(salary) 6 print("当前余额:\033[31m%s\033[0m"%salary) 7 while True: 8 print("product list".center(50,"=")) 9 for k,i in enumerate(mart_list): 10 print(k,i) 11 choice = input("\033[36m购物愉快!请选择商品:\033[0m") 12 if choice.isdigit(): 13 choice = int(choice) 14 if choice in range(len(mart_list)): 15 buy_product = mart_list[choice] 16 if salary < buy_product[-1]: 17 print(‘\033[45m余额不足\033[0m 当前余额仅剩:\033[31m%s\033[0m‘%salary) 18 else: 19 print(‘\033[43m%s\033[0m 已加入购物车‘%buy_product[0]) 20 shopping_car.append(buy_product) 21 salary -= buy_product[-1] 22 print(‘*‘*16,‘ 当前余额:\033[31m%s\033[0m‘ % salary) 23 else: 24 print(‘\033[42m持续更新中,尽情期待……\033[0m‘) 25 elif choice =="q": 26 print(‘你已购商品列表‘.center(42,‘-‘)) 27 for i,k in enumerate(shopping_car): 28 print(i,k) 29 print(‘本次消费:怎么算,余额:\033[31m%s\033[0m‘%salary) 30 exit() 31 else: 32 print(‘\033[42m你的心思,我不太明白!\033[0m‘) 33 else: 34 print("\033[41m是不是输入的是假币呢?\033[0m") 35 continue
代码的堆砌,终于完成,总体感觉还能看,
但是下面的整体:哎,接招吧!烂?我也感觉是
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Channel2 mart_list = [ ("Iphone",5500), ("Mac Book",9800), ("Coffee",29), ("ThinkPad",6690), ("VCD",100), ("Channel",2222) ] # shopping_car = [("ThinkPad",6690),("ThinkPad",6690),("vcd",100)] # with open(‘userinfo.txt‘, ‘r‘, encoding=‘utf-8‘) as f: # # for k in f: # # print(k) # if username in k: # print(k) # username = k.split(‘:‘)[0] # password = k.split(":")[1] # salary = k.split(‘:‘)[2] # last_shopping = k.split(":")[-1] # print(username,password,salary,last_sho # while True: while True: username = input(‘用户名:‘) with open(‘lockuser.txt‘,‘r‘,encoding=‘utf-8‘) as f: for k in f: if username not in k: while True: with open(‘userinfo.txt‘,‘r+‘,encoding=‘utf-8‘) as f: for k in f: if username in k: username=k.split(";")[0] real_passwd = k.split(‘;‘)[1] salary = int(k.split(‘;‘)[-2]) last_shopping = k.split(‘;‘)[-1] # print(‘‘) count = 0 while True: password = input(‘请输入密码:‘) if password == real_passwd: print(‘welcome to my supermarket‘) if last_shopping == "0": pass else: print(‘上次购物是:%s‘%last_shopping) print(‘你当前余额为:%s‘%salary) # if salary == 0: while True: add_money = input(‘你的工资是:‘) if add_money.isdigit(): add_money = int(add_money) salary += add_money print(‘你当前总金额为:\033[31m%s\033[0m‘ % salary) break else: print(‘\033[41m无法识别你的金额!\033[0m 稍稍充值点呗!‘) # else: shopping_car = [] while True: print("product list".center(50, "=")) for k, i in enumerate(mart_list): print(k, i) choice = input("\033[33m购物愉快!请选择商品:\033[0m") if choice.isdigit(): choice = int(choice) if choice in range(len(mart_list)): buy_product = mart_list[choice] if salary < buy_product[-1]: print(‘\033[43m余额不足\033[0m 当前余额仅剩:\033[31m%s\033[0m‘ % salary) else: print(‘\033[45m%s\033[0m 已加入购物车‘ % buy_product[0]) # with open(‘userinfo‘,‘r+‘,encoding=‘utf-8‘) as f: shopping_car.append(buy_product) salary -= buy_product[-1] print(‘当前余额:\033[31m%s\033[0m‘%salary) else: print(‘\033[46m正在更新中,尽情期待\033[0m‘) elif choice == "q": print(‘你已购商品列表‘.center(40,‘-‘)) for i, k in enumerate(shopping_car): print(i, k) print(‘本次消费后,余额\033[31m%s\033[0m‘ % salary) with open(‘userinfo.txt‘,‘r+‘,encoding=‘utf-8‘) as f: f.read() # print(f.tell()) f.write(‘;‘) f.write(str(salary)) # f.write(‘;‘,str(salary)) f.flush() f.write(‘;‘) f.write(str(shopping_car)) f.flush() exit() else: print(‘\033[32m你的心思,我很难猜!\033[0m‘) else: if count == 2: print("\033[42m账号错误太多,将被锁定,请联系管理员!\033[0m") with open(‘lockuser.txt‘,‘w‘,encoding=‘utf-8‘) as f: f.write(username) exit() else: print(‘\033[43m密码错误!\033[0m‘) count += 1 else: print(‘用户不存在‘) exit() else: print(‘此账号被锁定,请手动删除lock.user.txt的内容,重新再试!‘) exit()
好歹也辛苦构思三天了,要不我给你指导一下?
首先文件结构:主程序就不用说了,辅助两个文件lockuser.txt当密码输入错误超过三次,则锁定。
userinfo.txt保存用户的用户名;密码;余额;上次购买物品。下次再购买,则继续追加“;余额” 和 “;本次购买的商品”
1.运行主程序,输入用户名,和密码
2.读取账号余额,提示输入工资,不输入就不让继续了,嘿嘿嘿!耍流氓了!
3.恩恩,购物开始,输入对应的商品编号,否则,看提示!
4.购物途中可以随时退出,退出时,打印你的购物清单,和账号余额
同时把你的余额,和购物记录,追加至userinfo.txt 文件中
5.第二次登陆,仍然需要输入工资的,多少输入一点吧,
6.接5,打印出你上次的购买清单,样子有点丑,呵呵
总结:
这次作业用到的知识有,while 循环、for循环、if判断、enumerate()、文件的读取和写入(列表到字符串的转换)(字符串转化为列表???)
装B新技能 打印彩色字体,恩linux里面也有格式(\033[31m加色字\033[0m)
好了,纠结了我两天的程序就先这样吧,我的态度很不好吗?哎,书到用时方恨少啊。下次见!
标签:env art rod 商品列表 商品 count car 无法 代码
原文地址:http://www.cnblogs.com/yes5144/p/6845411.html