購物車程式作業
阿新 • • 發佈:2018-11-10
自己寫的,程式碼很low,以後進步了在慢慢改吧。
作業需求:
資料結構: goods = [ {"name": "電腦", "price": 1999}, {"name": "滑鼠", "price": 10}, {"name": "遊艇", "price": 20}, {"name": "美女", "price": 998}, ...... ] 功能要求: 基礎要求: 1、啟動程式後,輸入使用者名稱密碼後,讓使用者輸入工資,然後列印商品列表 2、允許使用者根據商品編號購買商品 3、使用者選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒 4、可隨時退出,退出時,列印已購買商品和餘額 5、在使用者使用過程中, 關鍵輸出,如餘額,商品已加入購物車等訊息,需高亮顯示 擴充套件需求: 1、使用者下一次登入後,輸入使用者名稱密碼,直接回到上次的狀態,即上次消費的餘額什麼的還是那些,再次登入可繼續購買 2、允許查詢之前的消費記錄
# 執行程式之前,請先執行一次2-5行程式碼,然後註釋掉好了 with open('user_info.txt', 'w') as f1: f1.write('alex|123|0|\r') # 使用者名稱|密碼|工資|已買物品 f1.write('jack|123|0|\r') f1.write('mark|123|0|\r') # 正式程式碼 goods = [ {"name": "電腦", "price": 1999}, {"name": "滑鼠", "price": 10}, {"name": "遊艇", "price": 20}, {"name": "美女", "price": 998}, ] user_info = {} with open('user_info.txt', 'r') as f2: for line in f2: user = line.strip().split('|') user_goods = user[3:-1] str_user_goods = '|'.join(user_goods) # 把已購買的商品轉成字串,因為往檔案寫入只能寫字串 user_info[user[0]] = { 'username': user[0], 'password': user[1], 'paycheck': user[2], 'goods': str_user_goods, } whether_login = False # 用來判斷是否已經登陸過並且輸入過工資 while True: username = input('使用者名稱:').strip() password = input('密碼:').strip() if username in user_info and password == user_info[username]['password']: if int(user_info[username]['paycheck']) != 0: whether_login = True print('您的餘額為{},您的購物車商品如下:'.format(user_info[username]['paycheck'])) print(user_info[username]['goods']) if whether_login == False: # 如果還沒有登陸過 salary = input('請輸入工資:').strip() else: salary = user_info[username]['paycheck'] if salary.isdigit() and int(salary) > 0: salary = int(salary) while True: print('商品列表:') for index, item in enumerate(goods): print(index, item['name'], item['price']) goods_code = input('請輸入要購買的商品編號,按q退出:').strip() if goods_code.isdigit() and int(goods_code) < len(goods): goods_code = int(goods_code) if salary > goods[goods_code]['price']: salary = salary - goods[goods_code]['price'] user_info[username]['paycheck'] = str(salary) user_info[username]['goods'] += goods[goods_code]['name'] + ' |' with open('user_info.txt', 'w') as f3: for i in user_info: f3.write( i + '|' + user_info[i]['password'] + '|' + str( user_info[i]['paycheck']) + '|' + user_info[i]['goods'] + '\r' ) print('\033[31m {0}已加入購物車,餘額還剩{1} \033[0m'.format(goods[goods_code]['name'], salary)) else: print('餘額不足') elif goods_code.lower() == 'q': alreaed_buy = ''' ---------- 您購買的商品如下: ---------- {} 歡迎下次光臨 '''.format(user_info[username]['goods']) print(alreaed_buy) exit() else: print('超出範圍或輸入的不是數字型別') else: print('輸入有誤,請重新輸入,請輸入不小於0的整數') else: print('使用者名稱或密碼錯誤') break