一、三级菜单程序:
要求:
1. 可依次进入各子菜单
2.可从任意一层往回退到上一层
3. 可从任意一层退出程序
各级菜单详情见代码:
menu = {'北京':{'海淀':{'五道口':{'soho':{},'网易':{},'google':{}},'中关村':{'爱奇艺':{},'汽车之家':{},'youku':{},},'上地':{'百度':{},},},'昌平':{'沙河':{'老男孩':{},'北航':{},},'天通苑':{},'回龙观':{},},'朝阳':{},'东城':{},},'上海':{'闵行':{"人民广场":{'炸鸡店':{}}},'闸北':{'火车战':{'携程':{}}},'浦东':{},},'山东':{}, }exit_flag = False #标识符 while not exit_flag: #循环,能够让用户持续选择省/直辖市print('北京,上海,山东')province_input = input("请输入您要查询的省份/直辖市:")if province_input in menu: #在选择省/直辖市的时候输入了正确的省名if menu[province_input] != {}: #这个省下面有市/区while not exit_flag: #循环, 能够让用户从镇返回到区进行选择for i in menu[province_input]:print(i) #把直辖市下面的区都打印出来供用户选择district_input = input('请输入您要查的区:')if district_input in menu[province_input]: #选择区的时候输入了正确的区名if menu[province_input][district_input] != {}: #这个区有镇while not exit_flag:for i in menu[province_input][district_input]:print(i) #打印区里面的镇供用户选择town_input = input('请输入您要查询的镇:')if town_input in menu[province_input][district_input]: #选择镇的时候输入了正确的镇名if menu[province_input][district_input][town_input] != {}: #这个镇有公司print('该地区的公司有:')for i in menu[province_input][district_input][town_input]:print(i) #打印该镇的公司名else: #镇下面没有公司print('该镇没有大公司') elif town_input == 'b':break #在选择镇名的时候输入了“b”,返回上一层选择区elif town_input == 'q':exit_flag = True #选择镇的时候输“q”退出else: #区下面没有镇print('该区没有大公司')break #返回省/直辖市那一层让用户继续输入elif district_input == 'b':break #选择区的时候输入了“b”,返回上一层的选择省/直辖市elif district_input == 'q':exit_flag = True #选择区的时候输“q”退出else:print('该省没有大公司') #省/直辖市下面没有区elif province_input =='b':continue # 选择省/直辖市的时候输“b”返回上一层elif province_input == 'q':exit_flag = True #选择省/直辖市的时候输“q”退出
二、购物车程序:
要求:
1. 启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
2. 允许用户根据商品编号购买商品
3. 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒
4. 可随时退出,退出时,打印已购买商品和余额
# 系统储存的用户名密码信息: user_info = { 'Mike':'abc123', 'Alice':'456' ,'Neo':'789'}goods = [{'name': '电脑', 'price': 1999}, {'name': '鼠标', 'price': 10}, {'name': '游艇', 'price': 20},{'name': '美女', 'price': 998}]exit_flag = False #设立标识符 while not exit_flag: # 循环,用户名密码错误之后能够让用户再次输入 name_input = input('请输入用户名:')password_input = input('请输入密码:')'''判断用户名、密码是否正确用户名、密码正确则登录'''if password_input == user_info.get(name_input):print('登录成功!')# 登录成功后让用户输入工资:salary_input = int(input('请输入您的工资:'))# 输入工资后打印商品列表print('---------商品列表---------')for k, i in enumerate(goods):print('%s. %s price:%s' % (k, i['name'], i['price']))# 定义一个购物车为空列表cart = []'''用户输入有2种情况:1.用户输入数字:如果输入的数字是商品编码,则把相应的商品添加到购物车; 如果输入的数字不是商品编码,则提示“商品编码错误”信息;2.输入字母“q”则退出。'''while not exit_flag: # 循环,让用户可以持续添加商品编码product_choice = input('请输入您要购买的商品编号:')# 第1中情况:用户输入的是数字if product_choice.isdigit():choice = int(product_choice)# 输入数字在商品编码范围之内if choice >= 0 and choice < len(goods):'''输入正确的商品编码后,去判断工资余额是否足够买这个商品,余额足够就把所选的商品添加到购物车cart列表中,并从余额中扣除相应的价格,打印“商品已添加到购物车”和所剩余额信息。 '''if salary_input >= goods[choice]['price']:cart.append(goods[choice])print('商品:%s 已被添加到购物车' % (goods[choice]['name']))salary_input -= goods[choice]['price']# 余额不足以购买所选购的商品else:print('余额不足!')# 输入数字不在商品编码之内,打印“商品编码错误”信息else:print('商品不存在 ')# 用户输入的是字母“q”elif product_choice == 'q':exit_flag = Trueif len(cart) > 0: # 购物车不为空时打印商品清单print('---------您已购买的商品清单---------')# 循环打印购物车列表cart中的信息for index, i in enumerate(cart):print('%s. %s price:%s' % (index, i['name'], i['price'])) print('账户余额', salary_input) # 打印余额信息。 # 用户名、密码错误,打印“用户名密码错误”并重新输入else:print('用户名或密码错误,请重新输入')