【18】Python半成品購物車
- 2020 年 1 月 7 日
- 筆記
#!/usr/bin/env python #Author:Li QW
''' 程式需求: 1、啟動程式後,輸入用戶名密碼後,如果是第一次登錄,讓用戶輸入工資,然後列印商品列表 2、允許用戶根據商品編號購買商品 3、用戶選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒 4、可隨時退出,退出時,列印已購買商品和餘額 5、在用戶使用過程中, 關鍵輸出,如餘額,商品已加入購物車等消息,需高亮顯示 6、用戶下一次登錄後,輸入用戶名密碼,直接回到上次的狀態,即上次消費的餘額什麼的還是那些,再次登錄可繼續購買(未實現) 7、允許查詢之前的消費記錄
流程圖可供參考
import sys product_list=[ ('Iphone',7000), ('Watch',333), ('Water',10), ('coffer',54), ('Xiaomi',2490), ] ###將文件轉換成字典 f=open('user.txt','r') user_lis=f.read() f.close() user_info=user_lis.split("#") user_dict={} ###工資 salary=10000 sa=[] ###歷史購物車 show_shopping_log=[] ###購物車 add_cart=[] for item in user_info: item_list=item.split(":") user_dict[item_list[0]]=item_list[-1] print(user_dict) while True: ####用戶部分#### print("輸入1:用戶註冊,輸入2:老用戶登錄,輸入q退出") login_num=input("請選擇: ") if login_num.isdigit(): login_num=int(login_num) if login_num==1: while True: user_1=input("輸入註冊用戶名:") if user_1 in user_dict: ###判斷註冊用戶是否存在,存在則退出當前循環 print("用戶已存在,請重新註冊") continue else: pass_1=input("請設置密碼:") ###設置新用戶密碼 f=open('user.txt','a+') ###將註冊用戶與密碼保存賬戶文件中(a+,追加內容,不會覆蓋原本內容) f.write("#%s:%s"%(user_1,pass_1)) f.close() a1="恭喜,註冊成功" a11=a1.center(20,"-") print(a11) break ####註冊成功,返回初始介面 elif login_num==2: while True: with open('user.txt','r') as f: user_lis2=f.read() user_info2=user_lis2.split("#") user_dict1={} for item1 in user_info2: item_list1 = item1.split(":") user_dict1[item_list1[0]] = item_list1[-1] print(user_dict1) user_2=input("輸入用戶名登錄:") if user_2 in user_dict1: pass_2=input("輸入密碼:") if pass_2 == user_dict[user_2]: a2="登錄成功,歡迎進入" a22=a2.center(20,'-') print(a22) while True: print("選擇a購物/選擇b查詢餘額/選擇c充值/選擇q退出") print("------------------------------------------------") choice_1=str(input("根據提示選擇模式>>>")) if choice_1 =="a": ###購物模式 while True: for index,t in enumerate(product_list):###添加索引 print(index,t) #列印商品 print("------------------------------") print("選擇a查詢購物車、選擇b返回、q退出") user_choice1=input("選擇購買的商品序號或進入其它菜單>>>>>") #選擇購買的商品 if user_choice1.isdigit(): #修整字元類型 user_choice1=int(user_choice1) if 0<=user_choice1<len(product_list): #不在範圍內,表示商品不存在 p_item = product_list[user_choice1] print(p_item) if p_item[1] <=salary: ###判斷餘額 print("您已購買商品") salary -= p_item[1] #減去金額 add_cart.append(p_item) ###加入購物車 show_shopping_log=add_cart.copy() ###拷貝到購物歷史中 print("您已購買 33[31;1m{} 33[0m,餘額還剩 33[31;1m{} 33[0m".format(p_item,salary)) continue else: print('----------已購商品---------') print("-----退出a購物模式------") print(show_shopping_log) break else: print("----------------------------") print("您輸入的商品不存在,請重新購買") elif user_choice1=="a": #####a查詢購物車 print("-----購物車------") print("已購買",show_shopping_log) elif user_choice1 == 'b': ###退出當前模式,並列印已購買商品。 print(" ") print('返回-----已購買商品如下') print(add_cart) break elif user_choice1=='q': ###退出購物 sys.exit() elif choice_1=="b": ###b查看餘額 print("-----還剩 33[31;1m{} 33[0m-----".format(salary)) continue elif choice_1=="c": ##c充值 while True: print("您的餘額不足,是否充值。(充值1/返回b)") salary_11 = input("請確認是否充值:") if salary_11.isdigit(): salary_11 = int(salary_11) if salary_11 == 1: print("------輸入充值金額-------") salary_22 = int(input("充值>>>")) salary += salary_22 print("充值完成後,還剩 33[31;1m{} 33[0m".format(salary)) continue elif salary_11=="b": break elif choice_1=="q": ###退出購物 sys.exit() else: a3="密碼錯誤,請重新輸入" print(a3.ljust(13,"!")) #字元串補位 continue else: a4="用戶不存在,請重新輸入" print(a4.ljust(14,'!')) continue elif login_num=='q': sys.exit()