【18】Python半成品購物車

#!/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()