Day1作业: 登录接口和多级菜单

1、登录接口

 实现功能:

1用户注册

2用户登录

3用户名是否存在

4密码错误三次锁定,并更新用户锁定状态

5用户锁定状态匹配

 

流程图

 

 涉及到1个文件作为库

 

 passwd      #用户密码文件,1为锁定状态

zhy:123456:0
alex:234567:0
xiaoming:45678:1

 

 python代码

ExpandedBlockStart.gif
 1  # !/usr/bin/env python3
 2  # coding:utf-8
 3 
 4 user_name = input( " 请输入用户名: ")
 5 n = 0
 6 line =  "   "
 7  while 1:
 8     with open( ' passwd ', ' r ') as passwd_file:
 9          for line  in passwd_file:
10             passwd_line = line.split( ' : ')    # 将每一行都转换成列表 ['用户名','密码','状态']
11               if user_name != passwd_line[0]:  # 当用户不匹配时标记为n=0,当用户名匹配成功则标记n=1并结束循环
12                  n = 0
13              else:
14                 n = 1
15                  break
16          if n == 0:                           # 判断n的值,n=0时则用户不存在,n=1时用户存在结束while循环,继续向下执行
17               print( " 您输入的用户名[%s]不存在! " %user_name)
18             user_name = input( " 请重新输入用户名: ")
19          else:
20              break
21 
22 with open( ' passwd '' r+ ') as passwd_file:    # 以读写的模式打开文件,后面会涉及到写文件
23       for line  in passwd_file:
24         passwd_line = line.split( ' : ')
25          if user_name == passwd_line[0]  and passwd_line[2].strip( ' \n ') ==  " 1 ":    # 判断当前用户的状态是否锁定,1为锁定,0为未锁定
26               print( " 您的用户名[%s]已经被锁定 " %user_name)
27              break
28      else:
29         count = 1
30         password = input( ' 请输入密码: ')
31          while count < 4:                    # 当输入次数小于4时,对密码正确性进行匹配,在输入三次错误后count会等于4,执行else语句锁定用户
32              passwd_file.seek(0)              # 重新定位用户密码文件开始位置
33               for line  in passwd_file:
34                 passwd_line = line.split( ' : ')
35                  if user_name == passwd_line[0]  and passwd_line[1] == password :      # 当前用户的密码进行匹配,匹配则显示登录成功 ,不匹配执行else语句
36                       print( ' 欢迎您%s登陆成功! ' % user_name)
37                     exit()
38              else:
39                  print( ' 您输入的密码错误,超过3次您的账户将会被锁定,当前错误次数%s ' % count)
40                  if count < 3 :       # 最初已经提示过输入一次密码,所以只需再提供最多2次输入
41                      password = input( ' 请重新输入密码: ')
42             count += 1               # 计数器+1
43           else:
44              print( ' 您输入密码错误超过三次,该账户%s已锁定! ' %user_name)
45             passwd_file.seek(0)     # 重新定位用户密码文件开始位置
46               for line  in passwd_file:
47                 passwd_line = line.split( ' : ')
48                  if user_name == passwd_line[0]:
49                      break
50             lock_line = line        # 找出需要锁定用户所在的行
51              lock_line_1 = lock_line.replace( ' 0 ', ' 1 ')    # 将用户的状态由未锁定置为锁定
52              passwd_file.seek(0)
53             old_line = passwd_file.read()   # 读取所有文件内容
54              new_line = old_line.replace(lock_line,lock_line_1)   # 更新需要锁定的用户行
55              passwd_file.seek(0)
56             passwd_file.truncate()
57             passwd_file.write(new_line)      # 重新写入文件
58              exit()
View Code

 

 2、多级菜单

实现功能

1进入省

2进入地级市

3进入区县

 

流程图

 

 python代码

