---
1、啟動程式後,輸入使用者名稱密碼後,如果是第一次登入,讓使用者輸入工資,然後列印商品列表
2、允許使用者根據商品編號購買商品
3、使用者選擇商品後,檢測餘額是否夠,夠就直接扣款,不夠就提醒
4、可隨時退出,退出時,列印已購買商品和餘額
5、在使用者使用過程中, 關鍵輸出,如餘額,商品已加入購物車等訊息,需高亮顯示
6、使用者下一次登入後,輸入使用者名稱密碼,直接回到上次的狀態,即上次消費的餘額什麼的還是那些,再次登入可繼續購買
7、允許查詢之前的消費記錄
main.py
import judgment_user
def main():
with open("user.txt","r",encoding="utf-8") as f:#獲取user.txt內容
user_info = f.read() # 顯示文字內容
#print(user_info)
user_list = user_info.split() # 加入列表
#print(user_list)
user_dic = {} # 定義空字典
for itme in user_list: # 迴圈user_list列表
user_list = itme.split("-") # 擷取-
#print(user_list)
user_dic[user_list[0]] = user_list[1] # 把文字中的內容擷取----後加入字典
#print(user_dic)
count = 0 # count從0開始
while count < 3:
username = input("\033[38;1m請輸入使用者名稱-->>\033[0m:")
if username in user_dic: #判斷username是否在字典中
#r+為讀寫模式
with open("lock.txt", "r+", encoding="utf-8") as f:
lock_info = f.read()
lock_list = lock_info.split() #擷取文字中的空格
if username in lock_list: # 判斷輸入的使用者是否在被鎖定檔案中
else:
password = input("\033[38;1m請輸入密碼-->>\033[0m:")
#print(user_dic)
if password == user_dic[username]:#判斷字典中帳號密碼是否正確
print("%s:\033[36;1m登入成功!\033[0m"%username)
judgment_user.mkdir(username)
exit()
else:
count +=1 #密碼每次錯誤數量加1
if count==3: #錯誤3次帳號鎖定
f.write('\n'+username)
print("\033[31;1m密碼錯誤3次,帳號已被鎖定\033[0m")
else:
print("\033[31;1m密碼錯誤,還可以再試%s次\033[0m"%(3-count))
else:
print("\033[31;1m使用者名稱輸入錯誤!\033[0m")
if __name__ == '__main__':
main()
judgment_user.py
import shoppingcart
def mkdir(path):
'判斷是否是第一次登入'
# 引入模組
import os
# 去除首位空格
# path = path.strip()
# 去除尾部 \ 符號
# path = path.rstrip("\\")
# 判斷路徑是否存在
# 存在 true
# 不存在 false
i***ists = os.path.exists(path)
# 判斷結果
if not i***ists:
# 如果不存在則建立目錄
print(path + ' 使用者第一次登陸')
salary = input("請輸入工資:")
# 建立目錄操作函式
os.makedirs(path)
shoppingcart.shoppingcart(path, salary)
return true
else:
# 如果目錄存在則不建立,並提示目錄已存在
print(path + ' 使用者已登陸過')
choose = input("\033[36;1m 是否查詢之前消費記錄(查詢請輸入y,不查詢任意鍵)-->> \033[0m:")
shoppingcart.query_the_records(choose, path)
with open('./' + path + "/salary.txt", "r+", encoding="utf-8") as f:
salary = f.read()
print("餘額剩餘:", salary)
shoppingcart.shoppingcart(path, salary)
return false
shopppingcart.py
#本模組包換購物車主體函式、購物記錄查詢函式
def shoppingcart(username,salary):
' 購物車主體函式 '
# salary = input("請輸入工資:")
product_list = [
('iphone',5800),
('mac',9800),
('bike',800),
('watch',5800),
('coffee',31),
('alex',100)
]shopping_list =
if salary.isdigit() :
salary = int(salary)
while true:
for item in product_list:
print(product_list.index(item),item)
user_choice = input("選擇要買嗎,輸入q退出》:")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice < len(product_list) and user_choice >= 0:
p_item = product_list[user_choice]
if p_item[1] <= salary:
# print(shopping_list, "\033[36;1放入購物車成功!\033[0m")
salary -=p_item[1]
print("\033[36;1m added %s into shopping cart ,your current balance is %s \033[0m" %(p_item,salary))
else:
print("\033[41;1m 你的餘額只剩[%s] \033[0m" %salary)
else:
print("product code [%s] is not exist!" %user_choice)
elif user_choice == 'q':
print('------shoping list------')
for p in shopping_list:
with open('./' + username + "/recording.txt", "a+", encoding="utf-8") as f:
p = str(p)
f.write(p+'\n')
print(p)
with open('./' + username + "/salary.txt", "w+", encoding="utf-8") as f:
salary = str(salary)
f.write(salary)
print("your current balance:", salary)
exit()
else:
print("invalid option")
def query_the_records(choose,username):
'購物車記錄查詢'
if choose == 'y':
with open('./' + username + "/recording.txt", "r", encoding="utf-8") as f:
recording = f.read() # 顯示文字內容
print(recording)
else:
pass
github專案位址
Python基礎練習之購物車
前置知識點 enumerate list 輸出乙個元組,第乙個為下標,第二個為元素 a 1,2,3,4 for i in enumerate a print i 0,1 1,2 2,3 3,4 for i,item in enumerate a print i,item 0 1 1 22 3 3 4...
python之購物車
下面是我們這個程式的框架 下面說一些 中比較難理解的 下面這個自己領會就好啦,本人不多做介紹 a if not a print a列表為空的 else print a列表不為空 下面主要介紹一下index這個函式,index在英語中是索引的意思,在這裡也一樣,它是用來看看某個值在列表中的索引是多少,...
Python購物車小程式
問題描述 商店有一系列商品,給出購買序列,然後輸入你的金額,然後選擇要購買的商品序號或是退出,如果持續購買餘額不足則提醒使用者餘額不足,然後如果使用者退出則列印使用者購買的商品列表,並列印使用者餘額。購物車程式 product list mac 9000 kindle 8000 tesla 9000...