欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python從入門(mén)到精通(DAY 3)

 更新時(shí)間:2015年12月20日 10:51:10   投稿:hebedich  
本文是python從入門(mén)到精通系列文章的第三篇,主要是給大家講訴做的一個(gè)編寫(xiě)登陸接口練習(xí)程序的全過(guò)程,非常的細(xì)致,有需要的小伙伴可以參考下。

要求:編寫(xiě)登陸接口

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

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

帳號(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)文件里的用戶(hù)進(jìn)行判斷并鎖定,針對(duì)用戶(hù)和密碼各有三次錯(cuò)誤重試機(jī)會(huì)。

1、流程圖如下:

代碼如下:

#!/usr/bin/python27
#_*_ coding:utf-8 _*_

import sys,os,getpass

os.system('clear')
i = 0
while i < 3:                            #只要用戶(hù)登錄異常不超過(guò)3次就不斷循環(huán)
  name = raw_input("請(qǐng)輸入用戶(hù)名:")

  lock_file = open('account_lock.txt','r+')            #當(dāng)用戶(hù)輸入用戶(hù)名后,打開(kāi)LOCK 文件 以檢查是否此用戶(hù)已經(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('用戶(hù) %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:                      #如用戶(hù)名正常匹配
      j = 0
      while j < 3:                      #只要用戶(hù)密碼異常不超過(guò)3次就不斷循環(huán)
        passwd = getpass.getpass('請(qǐng)輸入密碼:')       #輸入隱藏密碼
        if passwd == password:               #密碼正確,提示歡迎登錄
          print('歡迎登錄管理平臺(tái),用戶(hù)%s' % name)    
          sys.exit(0)                   #正常退出
        else:
          print('用戶(hù) %s 密碼錯(cuò)誤,請(qǐng)重新輸入,還有 %d 次機(jī)會(huì)' % (name,2 - j))
        j += 1                       #密碼輸入錯(cuò)誤后,循環(huán)值增加1
      else:
        lock_file.write(name + '\n')            #密碼輸入三次錯(cuò)誤后,將該用戶(hù)追加到LOCK文件
        sys.exit('用戶(hù) %s 達(dá)到最大登錄次數(shù),將被鎖定并退出' % name)
    else:
      pass                          #當(dāng)用戶(hù)沒(méi)匹配時(shí),跳過(guò)并繼續(xù)循環(huán)
  else:
    print('用戶(hù) %s 不存在,請(qǐng)重新輸入,還有 %d 次機(jī)會(huì)' % (name,2 - i))
  i += 1                             #當(dāng)用戶(hù)輸入錯(cuò)誤時(shí),循環(huán)值增加1
else:
  sys.exit('用戶(hù) %s 不存在,退出' % name)              #用戶(hù)輸入三次錯(cuò)誤后,異常退出
      
lock_file.close()                          #關(guān)閉LOCK文件
user_file.close()                          #關(guān)閉帳號(hào)文件

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

代碼如下:

#_*_ coding:utf-8 _*_

import sys,os,getpass

os.system('clear')

retry_limit = 3
retry_count = 0

