<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      登錄接口
      需求:
      1、輸入用戶密碼;
      2、認真成功后顯示歡迎信息;
      3、輸錯三次后鎖定

      程序應該遵循先簡單后復雜的步驟,因此我把以上需求分解為幾個步驟來做
      1、我先考慮的是輸入用戶賬號和密碼情況的循環,沒有考慮次數和鎖定。
      代碼如下所示:

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName: login1.py
       5 
       6 import getpass
       7 
       8 #i = 0
       9 #j = 0
      10 name = 'liguanjie'
      11 passwd = '123456'
      12 passwd_login = False
      13 name_login = False
      14 while not name_login:
      15     username = input("Please enter your username:")
      16     if name == username:
      17         while not passwd_login:
      18             #password = input("Please enter your password:")  #該方式密碼采用明文方式輸入,由于pycharm不能對密文進行測試,所以采用這方式來代替驗證測試效果
      19             password = getpass.getpass('Please enter your password:')   #該方式密碼采用密文方式輸入
      20             if passwd == password:
      21                 print("Welcome to login!")
      22                 passwd_login = True
      23             else:
      24                 print("\033[31;0mSorry,try again.\033[0m")
      25         name_login = True
      26     else:
      27         print("\033[31;0mSorry,try again.\033[0m")
      login1


      2、對賬號和密碼輸入驗證優化,增強安全性,并且賬號或者密碼輸錯三次將停止驗證。
      (while+if實現三次循環驗證)代碼如下:

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName: login2.py
       5 
       6 import getpass
       7 user = 'liguanjie'
       8 passwd = '123456'
       9 login_flag = False
      10 i = 0
      11 
      12 while not login_flag:
      13     if i < 3:
      14         username = input("Please enter your username:")
      15         password = input("Please enter your password:")
      16         #password = getpass.getpass('Please enter your password:')
      17         if user == username and passwd == password:
      18             print("\033[34;1mWelcome to login!\033[0m")
      19             login_flag = True
      20         else:
      21             print("\033[31;1mInvalid username or password .\033[0m")
      22             i = i + 1
      23     else:
      24         print("\033[31;0mSorry,bye!\033[0m")
      25         login_flag = True
      login2

       
      (for+if 實現三次循環驗證)代碼如下:

       1 import getpass
       2 user = 'liguanjie'
       3 passwd = '123456'
       4 
       5 for i in range(3):
       6     username = input("Please enter your username:")
       7     password = input("Please enter your password:")
       8     # password = getpass.getpass('Please enter your password:')
       9     if user == username and passwd == password:
      10         print("\033[34;1mWelcome to login!\033[0m")
      11         break
      12     else:
      13         print("\033[31;1mInvalid username or password .\033[0m")
      14 else:
      15     print("\033[31;0mSorry,bye!\033[0m")
      login3


      3、用戶和密碼采用一個文件存儲,通過查詢文件來獲取賬號和密碼

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName: login4.py
       5 
       6 import getpass
       7 
       8 login_flag = False
       9 i = 0
      10 
      11 while not login_flag:
      12     if i < 3:
      13         username = input("Please enter your username:")
      14         password = getpass.getpass('Please enter your password:')
      15         f = open('user_db.txt','r')
      16         for line in f.readlines():
      17             user,passwd=line.strip().split()
      18             if user == username and passwd == password:
      19                 print("\033[34;1mWelcome to login!\033[0m")
      20                login_flag = True
      21                 break
      22         else:
      23             print("\033[31;1mInvalid username or password .\033[0m")
      24             i = i + 1
      25         f.close()
      26     else:
      27         print("\033[31;0mSorry,bye!\033[0m")
      28         login_flag = True
      login4

       

      4、先查詢用戶是否鎖定,再輸入密碼

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName:login4.py
       5 '''程序運行流程如下:
       6 1、輸入用戶名;
       7 2、根據鎖定表判斷用戶是否處于鎖定狀態,如果處于鎖定,就終結程序,輸出鎖定提示語,否則執行下面的步驟;
       8 3、輸入密碼;
       9 4、根據用戶表的賬號和密碼,對應第一步和第三步輸入的用戶名和密碼是否正常,如果正確就輸出登錄成功,否則執行第五步;
      10 5、繼續輸入密碼,當密碼輸錯次數大于3次時,就會終結整個程序,并且提示bye提示語,退出整個程序。
      11 '''
      12 
      13 import getpass
      14 import os
      15 
      16 os.system('clear')   #執行清屏,模擬登錄效果
      17 login_flag = False
      18 i = 0
      19 
      20 username = input("Please enter your username:")
      21 l = open('lock.txt')
      22 for line in l.readlines():
      23     if username == line.strip():
      24         print("\033[31;1mSorry,%s is locked!\033[0m'"%username)
      25         break
      26 else:
      27     while not login_flag:
      28         if i < 3:
      29             password = getpass.getpass('Please enter your password:')
      30             f = open('user_db.txt')
      31             for line in f.readlines():
      32                 user,passwd=line.strip().split()
      33                 if user == username and passwd == password:
      34                     print("\033[34;1mWelcome to login!\033[0m")
      35                     login_flag = True
      36                     break
      37             else:
      38                 print("\033[31;1mInvalid username or password .\033[0m")
      39                 i = i + 1
      40                 f.close()
      41         else:
      42             print("\033[31;1mSorry,bye!\033[0m")
      43             login_flag = True
      login5


      5、先查詢用戶是否鎖定,不在鎖定狀態再輸入密碼,當輸入密碼次數大于三次就把用戶寫進鎖定表

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName: login5.py
       5 
       6 '''程序運行流程如下:
       7 1、輸入用戶名;
       8 2、根據鎖定表lock.txt判斷用戶是否處于鎖定狀態,如果處于鎖定,就終結程序,輸出鎖定提示語,否則執行下面的步驟;
       9 3、輸入密碼;
      10 4、根據用戶表user_db.txt的賬號和密碼,對應第一步和第三步輸入的用戶名和密碼是否正常,如果正確就輸出登錄成功,否則執行第五步;
      11 5、繼續輸入密碼,當密碼輸錯次數大于3次時,就會終結輸密碼流程,并進行第6步;
      12 6、提示輸入密碼次數過多,并且把改用戶名存儲到鎖定表lock.txt;
      13 7、退出整個程序
      14 '''
      15 
      16 import getpass
      17 import os
      18 
      19 os.system('clear')   #執行清屏,模擬登錄效果
      20 login_flag = False
      21 i = 0
      22 
      23 username = input("Please enter your username:")
      24 l = open('lock.txt')
      25 for line in l.readlines():
      26 #    name = line.strip()
      27     if username == line.strip():
      28         print("\033[31;1mSorry,%s is locked!\033[0m'"%username)
      29         break
      30 
      31 else:
      32     while not login_flag:
      33         if i < 3:
      34             password = getpass.getpass('Please enter your password:')
      35             f = open('user_db.txt')
      36             for line in f.readlines():
      37                 user, passwd = line.strip().split()
      38                 if user == username and passwd == password:
      39                     print("\033[34;1mWelcome to login!\033[0m")
      40                     login_flag = True
      41                     f.close()
      42                     break
      43             else:
      44                 print("\033[31;1mInvalid username or password .\033[0m")
      45                 i = i + 1
      46         else:
      47             print("\033[31;1mSorry,you input too many, %s has been locked!bye!\033[0m"%username)
      48             lock = open('lock.txt', 'a')
      49             lock.write(username + '\n')
      50             login_flag = True
      51             lock.close()
      52 l.close()
      login6


      備注:上面程序發現如果輸入用戶不在用戶表,也進行輸入密碼處理,并且在輸入次數大于3次也把該用戶寫入鎖定表,不符合常理要求。因此要對輸入用戶名判斷,如何在用戶表查不到輸入的用戶應提示重新輸入用戶名和密碼。
      優化如例6


      6、先查詢用戶是否鎖定,再判斷用戶是否存在
        根據上述的嘗試,并且對上面優化了一下。原理是無論是用戶是什么狀態,都要輸入賬號和密碼再做判斷,輸入完后進行鎖定判斷;然后再做用戶是否存在判斷,如果用戶不存在,重新輸入賬號和密碼,次數超過3次自動退出程序;如果用戶存在再對密碼判斷,密碼錯誤運行給三次輸入,如果3次都輸錯,就把該用戶寫入鎖定用戶表。

      程序如下:

       1 #!/usr/bin/env python
       2 # -*- coding:utf-8 -*-
       3 # Author:Jack.Lee
       4 # FileName:login_final.py
       5 
       6 '''程序運行流程如下:
       7 1、輸入用戶名和密碼;
       8 2、根據鎖定表lock.txt判斷用戶是否處于鎖定狀態,如果處于鎖定,就終結程序,輸出鎖定提示語,否則執行下面的步驟;
       9 3、再根據用戶表user.txt的賬號來判斷是否存在該用戶,如果不存在直接跳到開始重新輸入賬號和密碼;
      10 4、在第三步如果用戶存在,接下來判斷密碼是否正確,如果密碼正確,就顯示登陸成功,并且跳出;否則執行第5步;
      11 5、密碼不正確,進行再次輸入密碼,但密碼輸入過程不能大于3次;
      12 6、當密碼輸錯次數大于3次時,把用戶寫入到鎖定表lock.txt,并且跳出流程。
      13 '''
      14 #import getpass
      15 
      16 name_flag = False                                   #定義用戶和密碼一次輸入的跳出標識位,為True跳出
      17 passwd_flag = False                                 #定義密碼輸錯重復輸密碼的跳出標識位,為True跳出
      18 i = 0
      19 j = 0
      20 
      21 while not name_flag:                                 #name_flag不為假,即真,執行下面步驟
      22     username = input("Username:")                   #把輸入用戶名和密碼一次性輸入再做判斷,該方式接近實際
      23     #password = getpass.getpass('Password:')         #該方式為密文密碼輸入,由于pycharm沒有getpass模塊,所以不采用,正式環境要求使用
      24     password = input("Password:")
      25     #判斷是否鎖定
      26     lock_file = open('lock.txt','r')                        #打開鎖定表
      27     for line in lock_file.readlines():                   #循環讀取每行數據
      28         name = line.strip()                              #去掉空格把行數據給name
      29         if username == name :                            #下面判斷用戶是否給鎖定
      30             print("\033[31;1m對不起!%s用戶已給鎖定,請聯系管理員解鎖。\033[0m'" %username)
      31             name_flag = True                            #由于用戶給鎖定,跳出整個輸入過程
      32             lock_file.close()
      33             break
      34     else:                                 #由于沒有鎖定,進行下面判斷賬號是否存在和密碼是否正確
      35         user_file = open('user.txt')
      36         for line in user_file.readlines():
      37             user,passwd = line.strip().split()
      38             if username == user:   #判斷用戶是否存在,如果存在就執行判斷密碼,否則輸出密碼不存在
      39                 while not passwd_flag:                        #passwd_flag不為假,即真,執行下面步驟
      40                     if password == passwd:                         #密碼正確,進行登錄,顯示歡迎信息
      41                         print("\033[34;1m登錄成功,歡迎來到這里!\033[0m")
      42                         name_flag = True                           #賦值True,用來跳出大while循環
      43                         passwd_flag = True                         #賦值True,用來跳出判斷密碼的while循環
      44                         exit()                                     #由于外面還有if循環,需直接跳出所有循環,采用exit()
      45                     else:                                         #密碼不正確,請重試,次數不超過3次
      46                         i +=1                                     #密碼輸入次數+1
      47                         if i < 3:                                 #if密碼次數小于3繼續執行輸入密碼
      48                             print("\033[31;1m密碼錯誤,請重試。\033[0m")
      49                             print("\033[34;1m溫馨提示:你還有%s次機會,賬號將給鎖定,請慎重!\033[0m"%(3-i))
      50                             password = input("Password:")
      51                         else:
      52                             print("\033[31;1m對不起!你輸入的次數過多, %s用戶已給鎖定!\033[0m" % username)  # 輸出提示語:輸入次數過多,給鎖定
      53                             lock_file = open('lock.txt', 'a')
      54                             lock_file.write(username + '\n')  # 把輸入密碼錯誤的用戶名寫入鎖定表
      55                             name_flag = True
      56                             passwd_flag = True
      57                             lock_file.close()              # 關閉鎖定表
      58                             exit()                         #跳出,結束
      59             else:                                         #用戶不存在,輸出提示語,并且允許重輸
      60                 j +=1
      61                 if j < 3:
      62                     print("\033[31;1m你輸入的用戶不存在,請重試。\033[0m")
      63                     break                                #跳出該if循環
      64                 else:
      65                     name_flag = True                    #輸入用戶超過3次,跳出整個輸入過程
      66                     print("\033[31;1m請核實賬號再試,謝謝!\033[0m")
      67                     break                                #跳出該循環
      login_final

      由于現階段在基礎學習階段,所以先簡單再復雜,一步步來。

      posted on 2016-11-25 12:30  隔江游來一只鵝  閱讀(2367)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜综合网| 国产精品一亚洲av日韩| 欧美大bbbb流白水| 好大好硬好爽免费视频| 国产一区二区三区精美视频| 久在线精品视频线观看| 无码免费大香伊蕉在人线国产| 国产成人综合久久精品下载| 景泰县| 日韩精品久久不卡中文字幕| 国产一二三五区不在卡| 国产精品免费AⅤ片在线观看| 灵宝市| 丝袜老师办公室里做好紧好爽| 国产97视频人人做人人爱| 亚洲夂夂婷婷色拍ww47| 久久永久视频| 国产日产欧产精品精品| 777奇米四色成人影视色区| 国产精品无遮挡在线观看| 猫咪AV成人永久网站在线观看| 午夜免费无码福利视频麻豆| 超碰人人超碰人人| 欧美国产精品不卡在线观看| 在线天堂中文新版www| 国产麻豆精品一区一区三区| 精品熟女少妇免费久久| 日本丶国产丶欧美色综合| 激情人妻自拍中文夜夜嗨| 色欲aⅴ亚洲情无码av蜜桃| 日韩精品亚洲专区在线观看| 东京热人妻无码一区二区av| 中国老妇xxxx性开放| 四虎国产精品成人免费久久| 中文字幕久久国产精品| 蜜桃麻豆www久久囤产精品| 永久免费无码av在线网站| 亚洲性色AV一区二区三区| 亚洲高清成人av在线| 国产 麻豆 日韩 欧美 久久| 精品国精品自拍自在线|