ExpandedBlockStart.gif
  1  # !/usr/bin/env python3
  2  # coding:utf-8
  3 
  4 p_list = [ ' 北京 ', ' 上海 ', ' 河北 ']
  5 c_beijing = [ ' 海淀区 ', ' 昌平区 ', ' 朝阳区 ']
  6 c_shanghai = [ ' 徐汇区 ', ' 虹口区 ', ' 长宁区 ']
  7 c_hebei = [ ' 廊坊 ', ' 石家庄 ', ' 保定 ']
  8 
  9 area_haidian = [ ' 中关村 ', ' 西二旗 ', ' 上地 ']
 10 area_changping = [ ' 回龙观 ', ' 天通苑 ', ' 沙河 ']
 11 area_chaoyang = [ ' 国贸 ', ' 十里堡 ', ' 望京 ']
 12 
 13 area_xuhui = [ ' 天平路 ', ' 湖南路 ', ' 枫林路 ']
 14 area_hongkou = [ ' 新港路 ', ' 嘉兴路 ', ' 广中路 ']
 15 area_changning = [ ' 华阳路 ', ' 江苏路 ', ' 新华路 ']
 16 
 17 area_langfang = [ ' 香河 ', ' 大厂 ', ' 三河 ']
 18 area_shijiazhuang = [ ' 桥东区 ', ' 桥西区 ', ' 行唐 ']
 19 area_baoding = [ ' 徐水区 ', ' 涿州 ', ' 定州 ']
 20 
 21 
 22 
 23  # 根据用户选择显示指定省下的城市
 24  def print_city_by_id(n,province_name):
 25      if p_list_num == n:
 26         print_area_list =  '''
 27          1---%s
 28          2---%s
 29          3---%s
 30           ''' %(province_name[0], province_name[1], province_name[2])
 31          print(print_area_list)
 32 
 33 
 34  # 根据用户选择显示指定市下的区县
 35  def print_area_by_id(i,city_name):
 36      if c_list_num == i:
 37         print_area_list =  '''
 38          1---%s
 39          2---%s
 40          3---%s
 41           ''' %(city_name[0], city_name[1], city_name[2])
 42          print(print_area_list)
 43 
 44  while True:
 45      print( " 当前所在位置为中国,下列为省份列表 ")
 46     print_p_list= '''         #省份列表打印格式
 47      1-%s
 48      2-%s
 49      3-%s
 50       '''%(p_list[0],p_list[1],p_list[2])
 51      print(print_p_list)
 52     p_list_num = input( " 请输入序号进入对应省份,退出输入q: ")
 53      while p_list_num  in ( " 1 ", " 2 ", " 3 "):
 54          if p_list_num ==  " 1 ":    # 当1时为北京市
 55               print( " 当前所在位置为中国%s,下列为城市列表 " % p_list[int(p_list_num) - 1])   # 显示当前位置
 56              print_city_by_id(p_list_num,c_beijing)       # 显示城市列表
 57              c_list_num = input( " 请输入序号进入对应城市,返回输入b,退出输入q: ")
 58              while c_list_num  in ( " 1 "" 2 "" 3 "):
 59 
 60                  if c_list_num ==  " 1 "# 1为海淀区
 61                       print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_beijing[int(c_list_num) - 1]))   # 显示当前位置
 62                      print_area_by_id(c_list_num,area_haidian)    # 显示县级列表
 63                      area_list_num = input( " 返回输入b,退出输入q: ")
 64                      if area_list_num ==  " b ":
 65                          break
 66                      elif area_list_num ==  " q ":
 67                         exit()
 68                      else:
 69                          print( " 输入错误!请重新输入! ")
 70                          continue
 71                  elif c_list_num ==  " 2 "# 2为昌平区
 72                       print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1],c_beijing[int(c_list_num) - 1]))   # 显示当前位置
 73                      print_area_by_id(c_list_num,area_changping)
 74                     area_list_num = input( " 返回输入b,退出输入q: ")
 75                      if area_list_num ==  " b ":
 76                          break
 77                      elif area_list_num ==  " q ":
 78                         exit()
 79                      else:
 80                          print( " 输入错误!请重新输入! ")
 81                          continue
 82                  elif c_list_num ==  " 3 "# 3为朝阳区
 83                       print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1],c_beijing[int(c_list_num) - 1]))   # 显示当前位置
 84                      print_area_by_id(c_list_num,area_chaoyang)
 85                     area_list_num = input( " 返回输入b,退出输入q: ")
 86                      if area_list_num ==  " b "# 返回上一级
 87                           break
 88                      elif area_list_num ==  " q ":   # 退出程序
 89                          exit()
 90                      else:    # 其他输入错误提示
 91                           print( " 输入错误!请重新输入! ")
 92                          continue
 93              else:
 94                  if  c_list_num == " b ":
 95                      break
 96                  elif c_list_num ==  " q ":
 97                     exit()
 98                  else:
 99                      print( " 输入错误!请重新输入! ")
