一、三级菜单程序:
要求:
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] != {}: #这个区有镇 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) #打印该镇的公司名 break #返回省/直辖市那一层让用户继续输入 else: #镇下面没有公司 print(‘该镇没有大公司‘) break #返回省/直辖市那一层让用户继续输入 elif town_input == ‘b‘: continue #在选择镇名的时候输入了“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 = True if 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(‘用户名或密码错误,请重新输入‘)