Python3實(shí)現(xiàn)購(gòu)物車功能
本文實(shí)例為大家分享了Python3實(shí)現(xiàn)購(gòu)物車功能的具體代碼,供大家參考,具體內(nèi)容如下
購(gòu)物車要求:
1、啟動(dòng)程序后,輸入用戶名密碼后,如果是第一次登錄,讓用戶輸入工資,然后打印商品列表
2、允許用戶根據(jù)商品編號(hào)購(gòu)買商品
3、用戶選擇商品后,檢測(cè)余額是否夠,夠就直接扣款,不夠就提醒
4、可隨時(shí)退出,退出時(shí),打印已購(gòu)買商品和余額
5、在用戶使用過程中, 關(guān)鍵輸出,如余額,商品已加入購(gòu)物車等消息,需高亮顯示
6、用戶下一次登錄后,輸入用戶名密碼,直接回到上次的狀態(tài),即上次消費(fèi)的余額什么的還是那些,再次登錄可繼續(xù)購(gòu)買
7、允許查詢之前的消費(fèi)記錄
邏輯圖:
執(zhí)行代碼:
#!/usr/bin/env python3 # Author: Robert # --*-- coding: utf-8 --*-- set = False #設(shè)置set 當(dāng)輸入為q就可以退出 file = open("購(gòu)物車用戶信息檔案.txt","r+",encoding="utf-8") #讀取購(gòu)物車用戶信息文件 f = str(file.read()) #將文件內(nèi)容轉(zhuǎn)化成字符串 for line in f: file_str = str(f) data = eval(file_str) #將字符串轉(zhuǎn)換為字典data name = input("輸入姓名:") password = input("輸入密碼:") while True: if name in data: #用戶在檔案中 if password in data[name]: #密碼和用戶名對(duì)應(yīng),校驗(yàn)正確,登錄。 salary = float(data[name][password]) print('''\033[32;1m歡迎登錄,當(dāng)前余額為%s\033[0m'''%salary) break else: #否則密碼錯(cuò)誤,請(qǐng)重新輸入 password = input("密碼錯(cuò)誤,請(qǐng)重新輸入:") continue else: #否則判斷為首次登錄,將用戶名,密碼,工資存到用戶信息文件中 password_salary = {} salary_str = input("歡迎首次登錄,請(qǐng)輸入你的工資:") salary = float(salary_str) password_salary[password] = salary #工資對(duì)應(yīng)到密碼 data[name] = password_salary #將密碼-工資對(duì)應(yīng)到用戶名 file.seek(0) file.write(str(data)) file.tell() break list = [#購(gòu)物清單 ["iphone",5800], ["sifei",800], ["macbook",17500], ["book",75], ["apple",5] ] file_list_r = open("歷史購(gòu)物信息.txt","r+",encoding="utf-8") file_list_r = str(file_list_r.read()) shoppinglist_dict = eval(file_list_r) if name not in shoppinglist_dict: shoppinglist_dict[name] = [] shoppinglist = shoppinglist_dict[name] shoppinglist_dict_now = [] choose = input("\n是否需要查詢歷史購(gòu)物記錄(y/n):") if choose == 'y': print("\n\n---------->歷史購(gòu)物記錄<----------") print(shoppinglist) print("---------->結(jié)束<----------") while not set: #購(gòu)物車開始 print("---------->商品清單<----------") for index,item in enumerate(list,1): print(index,item) print("---------->結(jié)束<----------") number = input("請(qǐng)輸入想購(gòu)買商品編號(hào):") if number == "q": set = True data[name][password] = str(salary) file.seek(0) file.write(str(data)) file.tell() print("---------->購(gòu)物清單<----------") print(shoppinglist) print("您的余額:",salary) print("---------->結(jié)束<----------") shoppinglist.extend(shoppinglist) shoppinglist_dict[name] = shoppinglist elif number.isdigit() == False: print("\033[31;1m輸入不是編號(hào)內(nèi)容,請(qǐng)重新輸入\033[0m") elif int(number)>int(len(list)) or int(number)<= 0: #輸入值不在清單中,報(bào)錯(cuò) print("\033[31;1m您所購(gòu)買的商品不在清單中\(zhòng)033[0m") else: number_buy = int(number)-1 if list[number_buy][1]<(salary): #如果余額足夠,提示購(gòu)買成功并顯示余額。 salary = salary - int(list[number_buy][1]) msg = '\033[32;1m您已經(jīng)將%s加入購(gòu)物車中,余額為%d\033[0m'%(list[number_buy][0],salary) print(msg) shoppinglist.append(list[number_buy]) #將本次購(gòu)物信息加到購(gòu)買記錄中 else: print("\033[31;1m余額不足,無法購(gòu)買!\033[0m") #提示余額不足
購(gòu)物車用戶信息檔案.txt
{'name': {'password': '10000'}, 'cx': {'123': '725.0'}, 'robert': {'qw': '440.0'}, 'cv1': {'1': 100.5}, 'ROBERT': {'QW': 1560.0}, 'qwe': {'qw': '1555.0'}}
歷史購(gòu)物信息.txt
{'name': [['iphone', 5800],['bike', 800]], 'cx':[['iphone', 5800],['apple', 5],['apple', 5], ['book', 75]]}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Python的Django框架結(jié)合jQuery實(shí)現(xiàn)AJAX購(gòu)物車頁(yè)面
- Python實(shí)現(xiàn)的購(gòu)物車功能示例
- python簡(jiǎn)單商城購(gòu)物車實(shí)例代碼
- Python實(shí)現(xiàn)購(gòu)物車程序
- python購(gòu)物車程序簡(jiǎn)單代碼
- Python 模擬購(gòu)物車的實(shí)例講解
- Python實(shí)現(xiàn)購(gòu)物車購(gòu)物小程序
- Python初學(xué)時(shí)購(gòu)物車程序練習(xí)實(shí)例(推薦)
- Python實(shí)現(xiàn)購(gòu)物車功能的方法分析
- python實(shí)現(xiàn)購(gòu)物車功能
相關(guān)文章
使用Django2快速開發(fā)Web項(xiàng)目的詳細(xì)步驟
這篇文章主要介紹了使用Django2快速開發(fā)Web項(xiàng)目的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Python過濾函數(shù)filter()使用自定義函數(shù)過濾序列實(shí)例
這篇文章主要介紹了Python過濾函數(shù)filter()使用自定義函數(shù)過濾序列實(shí)例,配合自定義函數(shù)可以實(shí)現(xiàn)許多強(qiáng)大的功能,需要的朋友可以參考下2014-08-08Python xpath表達(dá)式如何實(shí)現(xiàn)數(shù)據(jù)處理
這篇文章主要介紹了Python xpath表達(dá)式如何實(shí)現(xiàn)數(shù)據(jù)處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06pycharm配置anaconda環(huán)境時(shí)找不到python.exe解決辦法
今天來說一下python中一個(gè)管理包很好用的工具anaconda,可以輕松實(shí)現(xiàn)python中各種包的管理,這篇文章主要給大家介紹了關(guān)于pycharm配置anaconda環(huán)境時(shí)找不到python.exe的解決辦法,需要的朋友可以參考下2023-10-10Python內(nèi)置數(shù)據(jù)類型中的集合詳解
這篇文章主要為大家詳細(xì)介紹了Python內(nèi)置數(shù)據(jù)類型中的集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03python相對(duì)包導(dǎo)入報(bào)“Attempted?relative?import?in?non-package”錯(cuò)誤
這篇文章主要介紹了python相對(duì)包導(dǎo)入報(bào)“Attempted?relative?import?in?non-package”錯(cuò)誤,本文要在原理上解決?python當(dāng)中相對(duì)包導(dǎo)入出現(xiàn)的問題,需要的朋友可以參考下2023-02-02