python--------三级菜单以及购物车实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--------三级菜单以及购物车实现相关的知识,希望对你有一定的参考价值。

三级菜单实现以及细节讲解

 

# !/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--------三级菜单以及购物车实现的主要内容,如果未能解决你的问题,请参考以下文章

python-三级菜单和购物车程序代码(补发)

三级菜单和购物车

三级菜单模拟登陆购物车等作业

三级菜单购物车程序(自写,待优化)

Day3.三级菜单+购物车打印格式优化

(转)Python字典实现三级菜单