account_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)用戶(hù)輸入用戶(hù)名后,打開(kāi)LOCK 文件 以檢查是否此用戶(hù)已經(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,如果用戶(hù)match 上了,就設(shè)置為 True

  for line in f.readlines():                      
    user,passwd = line.strip('\n').split()              #去掉每行多余的\n并把這一行按空格分成兩列,分別賦值為user,passwd兩個(gè)變量
    if username == user and password == passwd:           #判斷用戶(hù)名和密碼是否都相等
      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上用戶(hù)名和密碼,所以需要繼續(xù)循環(huán)
    print('sorry,%s is unmatched' % username)
    retry_count += 1                         #計(jì)數(shù)器加1
  else:
    print('wlecome login my learning system!')
    break                              #用戶(hù)成功登錄,退出腳本

else:
  print("you account %s is locked!!!" % username)
  g = open(lock_file,'a')
  g.write(username)                          #被鎖用戶(hù)追加到用戶(hù)鎖文件
  g.write('\n')  
  g.close()

相關(guān)文章

  • Python實(shí)現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼

    Python實(shí)現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼

    VOC 的標(biāo)注是xml格式的,而YOLO是.txt格式,所以要實(shí)現(xiàn)VOC數(shù)據(jù)集轉(zhuǎn)YOLO數(shù)據(jù)集,只能利用代碼實(shí)現(xiàn)。所以本文為大家介紹了Python中xml轉(zhuǎn)txt的示例代碼,需要的可以參考一下
    2022-03-03
  • Kmeans均值聚類(lèi)算法原理以及Python如何實(shí)現(xiàn)

    Kmeans均值聚類(lèi)算法原理以及Python如何實(shí)現(xiàn)

    這個(gè)算法中文名為k均值聚類(lèi)算法,首先我們?cè)诙S的特殊條件下討論其實(shí)現(xiàn)的過(guò)程,方便大家理解。
    2020-09-09
  • matplotlib交互式數(shù)據(jù)光標(biāo)mpldatacursor的實(shí)現(xiàn)

    matplotlib交互式數(shù)據(jù)光標(biāo)mpldatacursor的實(shí)現(xiàn)

    這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標(biāo)mpldatacursor的實(shí)現(xiàn) ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python拋出引發(fā)異常(raise)知識(shí)點(diǎn)總結(jié)

    Python拋出引發(fā)異常(raise)知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了關(guān)于Python拋出引發(fā)異常(raise)知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-06-06
  • Python數(shù)組與列表的區(qū)別解析

    Python數(shù)組與列表的區(qū)別解析

    列表因?yàn)槠浯鎯?chǔ)的類(lèi)型可以是任何對(duì)象,因此列表的用處更廣泛,更多樣化,并且列表可以有更多的存儲(chǔ)空間去使用,而數(shù)組使用的空間就相對(duì)較少,這篇文章主要介紹了Python數(shù)組與列表的區(qū)別,需要的朋友可以參考下
    2023-11-11
  • Python 把兩層列表展開(kāi)平鋪成一層(5種實(shí)現(xiàn)方式)

    Python 把兩層列表展開(kāi)平鋪成一層(5種實(shí)現(xiàn)方式)

    這篇文章主要介紹了Python 把兩層列表展開(kāi)平鋪成一層(5種實(shí)現(xiàn)方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 如何用Python一次性下載抖音上音樂(lè)

    如何用Python一次性下載抖音上音樂(lè)

    不知道什么時(shí)候開(kāi)始,中國(guó)出現(xiàn)了南抖音、北快手的互文格局。喜歡抖音主要是兩個(gè)初衷,學(xué)做菜聽(tīng)音樂(lè)。抖音捧紅了很多人,也讓很多本不怎么讓大家熟知的歌曲、BGM,經(jīng)過(guò)翻唱、混剪與視頻搭配,從而傳播大街小巷。有沒(méi)有想過(guò)將這些好聽(tīng)的剪輯批量下載下來(lái)呢?
    2021-05-05
  • 基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    這篇文章主要為大家詳細(xì)介紹了基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)基本原理

    Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)基本原理

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)寫(xiě)為ANNs)也簡(jiǎn)稱(chēng)為神經(jīng)網(wǎng)絡(luò)(NNs)或稱(chēng)作連接模型(Connection Model),它是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型
    2021-10-10
  • python制作一個(gè)簡(jiǎn)單的gui 數(shù)據(jù)庫(kù)查詢(xún)界面

    python制作一個(gè)簡(jiǎn)單的gui 數(shù)據(jù)庫(kù)查詢(xún)界面

    這篇文章主要介紹了python制作一個(gè)簡(jiǎn)單的gui 數(shù)據(jù)庫(kù)查詢(xún)界面,幫助大家更好的理解和學(xué)習(xí)python tkinter的使用,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論