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

首頁(yè) > 編程 > Python > 正文

python從入門到精通(DAY 3)

2020-01-04 17:54:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
本文是python從入門到精通系列文章的第三篇,主要是給大家講訴做的一個(gè)編寫登陸接口練習(xí)程序的全過(guò)程,非常的細(xì)致,有需要的小伙伴可以參考下。
 

要求:編寫登陸接口

輸入用戶名密碼
認(rèn)證成功后顯示歡迎信息
輸錯(cuò)三次后鎖定

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

帳號(hào)文件account.txt內(nèi)容如下:

sam 123

david 12 
kevin 123
lin 12 
tailen 123 
jack 12

鎖文件account_lock.txt默認(rèn)為空

一、只針對(duì)帳號(hào)文件里的用戶進(jìn)行判斷并鎖定,針對(duì)用戶和密碼各有三次錯(cuò)誤重試機(jī)會(huì)。

1、流程圖如下:

python從入門到精通(DAY 3)

代碼如下:

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

二、針對(duì)帳號(hào)文件里的不存在的用戶也可以進(jìn)行判斷并鎖定,針對(duì)用戶和密碼共有三次錯(cuò)誤重試機(jī)會(huì)

代碼如下:

#_*_ 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:                     #只要重試不超過(guò)3次就不斷循環(huán)  username = raw_input('/033[31;43mUsername:/033[0m')  username = username.strip()  lock_check = open(lock_file)                     #當(dāng)用戶輸入用戶名后,打開(kāi)LOCK 文件 以檢查是否此用戶已經(jīng)LOCK了  for line in lock_check.readlines():                 #循環(huán)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')                      #打開(kāi)帳號(hào)文件   match_flag = False                          # 默認(rèn)為Flase,如果用戶match 上了,就設(shè)置為 True  for line in f.readlines():                          user,passwd = line.strip('/n').split()              #去掉每行多余的/n并把這一行按空格分成兩列,分別賦值為user,passwd兩個(gè)變量    if username == user and password == passwd:           #判斷用戶名和密碼是否都相等      print('hello, %s !!' % username)      match_flag = True                       #相等就把循環(huán)外的match_flag變量改為了True      break                             #然后就不用繼續(xù)循環(huán)了,直接 跳出,因?yàn)橐呀?jīng)match上了  f.close()  if match_flag == False:                       #如果match_flag還為False,代表上面的循環(huán)中跟本就沒(méi)有match上用戶名和密碼,所以需要繼續(xù)循環(huán)    print('sorry,%s is unmatched' % username)    retry_count += 1                         #計(jì)數(shù)器加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()

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 轮台县| 衡东县| 民和| 汪清县| 常山县| 米林县| 革吉县| 石景山区| 祁连县| 广宗县| 沿河| 本溪市| 上栗县| 灵宝市| 泉州市| 建昌县| 东辽县| 曲周县| 白朗县| 锡林郭勒盟| 日土县| 榆社县| 莱阳市| 揭阳市| 芜湖县| 凭祥市| 云南省| 瑞昌市| 集安市| 渭源县| 天祝| 全州县| 开鲁县| 家居| 合阳县| 江山市| 信丰县| 德安县| 永春县| 武安市| 昂仁县|