国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python從入門到精通(DAY 3)

2019-11-25 17:00:38
字體:
來源:轉載
供稿:網友

要求:編寫登陸接口

輸入用戶名密碼
認證成功后顯示歡迎信息
輸錯三次后鎖定

針對此實例寫了有二種類型的腳本,略有不同,具體如下:

帳號文件account.txt內容如下:

sam 123

david 12
kevin 123
lin 12
tailen 123
jack 12

鎖文件account_lock.txt默認為空

一、只針對帳號文件里的用戶進行判斷并鎖定,針對用戶和密碼各有三次錯誤重試機會。

1、流程圖如下:

代碼如下:

#!/usr/bin/python27#_*_ coding:utf-8 _*_import sys,os,getpassos.system('clear')i = 0while i < 3:                            #只要用戶登錄異常不超過3次就不斷循環  name = raw_input("請輸入用戶名:")  lock_file = open('account_lock.txt','r+')            #當用戶輸入用戶名后,打開LOCK 文件 以檢查是否此用戶已經LOCK了  lock_list = lock_file.readlines()  for lock_line in lock_list:                   #循環LOCK文件     lock_line = lock_line.strip('/n')              #去掉換行符    if name == lock_line:                    #如果LOCK了就直接退出      sys.exit('用戶 %s 已經被鎖定,退出' % name)   user_file = open('account.txt','r')               #打開帳號文件   user_list = user_file.readlines()                  for user_line in user_list:                   #對帳號文件進行遍歷    (user,password) = user_line.strip('/n').split()       #分別獲取帳號和密碼信息    if name == user:                      #如用戶名正常匹配      j = 0      while j < 3:                      #只要用戶密碼異常不超過3次就不斷循環        passwd = getpass.getpass('請輸入密碼:')       #輸入隱藏密碼        if passwd == password:               #密碼正確,提示歡迎登錄          print('歡迎登錄管理平臺,用戶%s' % name)              sys.exit(0)                   #正常退出        else:          print('用戶 %s 密碼錯誤,請重新輸入,還有 %d 次機會' % (name,2 - j))        j += 1                       #密碼輸入錯誤后,循環值增加1      else:        lock_file.write(name + '/n')            #密碼輸入三次錯誤后,將該用戶追加到LOCK文件        sys.exit('用戶 %s 達到最大登錄次數,將被鎖定并退出' % name)    else:      pass                          #當用戶沒匹配時,跳過并繼續循環  else:    print('用戶 %s 不存在,請重新輸入,還有 %d 次機會' % (name,2 - i))  i += 1                             #當用戶輸入錯誤時,循環值增加1else:  sys.exit('用戶 %s 不存在,退出' % name)              #用戶輸入三次錯誤后,異常退出      lock_file.close()                          #關閉LOCK文件user_file.close()                          #關閉帳號文件

二、針對帳號文件里的不存在的用戶也可以進行判斷并鎖定,針對用戶和密碼共有三次錯誤重試機會

代碼如下:

#_*_ coding:utf-8 _*_import sys,os,getpassos.system('clear')retry_limit = 3retry_count = 0account_file = 'account.txt'lock_file = 'account_lock.txt'while retry_count < retry_limit:                     #只要重試不超過3次就不斷循環  username = raw_input('/033[31;43mUsername:/033[0m')  username = username.strip()  lock_check = open(lock_file)                     #當用戶輸入用戶名后,打開LOCK 文件 以檢查是否此用戶已經LOCK了  for line in lock_check.readlines():                 #循環LOCK文件     if username == line.strip('/n'):                 #去掉換行符      sys.exit('/033[35mUser %s is locked!!!/033[0m' % username)  #如果LOCK了就直接退出  password = raw_input('/033[32;41mPassword:/033[0m')         #輸入密碼  f = open(account_file,'r')                      #打開帳號文件   match_flag = False                          # 默認為Flase,如果用戶match 上了,就設置為 True  for line in f.readlines():                          user,passwd = line.strip('/n').split()              #去掉每行多余的/n并把這一行按空格分成兩列,分別賦值為user,passwd兩個變量    if username == user and password == passwd:           #判斷用戶名和密碼是否都相等      print('hello, %s !!' % username)      match_flag = True                       #相等就把循環外的match_flag變量改為了True      break                             #然后就不用繼續循環了,直接 跳出,因為已經match上了  f.close()  if match_flag == False:                       #如果match_flag還為False,代表上面的循環中跟本就沒有match上用戶名和密碼,所以需要繼續循環    print('sorry,%s is unmatched' % username)    retry_count += 1                         #計數器加1  else:    print('wlecome login my learning system!')    break                              #用戶成功登錄,退出腳本else:  print("you account %s is locked!!!" % username)  g = open(lock_file,'a')  g.write(username)                          #被鎖用戶追加到用戶鎖文件  g.write('/n')    g.close()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 田林县| 饶阳县| 富顺县| 黑龙江省| 拜城县| 克拉玛依市| 阜新市| 尤溪县| 淳化县| 湘阴县| 定结县| 凤城市| 阿坝| 丰原市| 长治县| 阿鲁科尔沁旗| 张家界市| 巴塘县| 修水县| 锡林浩特市| 宁河县| 丰原市| 海盐县| 子长县| 全椒县| 改则县| 厦门市| 拜泉县| 台南县| 泰来县| 景德镇市| 临夏县| 鄂伦春自治旗| 玉林市| 彭水| 教育| 海口市| 安吉县| 攀枝花市| 聊城市| 曲周县|