需求:python
1. 啓動程序後,用戶經過帳號密碼登陸,而後打印商品列表。git
2. 容許用戶根據商品編號購買商品。app
3. 用戶選擇商品後,檢測餘額是否足夠,夠就直接扣款,不夠就提醒充值。spa
4. 可隨時退出,退出時,打印已購買的商品和餘額。
code
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