目錄python
用戶名和密碼存放於文件中,格式爲:nick|nick123git
啓動程序後,先登陸,登陸成功則讓用戶輸入工資,而後打印商品列表,失敗則從新登陸,超過三次則退出程序code
容許用戶根據商品編號購買商品orm
用戶選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒ip
可隨時退出,退出時,打印已購買商品和餘額utf-8
import os product_list = [ ['Iphone7', 5800], ['Coffee', 30], ['疙瘩湯', 10], ['Python Book', 99], ['Bike', 199], ['ViVo X9', 2499], ] shopping_cart = {} current_userinfo = [] db_file = r'db.txt' while True: print(''' 登錄 註冊 購物 ''') choice = input('>>: ').strip() if choice == '1': #一、登錄 tag = True count = 0 while tag: if count == 3: print('嘗試次數過多,退出。。。') break uname = input('用戶名:').strip() pwd = input('密碼:').strip() with open(db_file, 'r', encoding='utf-8') as f: for line in f: line = line.strip('\n') user_info = line.split(',') uname_of_db = user_info[0] pwd_of_db = user_info[1] balance_of_db = int(user_info[2]) if uname == uname_of_db and pwd == pwd_of_db: print('登錄成功') # 登錄成功則將用戶名和餘額添加到列表 current_userinfo = [uname_of_db, balance_of_db] print('用戶信息爲:', current_userinfo) tag = False break else: print('用戶名或密碼錯誤') count += 1 elif choice == '2': uname = input('請輸入用戶名:').strip() while True: pwd1 = input('請輸入密碼:').strip() pwd2 = input('再次確認密碼:').strip() if pwd2 == pwd1: break else: print('兩次輸入密碼不一致,請從新輸入!!!') balance = input('請輸入充值金額:').strip() with open(db_file, 'a', encoding='utf-8') as f: f.write('%s,%s,%s\n' % (uname, pwd1, balance)) elif choice == '3': if len(current_userinfo) == 0: print('請先登錄...') else: #登錄成功後,開始購物 uname_of_db = current_userinfo[0] balance_of_db = current_userinfo[1] print('尊敬的用戶[%s] 您的餘額爲[%s],祝您購物愉快' % (uname_of_db, balance_of_db)) tag = True while tag: for index, product in enumerate(product_list): print(index, product) choice = input('輸入商品編號購物,輸入q退出>>: ').strip() if choice.isdigit(): choice = int(choice) if choice < 0 or choice >= len(product_list): continue pname = product_list[choice][0] pprice = product_list[choice][1] if balance_of_db > pprice: if pname in shopping_cart: # 原來已經購買過 shopping_cart[pname]['count'] += 1 else: shopping_cart[pname] = { 'pprice': pprice, 'count': 1 } balance_of_db -= pprice # 扣錢 current_userinfo[1] = balance_of_db # 更新用戶餘額 print( "Added product " + pname + " into shopping cart,[42;1myour current balance " + str(balance_of_db)) else: print("買不起,窮逼! 產品價格是{price},你還差{lack_price}".format( price=pprice, lack_price=(pprice - balance_of_db))) print(shopping_cart) elif choice == 'q': print(""" ---------------------------------已購買商品列表--------------------------------- id 商品 數量 單價 總價 """) total_cost = 0 for i, key in enumerate(shopping_cart): print('%22s%18s%18s%18s%18s' % (i, key, shopping_cart[key]['count'], shopping_cart[key]['pprice'], shopping_cart[key]['pprice'] * shopping_cart[key]['count'])) total_cost += shopping_cart[key][ 'pprice'] * shopping_cart[key]['count'] print(""" 您的總花費爲: %s 您的餘額爲: %s ---------------------------------end--------------------------------- """ % (total_cost, balance_of_db)) while tag: inp = input('確認購買(yes/no?)>>: ').strip() if inp not in ['Y', 'N', 'y', 'n', 'yes', 'no']: continue if inp in ['Y', 'y', 'yes']: # 將餘額寫入文件 src_file = db_file dst_file = r'%s.swap' % db_file with open(src_file,'r',encoding='utf-8') as read_f,\ open(dst_file,'w',encoding='utf-8') as write_f: for line in read_f: if line.startswith(uname_of_db): l = line.strip('\n').split(',') l[-1] = str(balance_of_db) line = ','.join(l) + '\n' write_f.write(line) os.remove(src_file) os.rename(dst_file, src_file) print('購買成功,請耐心等待發貨') shopping_cart = {} current_userinfo = [] tag = False else: print('輸入非法') elif choice == 'q': break else: print('非法操做')
登錄 註冊 購物 >>: 2 請輸入用戶名:nick 請輸入密碼:123 再次確認密碼:123 請輸入充值金額:10000 登錄 註冊 購物 >>: 1 用戶名:nick 密碼:123 登錄成功 用戶信息爲: ['nick', 10000] 登錄 註冊 購物 >>: 3 尊敬的用戶[nick] 您的餘額爲[10000],祝您購物愉快 0 ['Iphone7', 5800] 1 ['Coffee', 30] 2 ['疙瘩湯', 10] 3 ['Python Book', 99] 4 ['Bike', 199] 5 ['ViVo X9', 2499] 輸入商品編號購物,輸入q退出>>: 0 Added product Iphone7 into shopping cart,[42;1myour current balance 4200 {'Iphone7': {'pprice': 5800, 'count': 1}} 0 ['Iphone7', 5800] 1 ['Coffee', 30] 2 ['疙瘩湯', 10] 3 ['Python Book', 99] 4 ['Bike', 199] 5 ['ViVo X9', 2499] 輸入商品編號購物,輸入q退出>>: 1 Added product Coffee into shopping cart,[42;1myour current balance 4170 {'Iphone7': {'pprice': 5800, 'count': 1}, 'Coffee': {'pprice': 30, 'count': 1}} 0 ['Iphone7', 5800] 1 ['Coffee', 30] 2 ['疙瘩湯', 10] 3 ['Python Book', 99] 4 ['Bike', 199] 5 ['ViVo X9', 2499] 輸入商品編號購物,輸入q退出>>: q ---------------------------------已購買商品列表--------------------------------- id 商品 數量 單價 總價 0 Iphone7 1 5800 5800 1 Coffee 1 30 30 您的總花費爲: 5830 您的餘額爲: 4170 ---------------------------------end--------------------------------- 確認購買(yes/no?)>>: yes 購買成功,請耐心等待發貨 登錄 註冊 購物 >>: q