需求:
1. 啟動程序后,用戶通過賬號密碼登錄,然后打印商品列表。
2. 允許用戶根據商品編號購買商品。
3. 用戶選擇商品后,檢測余額是否足夠,夠就直接扣款,不夠就提醒充值。
4. 可隨時退出,退出時,打印已購買的商品和余額。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 count = 0 # 計數器 5 username = "aaa" # 登錄用戶名 6 userpassword = "asd" # 登錄密碼 7 8 9 #創建黑名單表 10 f=open('name.txt','a') 11 f.close() 12 #創建用戶余額存放地址 13 f = open('salary.txt', 'a') 14 f.close() 15 16 f = open("name.txt", "r") 17 file_list = f.readlines() 18 f.close() 19 20 lock = [] 21 name = input("登錄用戶名:") 22 23 # 判斷用戶是否在黑名單 24 for i in file_list: 25 line = i.strip("\n") 26 lock.append(line) 27 if name in lock: 28 print("您的賬號已鎖定,請聯系管理員。") 29 exit() 30 else: 31 # 如果用戶沒有在黑名單,判斷用戶是否存在。 32 if name == username: 33 # 如果密碼連續輸錯三次,鎖定賬號。 34 while count < 3: 35 password = input("登錄密碼:") 36 if name == username and password == userpassword: 37 print("\033[92mWelcome to Mr.wang mall\033[0m") 38 break 39 else: 40 print("賬號密碼不匹配") 41 count += 1 42 if count ==3: 43 print("對不起,您的賬號連續輸錯三次賬號已鎖定,請聯系管理員。") 44 f = open("aaa.txt", "w+") 45 li = ['%s' % username] 46 f.writelines(li) 47 f.close() 48 exit() 49 else: 50 print("對不起,您的賬號連續輸錯三次賬號已鎖定,請聯系管理員。") 51 f = open("name.txt", "w+") 52 li = ['%s' % username] 53 f.writelines(li) 54 f.close() 55 else: 56 print("用戶名不存在,請輸入正確的用戶名。") 57 exit() 58 59 #用戶購買商品列表 60 shopping_list = [] 61 #用戶購買物品名稱存放列表 62 goods = [] 63 #用戶購買物品價格存放列表 64 price = [] 65 #商品價格列表 66 product_list = [ 67 ['Iphone',5800], 68 ['Mac Pro',9800], 69 ['Bike',800], 70 ['Watch',10600], 71 ['Coffee',31], 72 ['Alex Python',120], 73 ] 74 75 #讀取用戶的余額,如果首次登陸余額為0 76 f1 = open("salary.txt", "r") 77 file_list = f1.readlines() 78 f1.close() 79 salary = [] 80 if file_list: 81 print("") 82 else: 83 f2 = open("salary.txt", "w") 84 f2.write("0") 85 f2.close() 86 f1 = open("salary.txt", "r") 87 fil_list = f1.readlines() 88 f1.close() 89 for i in fil_list: 90 lin = i.strip("\n") 91 salary.append(lin) 92 93 salary = int(salary[0]) 94 95 #商品購買循環 96 while True: 97 #循環打印商品目錄 98 for j in range(1): 99 print("----shopping list----") 100 for i,ele in enumerate(product_list): 101 print (i,ele[0],ele[1]) 102 var = (input("\033[94m請輸入你要買的商品序列號(充值:t 余額:b 購買:y 退出:q):\033[0m")) 103 #判斷用戶輸入的是否為商品序號是否為數字 104 if var.isdigit(): 105 var = int(var) 106 #判斷用戶輸入的商品序號是否在范圍內 107 if var >=0 and len(product_list) > var: 108 p = product_list[var] 109 #判斷用戶的余額是否足夠買想要的商品 110 if p[1] <= salary: 111 shopping_list.append(p) 112 goods.append(p[0]) 113 price.append(p[1]) 114 salary = salary -p[1] 115 print("\033[94m您購買\033[0m\033[95m%s\033[0m\033[94m已加入購物車后,您的余額還有\033[0m\033[95m%s\033[0m"%(p[0],salary)) 116 else: 117 print("\033[91m您的余額不足(余額:%s),請充值后購買(充值:t)。\033[0m"%salary) 118 else: 119 print("\033[91m沒有找到您想要的商品,請重新輸入商品編號。\033[0m") 120 continue 121 elif var == "t": 122 num1 = input("\033[94m請輸入充值金額:\033[0m") 123 if num1.isdigit(): 124 num1 = int(num1) 125 salary = salary + num1 126 print("您現在的總余額是:",salary) 127 else: 128 print("\033[91m請輸入正確的充值金額\033[0m") 129 num1 = input("\033[94m請輸入充值金額:\033[0m") 130 continue 131 elif var == "q": 132 exit() 133 elif var == "b": 134 print("\033[91m您當前余額為:%s\033[0m"%salary) 135 elif var == "y": 136 print("--------shopping list------") 137 goods.sort() 138 s = set(goods) 139 for item in s: 140 print (" %s x %d"%(item,goods.count(item))) 141 sum = 0 142 for j in price: 143 sum = sum +j 144 print("您總計消費:\033[95m % s\033[0m余額:\033[95m % s\033[0m"%(sum,salary)) 145 print("\033[94m歡迎您下次購物\033[0m") 146 f = open("salary.txt", "w+") 147 la = ['%s' %salary] 148 f.writelines(la) 149 f.close() 150 exit() 151 else: 152 print("\033[91m請輸入正確的商品編號。\033[0m") 153 continue