999-Python-练习题
1、登录接口练习题
1 Readme = open('Readme.txt,'w') 2 3 Readme.write('''该代码为登录系统的小Demo,还有很多不完善的地方。 4 主要功能如下: 5 登录成功,打印欢迎消息;失败三次,锁定用户(目前只能锁定第三次输入错误的账户,未能实现同一账户输入错误三次才锁定的功能) 6 7 ''') 8 9 Readme.close() #关闭文件 10 11 #生成用户信息文件 12 user_account = open('user_account.txt','w') 13 14 user_account.write('''zhangsan zhangsan 15 alex alex 16 eric eric 17 ''') 18 19 user_account.close() #关闭文件 20 21 #生成空的黑名单文件 22 lock_account = open('lock_account.txt','a') #这里不能用'w',否则每次重新运行程序后,之前存储的黑名单用户会被格式化。 23 24 lock_account.close() #关闭文件 25 26 27 count = 3 #最大尝试次数 28 retry = 1 #当前尝试次数 29 30 while retry <= count : #尝试次数不超过最大尝试次数进入while循环 31 Username = input("请输入用户名: “).strip().lower() #去掉空格和不区分大小写 32 33 #输入用户名后先进入黑名单判断 34 blacklists = open('lock_account.txt','r') #打开黑名单用户文件 35 locked_users = blacklists.readlines() #按行读取,结果为列表 36 37 tmp_lockusers = [] #该列表用来存放去掉空格后的字符串 38 for lock_user in locked_users: #取出列表元素 39 tmp_lockusers.append(lock_user.rstrip()) #元素去掉空格后放入新列表 40 if Username in tmp_lockusers: 41 print("你的用户已被锁定,请联系管理员处理。") 42 continue 43 44 blacklists.close() #关闭文件 45 46 if len(Username) == 0: #检查输入是否为空 47 print("输入不能为空,请重新输入。") 48 continue 49 50 Password = input("请输入密码: ”).strip() #让用户输入密码 51 flag = False 52 53 whitelists = open('user_account.txt','r') #打开白名单用户文件 54 normal_users = whitelist.readlins() #按行读取,结果为列表 55 56 for normal_user in normal_users: 57 user,pwd = normal_user.rstrip().split() #取出的元素为用户名和密码,要将其分割,分别赋值给两个变量 58 if user == Username and pwd == Password: 59 print("欢迎%s登录系统。" %(Username.title()) 60 flag = True 61 break #跳出当前for循环 62 63 whiltelists.close() #关闭文件 64 65 if flag = True: 66 break #跳出while循环 67 else: 68 if retry < 3: #当第三次尝试错误后,不打印该消息 69 print("用户名或密码输入错误,请重新输入。剩余重试次数%d" %(count-retry)) 70 retry += 1 71 else: #即尝试次数大于三次后 72 print("用户尝试次数过多,已被锁定!") 73 74 new_lock = open('lock_account.txt','a') #这里不能用'w'模式,否则会格式化之前保存的黑名单用户 75 76 new_lock.write(' '.join(['\n',Username]) #用户名(换行)写入黑名单 77 78 new_lock.close() #关闭文件
2、购物车练习题
1 Goods_List = [ ('Iphone',5888), 2 ('MacBook Pro',18888), 3 ('Coffee',38), 4 ('Python Book',88), 5 ('Bicycle',888), 6 ] 7 8 TMP_Cart = [] #临时购物车 9 Shopping_Cart = [] #购物车 10 Payed = [] #购物的总花费 11 12 13 User_Money = input("你有多少钱?") 14 15 if User_Money.isdigit(): 16 User_Money = int(User_Money) 17 if User_Money > 0: 18 while True: 19 print("下面是商品列表:") 20 for index,item in enumerate(Goods_List,1): 21 #print(Goods_List.index(item),item) 22 print(index,item) 23 User_Select = input("请选择要买商品的序列号:") 24 if User_Select.isdigit(): 25 User_Select = int(User_Select) 26 if User_Select <= len(Goods_List) and User_Select >= 1: 27 TMP_Select = Goods_List[User_Select-1] #获取用于选择的商品信息 28 if TMP_Select[1] <= User_Money: #获取商品价格,和用户的钱进行对比 29 TMP_Cart.append(TMP_Select) 30 User_Money -= TMP_Select[1] #扣钱 31 print("添加%s成功,还剩\033[31;1m%d\033[0m元" %(TMP_Select,User_Money)) 32 else: 33 print("你个穷B,钱不够买毛线!") 34 Recharge_Choice = input("要充值吗?输入N为不充值,输入其它任意键进行充值:").lower() 35 if Recharge_Choice == 'n': 36 print("穷屌!") 37 else: 38 Recharge_amount = input("请输入你要充值的金额:") 39 if Recharge_amount.isdigit(): 40 Recharge_amount = int(Recharge_amount) 41 if Recharge_amount > 0: 42 User_Money += Recharge_amount 43 print("充值成功!当前余额为\033[31;1m%d\033[0m元" %User_Money) 44 else: 45 print("没钱就不要捣乱,Fuck off!") 46 else: 47 print("输入错误!请输入正确的充值金额。") 48 else: 49 print("输入错误,请重新输入。") 50 elif User_Select == 'q': 51 for Cart in TMP_Cart: 52 Shopping_Cart.append(Cart[0]) 53 Payed.append(Cart[1]) 54 print("你已购买如下产品:") 55 for index,Goods in enumerate(Shopping_Cart,1): 56 print(index,Goods) 57 print("当前余额\033[31;1m%d\033[0m元" % User_Money) 58 break 59 else: 60 print("输入错误,请重新输入!") 61 else: 62 print("你个穷屌!钱都没有买毛?滚蛋") 63 else: 64 print("输入错误,请重新输入!")
3、三级菜单练习题
1 menu = { 2 '北京':{ 3 '海淀':{ 4 '五道口':{ 5 'soho':{}, 6 '网易':{}, 7 'google':{} 8 }, 9 '中关村':{ 10 '爱奇艺':{}, 11 '汽车之家':{}, 12 'youku':{}, 13 }, 14 '上地':{ 15 '百度':{}, 16 }, 17 }, 18 '昌平':{ 19 '沙河':{ 20 '老男孩':{}, 21 '北航':{}, 22 }, 23 '天通苑':{ 24 '神州租车':{}, 25 }, 26 '回龙观':{ 27 '北京华联':{}, 28 }, 29 }, 30 '朝阳':{ 31 '朝阳门':{}, 32 '朝阳群众':{}, 33 }, 34 }, 35 '上海':{ 36 '闵行':{ 37 "人民广场":{ 38 '炸鸡店':{}, 39 } 40 }, 41 '闸北':{ 42 '火车战':{ 43 '携程':{}, 44 } 45 }, 46 '浦东':{ 47 '广场':{ 48 '七天':{}, 49 }, 50 }, 51 }, 52 '山东':{ 53 '济南':{ 54 '海边':{ 55 '大排档':{}, 56 } 57 }, 58 '青岛':{ 59 '海边':{ 60 '海鲜':{}, 61 } 62 }, 63 }, 64 } 65 66 67 68 while True: 69 quit_flag = True # 该标志位用来判断循环是否可以继续,不能作为全局变量。否则在该值变化后,永久成为false,不能再次进入二层循环。 70 71 for key1 in menu: #取出一级菜单(省) 72 print(key1) 73 User_Choice1 = input("请选择要查看的省份,或输入'exit'退出程序:").strip() 74 if User_Choice1 in menu: 75 while quit_flag: 76 for key2 in menu[User_Choice1]: #取出二级菜单(省或直辖市) 77 print('\t',key2) 78 User_Choice2 = input("请选择要查看的城市或地区,或输入'b'返回上一级:").strip() 79 if User_Choice2 == 'b': 80 break 81 elif User_Choice2 in menu[User_Choice1]: 82 while quit_flag: 83 for key3 in menu[User_Choice1][User_Choice2]: #取出三级菜单 84 print('\t\t',key3) 85 User_Choice3 = input("请选择要查看的地名(输入'b'返回上一级,'q'退回到第一级):").strip() 86 if User_Choice3 == 'b': 87 break 88 elif User_Choice3 == 'q': 89 quit_flag = False 90 elif User_Choice3 in menu[User_Choice1][User_Choice2]: 91 while quit_flag: 92 for key4 in menu[User_Choice1][User_Choice2][User_Choice3]: #取出最后一级 93 print('\t\t\t',key4) 94 User_Choice4 = input("已经到底了(输入'b'返回上一级,'q'退回到第一级)!").strip() 95 if User_Choice4 == 'b': 96 break 97 elif User_Choice4 == 'q': 98 quit_flag = False 99 else: 100 print("输入的%s不存在,请重新输入!" %User_Choice3) 101 else: 102 print("输入的%s不存在,请重新输入!" %User_Choice2) 103 elif User_Choice1 == 'exit': 104 print("慢走不送!") 105 break 106 else: 107 print("输入的%s不存在,请重新输入!" %User_Choice1)