需求如下:1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表2、允许用户根据商品编号购买商品3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4、可随时退出,退出时,打印已购买商品和余额5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买7、允许查询之前的消费记录
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2017/9/17 13:02 4 # @Author : lichuan 5 # @File : file_test.py 6 7 8 9 ‘‘‘ 10 1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资 11 ,然后打印商品列表 12 2、允许用户根据商品编号购买商品 13 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 14 4、可随时退出,退出时,打印已购买商品和余额 15 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息, 16 需高亮显示 17 6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消 18 费的余额什么的还是那些,再次登录可继续购买 19 7、允许查询之前的消费记录 20 ‘‘‘ 21 shop_list={ 22 ‘apple‘ : 7888, 23 ‘xiaomi‘ : 2000, 24 ‘huawei‘ : 2500, 25 ‘meizu‘ : 1800 26 } 27 28 FLAG_TAG=True 29 30 31 while FLAG_TAG: 32 user_name=input("please input your username:").strip() 33 passwd=input("please input your passwd:").strip() 34 35 with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as a_read,open(‘a.txt‘,‘r+‘,encoding=‘utf-8‘) as a_write: 36 for i in a_read: 37 #print(i) 38 # userinfo = {} 39 i=eval(i) 40 buy_list = {} 41 ago_buy_list=i["buy_list"] 42 43 if i["username"] == user_name and i[‘passwd‘] == passwd: 44 if len(i[‘buy_list‘]) != 0: 45 print("\033[1m 上次消费记录: %s " % str(i["buy_list"]) +‘\033[0m‘ ) 46 print("\033[1m salary: %d" % i[‘salary‘] + ‘\033[0m‘) 47 while True: 48 if i[‘salary‘] == 0 : 49 s=input("please input your salary:").strip() 50 #如果不为数字或者数字为0,则重新输入 51 if (not s.isdigit()) or int(s) == 0: 52 print("wrong input,try again!") 53 continue 54 55 i[‘salary‘]=int(s) 56 FLAG_TAG=False 57 58 #da==打印商品列表 59 count=0 60 buy=[] 61 for s in shop_list: 62 print("%d,%s %d" %(count,s,shop_list[s])) 63 buy.append(s) 64 count+=1 65 p=input("q==exit,please input your number:").strip() 66 67 if p == ‘q‘: 68 FLAG_TAG=False 69 print("\033[1m salary: %d" % i[‘salary‘] + ‘\033[0m‘) 70 print("\033[1m 已购买商品: %s " % str(buy_list) + ‘\033[0m‘) 71 break 72 elif p.isdigit() and int(p) < count: 73 p=int(p) 74 if buy[p] in buy_list and i[‘salary‘] >= shop_list[buy[p]]: 75 buy_list[buy[p]]+=1 76 i[‘salary‘] = i[‘salary‘] - shop_list[buy[p]] 77 print("\033[1m salary: %d" % i[‘salary‘]+‘\033[0m‘) 78 print("\033[1m %s 已加入购物车" % buy[p]+‘\033[0m‘) 79 continue 80 elif i[‘salary‘] >= shop_list[buy[p]] : 81 buy_list[buy[p]]=1 82 i[‘salary‘]=i[‘salary‘]-shop_list[buy[p]] 83 print("\033[1m salary: %d" % i[‘salary‘]+‘\033[0m‘) 84 print("\033[1m %s 已加入购物车" % buy[p] + ‘\033[0m‘) 85 else: 86 print("余额不足,请选择别的商品!") 87 print("\033[1m salary: %d" % i[‘salary‘] +‘\033[0m‘) 88 continue 89 else: 90 print("wrong input , try again!") 91 continue 92 93 if len(buy_list) != 0: 94 ago_buy_list=buy_list 95 i[‘buy_list‘] = ago_buy_list 96 a_write.write(str(i)+‘\n‘) 97 98 #根据输入判断,用户密码错误且输入不是‘q‘或者’g‘的,重新循环,输入用户名密码 99 if FLAG_TAG: 100 print("username or passwd is wrong,try again please!") 101 c=input("q==exit,g=continue:").strip() 102 if c == ‘q‘: 103 FLAG_TAG=False 104 break 105 elif c == ‘g‘: 106 continue 107 108 109 # a_write.write(str(i)+‘\n‘) 110 111 # for wares in shop_list: 112 # print(wares) 113 FLAG_TAG=False
时间: 2024-10-28 15:46:54