三级菜单
要求:
打印省、市、县三级菜单
可返回上一级
可随时退出程序
data={'黑龙江省':{'哈尔滨':['尚志县','南山县','北山县','东山县','西山县'],\ '大庆':['萨尔图区','东西县','南北先'],\ '齐齐哈尔':['通州县','朝阳县','西城县','昌平县']},\ '山西省':{'太原':['到','此','结','束'],\ '大同':['某县','丰台县','漳州县','灵境县','莘庄县']},\ '河北省':{'邯郸市':['广平县','魏县','衢州县','成安县','大明县'],\ '石家庄':['天真县','浪漫县','前列县','侄女县','乐吧县']} } while True: count = True for i in data.keys(): print(i) user_info = input('\n"q"退出程序\n输入省 >> ').strip() if user_info=='q':exit() if user_info in data.keys(): abc=data[user_info].keys() while count: print(list(abc)) users_info = input("\n'q'退出程序,'r'返回上一级\n输入需要查询的市 >> ").strip() if users_info=='q':exit() if users_info in data[user_info]: print(data[user_info][users_info]) sur=input('\n返回上一级"y",任意键退出 # ') if sur == 'y':continue else:exit() elif users_info == 'r': count=False continue else:print('请输入正确的城市名 \n') else: print('请输入正确的城省名\n')
垃圾版购物车
用户名和密码存放于文件中,格式为:XXX|XXX;
启动程序后,先登录;失败则重新登录,超过三次则锁定此用户;
登录成功则让用户输入工资,然后打印商品列表;
用户根据商品编号购买商品,选择购买数量;
用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒;
可随时退出,退出时,打印已购买商品和余额。
#!/usr/bin/env python #coding:utf-8 #需在脚本同目录下创建pass文件,用于存放登陆的用户名密码 例: tcc|cc123 #再在同目录下创建user空文件,用于存放锁定用户 login_record={} with open('pass','r') as f: for line in f: u,p=line.strip().split('|') login_record[u]=({'p':p,'count':0}) us1=open('user','r') balck_name=us1.read() us1.close() trade_name=[ ['iphone X ', 8358], ['mac bookpro', 13588], ['huiwei X' , 4300], ['audi' , 1340000], ['LV' , 35000], ['fgj A' , 880], ['LinuxBook' , 99],] trade_list=[] while True: user_name=input('用户名 > ').strip() if not user_name:continue if user_name in balck_name: print('The account!') break elif not user_name in login_record: print('Without this user\n') continue if user_name in login_record : user_pass = input('密码 > ') if user_pass == login_record[user_name]['p']: while True: user_money=input('您的本金 > ').strip() if user_money.isdigit(): user_money=int(user_money) break else:print('请正确输入金额!') ze = user_money while user_money > 0: count=True print('欢迎来到CC商场'.center(30,'~')) for key,vl in enumerate(trade_name,1): print (key,'{0}\t:\t{1}'.format(vl[0],vl[1])) print('出售中的商品'.center(30, '~')) user_in=input('\n输入购买商品的序号,"q"退出 > ').strip() if not user_in:continue if len(trade_list)==0 and user_in=='q': print('为购买任何商品,欢迎下次光临!!!') exit() if user_in.isdigit() and len(user_in)==1 and int(user_in)<=len(trade_name): user_in=int(user_in)-1 user_trade = trade_name[user_in] while count: u_trade_num = input('\n(返回请按"r") 数量 > ').strip() if u_trade_num.isdigit(): trade_price = trade_name[user_in][1] * int(u_trade_num) while count: if user_money >= trade_price: user_money = user_money - trade_price trade_list.append([user_trade[0],user_trade[1],u_trade_num,user_money]) print('\n购买商品\t:\t{c} \n购买数量\t:\t{n} \n剩余余额\t:\t{m}\n'\ .format(c=user_trade[0],n=u_trade_num,m=user_money)) count=False continue else: print('\n余额%s!不够消费此商品!\n'%user_money) count=False continue elif u_trade_num == 'r':break else: print('\n请正确输入您购买的数量!\n') elif user_in in 'q': t_num=len(trade_list)-1 for i in trade_list[::1]: print('以购商品:{c}\n购买单价:{m}\n购买数量:{n}\n'\ .format(c=i[0],m=i[1],n=i[2])) total=ze - trade_list[t_num][3] print('共计消费:%s'%total) print('剩余金额:%s'%trade_list[t_num][3]) print('欢迎下次光临!'),exit() else: print('\n请输入正确的序号!\n') else: print('别玩了,没钱了!') else: login_record[user_name]['count']+=1 print('用户名或密码错误') if login_record[user_name]['count'] > 3: print('超过最大次数,请联系管理员') record = open('user', 'a') record.write('%s\t' %user_name) record.close() exit()
流程图:
图片链接