日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python写的购物车程序

發(fā)布時間:2024/4/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python写的购物车程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
數(shù)據(jù)結(jié)構(gòu): goods = [ {"name": "電腦", "price": 1999}, {"name": "鼠標", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ...... ] 功能要求: 基礎(chǔ)要求: 1、啟動程序后,輸入用戶名密碼后,讓用戶輸入工資,然后打印商品列表 2、允許用戶根據(jù)商品編號購買商品 3、用戶選擇商品后,檢測余額是否夠,夠就直接扣款,不夠就提醒 4、可隨時退出,退出時,打印已購買商品和余額 5、在用戶使用過程中, 關(guān)鍵輸出,如余額,商品已加入購物車等消息,需高亮顯示 擴展需求: 1、用戶下一次登錄后,輸入用戶名密碼,直接回到上次的狀態(tài),即上次消費的余額什么的還是那些,再次登錄可繼續(xù)購買 2、許查詢之前的消費記錄

代碼實現(xiàn): import copy

# 從文件讀取用戶信息,數(shù)據(jù)結(jié)構(gòu)為:
# id_info=dict(key:用戶名,values['密碼',余額,歷史消費記錄[{商品名:價格:數(shù)量:},{}],鎖定標志位:0未鎖定,1鎖定])
f = open("id_info.txt", 'r', encoding="GBK")
id_info = eval(f.read())
f.close()

# -----------------------------------------------用戶登陸模塊-------------------------------------------
# 新用戶登錄,輸入兩遍密碼確認;老用戶登錄則從用戶信息表讀取帳密校驗;同一帳號連續(xù)輸入三次則鎖定,退出程序
count = 0
user_name = None
is_same_user = True
last_login_user = None
is_login = False

while count < 3:
user_name = input("請輸入用戶名:").strip()
user_pwd = input("請輸入密碼:").strip()

if last_login_user is None: # 首次登陸
last_login_user = user_name

if user_name != last_login_user: # 判斷是否連續(xù)登陸
is_same_user = False

if user_name in id_info:
if id_info[user_name][3] == 0: # 判斷帳號是否鎖定
if user_pwd == id_info[user_name][0]:
print("尊敬的\033[1;31;40m%s\033[0m,歡迎登陸路飛商城!" % user_name)
is_login = True
break
else:
print("密碼錯誤,請重輸!")
else:
print("用戶帳號已凍結(jié),請聯(lián)系管理員解鎖。")
else:
print("該用戶帳號不存在,請聯(lián)系管理員分配帳號!")
count += 1
else:
print("密碼輸入錯誤超過3次!")
if is_same_user is True: # 鎖定帳號,寫入文件保存
id_info[user_name][3] = 1
f = open("id_info.txt", 'w', encoding="GBK")
f.write(str(id_info))
f.close()

# ---------------------------------------------用戶選購商品模塊-------------------------------------------
# 支持保存和查詢?nèi)繗v史消費記錄,當天購物車清單,同時對展示的同類商品進行了數(shù)量合并
goods = [{"name": "電腦", "price": 1999}, {"name": "鼠標", "price": 10}, {"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]

cart_history = id_info[user_name][2] # 讀取文件傳給id_info的歷史購物記錄

# 初始化本次購物車商品列表,用于按q打印時輸出
cart = []
j = 0
while j < len(goods):
cart.append({})
j += 1

# 定義打印菜單所需的字符串
s = "商品列表"
s_c = "本次購物車清單"
s_h = "歷史消費記錄"

if is_login:
while True:
if id_info[user_name][1] is None: # 未輸入工資的用戶,首次運行程序輸入,以后登陸不再輸入工資
user_salary = input("請輸入工資:").strip()
if user_salary.isdigit():
id_info[user_name][1] = int(user_salary)
break
else:
print("工資輸入的不是數(shù)字,請重輸!")
else:
break

# 用戶往購物車循環(huán)添加商品,加入的商品需同時保存到歷史記錄,退出時寫入文件保存
while True:
# 打印商品列表和高亮顯示余額
print(s.center(30, '-'))
for index, i in enumerate(goods):
print("%s. %s 單價:%s元".center(30) % (index, i['name'], i['price']))
print("您賬戶余額為: \033[1;31;40m%d\033[0m 元".center(38, '-') % id_info[user_name][1])

choice = input("請輸入商品數(shù)字編號加入購物車,\n查詢歷史消費記錄按h,退出請按q:")
if choice.isdigit():
choice_num = int(choice)
if 0 <= choice_num < len(goods):
if id_info[user_name][1] >= goods[choice_num]['price']: # 余額足夠
# 本次購物車無同種商品,則增加關(guān)鍵字num統(tǒng)計同種商品的購買數(shù)量
if cart[choice_num].get('num') is None:
cart[choice_num] = goods[choice_num]
cart[choice_num].setdefault('num', 1)
id_info[user_name][1] -= goods[choice_num]['price']
else:
cart[choice_num]['num'] += 1 # 如購物車已有同名商品則已購數(shù)量加1
id_info[user_name][1] -= goods[choice_num]['price']

# 歷史購物記錄同時加入本次購物記錄
if cart_history[choice_num].get('num') is None:
cart_history[choice_num] = copy.deepcopy(goods[choice_num])
cart_history[choice_num].setdefault('num', 1)
else:
cart_history[choice_num]['num'] += 1 # 如歷史記錄已有同名商品則已購數(shù)量加1
print("\033[1;31;40m商品 %s 已加入購物車!\033[0m" % goods[choice_num]['name'])
else:
print("對不起,您賬戶中\(zhòng)033[1;31;40m余額不足\033[0m,不能購買本件商品!") # 余額不足
else:
print("您輸入的商品數(shù)字編號有誤,請重新輸入:")

# 用戶輸入h,打印全部歷史消費清單和余額,含當天已消費的商品
elif choice.casefold() == 'h':
empty_num = 4
print(s_h.center(30, '-'))
for index, i in enumerate(cart_history):
if i != {}:
empty_num -= 1
print("%s. %s 單價:%d元 數(shù)量:%d" % (index, i['name'], i['price'], i['num']))
if empty_num == 4:
print("您還沒有任何歷史消費記錄,歡迎撥打客服\n電話反饋您的商品需求,謝謝!")
print("您賬戶余額為: \033[1;31;40m%d\033[0m 元".center(38, '-') % id_info[user_name][1])

# 用戶輸入q,打印本次購物車清單和余額,退出程序
elif choice.casefold() == 'q':
empty_num = 4
print(s_c.center(30, '-'))
for index, i in enumerate(cart):
if i != {}:
empty_num -= 1
print("%s. %s 單價:%d元 數(shù)量:%d" % (index, i['name'], i['price'], i['num']))
if empty_num == 4:
print("今天您還沒有購買商品,購物車是空的。")
print("您賬戶余額為: \033[1;31;40m%d\033[0m 元".center(38, '-') % id_info[user_name][1])

# 退出前將歷史消費記錄和余額保存到文件中
id_info[user_name][2] = copy.deepcopy(cart_history)
f = open("id_info.txt", 'w', encoding="GBK")
f.write(str(id_info))
f.close()
break
else:
print("您輸入的不是數(shù)字編號!")

轉(zhuǎn)載于:https://www.cnblogs.com/eric99/p/10000136.html

總結(jié)

以上是生活随笔為你收集整理的python写的购物车程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。