1. 程式人生 > >python--------三級菜單以及購物車實現

python--------三級菜單以及購物車實現

[0 info book 循環 創建 作用 true 合並 goods

三級菜單實現以及細節講解

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:馮海猛
area ={                                   #創建一個字典分別定義多個省,市,縣
    "河北":{
        "承德":{
            "隆化":{
                "縣醫院":{},
                "苔山公園":{},
                "景怡酒店":{}
            },
            "圍場":{
                
"酒吧":{}, "ktv":{}, "戰旗燒烤":{} } }, "石家莊":{ "深澤":{ "廟會":{}, "遊樂園":{}, "購物城":{} } } }, "北京":{ "海澱":{ "航天橋":{ "北大青鳥":{},
"跆拳道館":{}, } }, "朝陽":{ "安貞門":{ "中科威榮公司":{}, "速8酒店":{}, "世紀嘉園小區":{} }, "北土城":{ "如家酒店":{}, "家常菜":{} } } }, "山西":{ "太原":{
"晉源區":{ "義井街道":{}, "花果山":{}, "政府":{} } }, "呂梁":{ "柳林":{ "宏傑集團":{}, "宏傑地產":{}, "宏傑代理商":{} } } } } print(‘‘‘ ------------------------------------------------------ |\033[46;1m可以在任意菜單輸入‘q‘返回上一級,輸入‘exit‘退出\033[0m| #打印提示信息告訴用戶,q是返回上一級,exit是退出 ------------------------------------------------------ ‘‘‘) while True: #進入第一個循環 for i in area: print(i)                                        #打印字典裏第一層就是剛剛定義好的省 info1 = input("\033[32;1m請選擇省>>>\033[0m").strip()                 #讓用戶選擇,.strip是把用戶輸入的空格去掉 if info1 == exit:                                     #開始判斷用戶的輸入,如果輸入的是exit就直接退出程序 exit() elif info1 == q:                                      #如果輸入的q告訴用戶已經在頂級 print("\033[31;1m您已經在頂級了\033[0m") continue                                          #跳出本次循環 if info1 in area:                                        #判斷用戶輸入的是不是在字典裏,不在就顯示輸入的地區或指令不存在 while True: #如果在就進入第二個循環 for a in area[info1]:                                 #打印出用戶選擇省裏面的市 print(a) info2 = input("\033[32;1m請選擇市>>>\033[0m").strip()               #讓用戶選擇要查看的市 if info2 == q:                                    #如果用戶輸入的是q就跳出本層循環,返回上一層,讓用戶在重新選擇省 break elif info2 == exit:                                  #如果用戶輸入的是exit就退出本程序 exit() if info2 in area[info1]:                                 #判斷如果用戶輸入的市在用戶輸入的省裏就執行以下代碼,如果不在就提示用戶輸入的地區或者指令不存在 while True:                                      #進入第三個循環 for b in area[info1][info2]:                          #打印用戶選擇的省下的市下面的縣 print(b) info3 = input("\033[32;1m請選擇縣>>>\033[0m").strip() #讓用戶選擇縣 if info3 == exit: #判斷用戶數輸入,如果用戶輸入的是exit就退出本程序 exit() elif info3 == q:                                #如果用戶輸入的是q就跳出本層循環,讓用戶重新輸入市 break if info3 in area[info1][info2]:                        #判斷用戶輸入的縣是否在用戶選擇的省下的市下面,如果在就執行以下代碼,不在就提示用戶輸入的指令或者地區不存在 while True:                                  #進去最後一個循環 for c in area[info1][info2][info3]:                 #打印用戶選擇的省下的市下的縣下的公司或者酒店等 print(c) info4 = input("\033[32;1mexit退出,q返回上一級>>>\033[0m")      #讓用戶輸入,提示exit是退出,q是返回上一層 if info4 == exit: exit() elif info4 == q: break else: print("\033[31;1m請輸入指定的指令\033[0m") else: print("\033[31;1m您輸入的地區或指令不存在\033[0m") else: print("\033[31;1m您輸入的地區或指令不存在\033[0m") else: print("\033[31;1m您輸入的地區或指令不存在\033[0m")

購物車實現以及細節講解

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:馮海猛
List_of_goods =[                                                    #創建一個列表,定義好成品名稱以及商品的價格
    ["iPhone",5000],
    ["computer",3000],
    ["book",120],
    ["watch",500],
    ["bicycle",1500]
]
shopping =[]                                  #創建一個新列表,作用是用戶買的東西都放在這個列表裏面
count = 0                                    #count =0 代表一個計數器,當count = 3 時會自動退出程序
with open(db.txt,w) as f:                        #創建一個db.txt,w表示如果沒有這個文件就創建一個,如果有就覆蓋存到一個別名f,open是打開文件,with是自動關閉文件
    f.write("admin|123")                           #在文件裏面定義好用戶名密碼,以|分隔。
while True:                                   #進入循環
    user_name = input("用戶名>>").strip()                  #讓用戶輸入用戶名密碼,把值存起來,去除用戶輸入的空格
    user_password = input("密碼>>").strip()
    with open("db.txt","r") as f:                      #以r的模式打開db.txt這個文件別名為f
        data = f.read().split("|")                      #把f讀出來的值以‘|’分隔成列表,保存到data裏面
    if user_name == data[0] and user_password == data[1]:        #判斷用戶輸入的用戶名密碼是不是在data這個列表裏面
        print("歡迎%s登錄"%user_name)                      #如果在就打印歡迎信息,然後執行以下代碼。
        while True:                                #進入循環
            wage = input("輸入工資>>>").strip()                #讓用戶輸入工資並去掉空格
            if wage == q:                            #如果用戶輸入的是q就提示什麽也沒買,然後直接退出
                print("\033[34;1m啥也沒買\033[0m")
                exit()
            if wage.isdigit():                          #如果用戶輸入的是數字就轉換數劇類型成int
                wage = int(wage)
            else:
                print("\033[31;1m請輸入工資.....‘q‘是退出\033[0m")      #如果用戶輸入的是其他,提示用戶輸入工資,再次讓用戶重新輸入
                continue
            while True:                               #再次進入循環
                print("\033[33;1m商品列表\033[0m".center(50,"-"))        
                for index,i in enumerate(List_of_goods):            #打印商品列表以及下標
                    print(index,i)
                numbering = input("請選擇要購買的產品編號>>>").strip()      #讓用戶輸入商品的編號並去除空格
                if numbering == q:                        #如果用戶輸入的是q就打印以經購買的商品和余額並退出程序
                    print("\033[34;1m您購買了以下商品,余額還剩%s元\033[0m".center(50,"-")%wage)
                    for a in shopping:
                        print(a)
                    exit()
                if numbering.isdigit():                                      #如果用戶輸入的是數字,就給轉換數據類型成int
                    numbering = int(numbering)
                    if numbering >= 0 and numbering < len(List_of_goods):     #在判斷用書輸入的值是不是在列表商品長度範圍內
                        itme = List_of_goods[numbering]                        #如果在就把列表裏面用戶輸入的編號保存到itme中
                        if itme[1] <= wage:                                     #如果商品的價格小於或者等於用戶的工資,就把商品加入到新建的購物車中
                            shopping.append(itme)
                            wage -= itme[1]                                      #扣除用戶的工資,打印成功購買以及還剩下的余額
                            print("\033[32;1m你以成功購買%s,已經加入購物車。您的余額還剩%s\033[0m"%(itme,wage))
                        else:
                            print("\033[31;1m余額不足,您只有%s元了\033[0m"%wage)    #如果大於工資就顯示余額不足,打印余額
                    else:
                        print("\033[31;1m對不起沒有此編號產品\033[0m")               #如果用戶輸入的值不在列表長度的範圍內,就顯示沒有此產品
                else:
                    print("\033[31;1m請輸入編號。如:1,2,3....‘q‘是退出\033[0m")     #如果用戶輸入的不是數字就顯示輸入產品的編號
    else:
        print("\033[31;1m用戶名或密碼錯誤\033[0m")                    #如果用戶名密碼不在db的文件裏面顯示密碼錯誤
        count += 1                                      #接著count +1
        if count == 3:                                     #如果錯誤三次顯示錯誤次數太多,直接退出程序
            print("\033[31;1m錯誤次數較多,程序以退出\033[0m")
            exit()

列表常用操作語法

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:馮海猛
names = [ghj,fhm,gwd,fhm,ydh]
print(names)

#print(names[0],names[2])#查找
#print(names[0:2])#查找
#print(names.index(‘fhm‘))#返回你所查找值得位置

#names.append(‘yjh‘)#把值追加到後面
#names.insert(1,‘yxl‘)#把值出入到指定位置

#names[1] = ‘FHM‘#更改裏面的值

names1 = [1,2,3]
#names.extend(names1)#擴展把另外的表和現在這個表合並

#names.remove("fhm")#根據值得名字刪除
#del names[0]#根據下標刪除
#names.pop(1)#不輸入值默認刪最後一個

#print(names.count(‘fhm‘))#統計列表有幾個相同的值

#names.clear()#清空表

#names.reverse()#把表裏的值反過來

#names.sort()#排序
print(names)

python--------三級菜單以及購物車實現