100                      continue
101          if p_list_num ==  " 2 "# 2为上海
102               print( " 当前所在位置为中国%s,下列为城市列表 " % p_list[int(p_list_num) - 1])
103             print_city_by_id(p_list_num,c_shanghai)
104             c_list_num = input( " 请输入序号进入对应城市,返回输入b,退出输入q: ")
105              while c_list_num  in ( " 1 "" 2 "" 3 "):
106 
107                  if c_list_num ==  " 1 "# 1为徐汇区
108                       print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_shanghai[int(c_list_num) - 1]))     # 显示当前位置
109                      print_area_by_id(c_list_num, area_xuhui)
110                     area_list_num = input( " 返回输入b,退出输入q: ")
111                      if area_list_num ==  " b ":
112                          break
113                      elif area_list_num ==  " q ":
114                         exit()
115                      else:
116                          print( " 输入错误!请重新输入! ")
117                          continue
118                  elif c_list_num ==  " 2 ":
119                      print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_shanghai[int(c_list_num) - 1]))     # 显示当前位置
120                      print_area_by_id(c_list_num, area_hongkou)
121                     area_list_num = input( " 返回输入b,退出输入q: ")
122                      if area_list_num ==  " b ":
123                          break
124                      elif area_list_num ==  " q ":
125                         exit()
126                      else:
127                          print( " 输入错误!请重新输入! ")
128                          continue
129                  elif c_list_num ==  " 3 ":
130                      print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_shanghai[int(c_list_num) - 1]))     # 显示当前位置
131                      print_area_by_id(c_list_num, area_changning)
132                     area_list_num = input( " 返回输入b,退出输入q: ")
133                      if area_list_num ==  " b ":
134                          break
135                      elif area_list_num ==  " q ":
136                         exit()
137                      else:
138                          print( " 输入错误!请重新输入! ")
139                          continue
140              else:
141                  if c_list_num ==  " b ":
142                      break
143                  elif c_list_num ==  " q ":
144                     exit()
145                  else:
146                      print( " 输入错误!请重新输入! ")
147                      continue
148          if p_list_num ==  " 3 ":
149              print( " 当前所在位置为中国%s,下列为城市列表 " % p_list[int(p_list_num) - 1])   # 显示当前位置
150              print_city_by_id(p_list_num, c_hebei)
151             c_list_num = input( " 请输入序号进入对应城市,返回输入b,退出输入q: ")
152              while c_list_num  in ( " 1 "" 2 "" 3 "):
153 
154                  if c_list_num ==  " 1 ":
155                      print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_hebei[int(c_list_num) - 1]))    # 显示当前位置
156                      print_area_by_id(c_list_num, area_langfang)
157                     area_list_num = input( " 返回输入b,退出输入q: ")
158                      if area_list_num ==  " b ":
159                          break
160                      elif area_list_num ==  " q ":
161                         exit()
162                      else:
163                          print( " 输入错误!请重新输入! ")
164                          continue
165                  elif c_list_num ==  " 2 ":
166                      print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_hebei[int(c_list_num) - 1]))    # 显示当前位置
167                      print_area_by_id(c_list_num, area_shijiazhuang)
168                     area_list_num = input( " 返回输入b,退出输入q: ")
169                      if area_list_num ==  " b ":
170                          break
171                      elif area_list_num ==  " q ":
172                         exit()
173                      else:
174                          print( " 输入错误!请重新输入! ")
175                          continue
176                  elif c_list_num ==  " 3 ":
177                      print( " 当前所在位置为中国%s/%s,下列为区县列表 " % (p_list[int(p_list_num) - 1], c_hebei[int(c_list_num) - 1]))    # 显示当前位置
178                      print_area_by_id(c_list_num, area_baoding)
179                     area_list_num = input( " 返回输入b,退出输入q: ")
180                      if area_list_num ==  " b ":
181                          break
182                      elif area_list_num ==  " q ":
183                         exit()
184                      else:
185                          print( " 输入错误!请重新输入! ")
186                          continue
187              else:
188                  if c_list_num ==  " b ":
189                      break
190                  elif c_list_num ==  " q ":
191                     exit()
192                  else:
193                      print( " 输入错误!请重新输入! ")
194                      continue
195      else:
196          if p_list_num == " q ":
197              break
198          else:
199              print( " 输入错误!请重新输入! ")
200              continue
View Code

转载于:https://www.cnblogs.com/zhyErick/p/5419721.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值