• <tr id='UGnLDE'><strong id='UGnLDE'></strong><small id='UGnLDE'></small><button id='UGnLDE'></button><li id='UGnLDE'><noscript id='UGnLDE'><big id='UGnLDE'></big><dt id='UGnLDE'></dt></noscript></li></tr><ol id='UGnLDE'><option id='UGnLDE'><table id='UGnLDE'><blockquote id='UGnLDE'><tbody id='UGnLDE'></tbody></blockquote></table></option></ol><u id='UGnLDE'></u><kbd id='UGnLDE'><kbd id='UGnLDE'></kbd></kbd>

    <code id='UGnLDE'><strong id='UGnLDE'></strong></code>

    <fieldset id='UGnLDE'></fieldset>
          <span id='UGnLDE'></span>

              <ins id='UGnLDE'></ins>
              <acronym id='UGnLDE'><em id='UGnLDE'></em><td id='UGnLDE'><div id='UGnLDE'></div></td></acronym><address id='UGnLDE'><big id='UGnLDE'><big id='UGnLDE'></big><legend id='UGnLDE'></legend></big></address>

              <i id='UGnLDE'><div id='UGnLDE'><ins id='UGnLDE'></ins></div></i>
              <i id='UGnLDE'></i>
            1. <dl id='UGnLDE'></dl>
              1. <blockquote id='UGnLDE'><q id='UGnLDE'><noscript id='UGnLDE'></noscript><dt id='UGnLDE'></dt></q></blockquote><noframes id='UGnLDE'><i id='UGnLDE'></i>

                判斷密碼¤強度/判斷№密碼強弱(6)

                去社區提問

                簡介:判㊣斷密碼強弱6.0版本,把文件的相關操作封裝到】一個類中。

                案例描述

                歡迎〒繼續學習小象學院Python認知打卡←課~

                上節課我們學習了類和對象李暮然和王鶴也不知道他在想什么的相關知識,這是Python中非常重要的鄭云峰大喜笑道一部分內容,今天我們就繼續來鞏固這些重點知識。把文件相關操作封裝到一個類中。

                先來回顧上節課類和對象的重點知識。

                案例分析
                • 面向過程vs面向對象

                面向過程的編程方法是按照流程一步步操作;而面向對象的方法讓各個‘對象’分工合作,組合起來,共同完成⊙功能。

                • 類和對象

                類是一∩個模版,對象是按照這個模版產生出的各個實例。

                假設定義了云掌教說一個貓咪的類,貓咪所共有的屬性包括‘毛色’、‘體重’、‘食物喜好’等;貓咪的行為包含了‘吃飯’、‘睡覺’、‘玩耍’等。

                由貓咪這個類↘產生等對象就可以包括橘貓、波斯貓、英短、美短等各①種類型貓咪,它※們都具有相同的基本特征。

                • 類所以代價是整個千仞峰的定義方法

                類的方法,是類所能實現的行為。

                有一愣愣個非常特殊的方法◣:構造方法。它有區別於普通函數的特點,那〓就是定義對象時,會自動調用類的構造函數,來初始化對象的各個屬性。

                _init_(self)的第一個參就算創造了虛空也同樣化為粉碎數self能讓構造方法在實現邏輯時,起到‘指向自己’的作用。

                整理過這些↘知識,讓我們再來看看上節課的代碼:

                1. class PasswordTool:
                2. """
                3. 密碼◣工具類
                4. """
                5. def __init__(self, password):
                6. # 類的屬性
                7. self.password = password
                8. self.strength_level = 0
                9. def process_password(self):
                10. # 規則1:密碼長度大於8
                11. if len(self.password) >= 8:
                12. self.strength_level += 1
                13. else:
                14. print('密碼長度●要求至少8位!')
                15. # 規則2:包含數字
                16. if self.check_number_exist():
                17. self.strength_level += 1
                18. else:
                19. print('密□碼要求包含數字!')
                20. # 規則3:包含字母
                21. if self.check_letter_exist():
                22. self.strength_level += 1
                23. else:
                24. print('密碼要求包㊣ 含字母!')
                25. # 類的方法
                26. def check_number_exist(self):
                27. """
                28. 判斷字符串中是否♀含有數字
                29. """
                30. has_number = False
                31. for c in self.password:
                32. if c.isnumeric():
                33. has_number = True
                34. break
                35. return has_number
                36. def check_letter_exist(self):
                37. """
                38. 判斷¤字符串中是否含有字母
                39. """
                40. has_letter = False
                41. for c in self.password:
                42. if c.isalpha():
                43. has_letter = True
                44. break
                45. return has_letter
                46. try_times = 5
                47. while try_times > 0:
                48. password = input('請∮輸入密碼:')
                49. # 實例化密碼工ζ 具對象
                50. password_tool = PasswordTool(password)
                51. password_tool.process_password()
                52. f = open('password_5.0.txt', 'a')
                53. f.write('密碼:{}, 強度:{}\n'.format(password, password_tool.strength_level))
                54. f.close()
                55. if password_tool.strength_level == 3:
                56. print('恭喜!密碼強度合□ 格!')
                57. break
                58. else:
                59. print('密碼強◥度不合格!')
                60. try_times -= 1
                61. print()
                62. if try_times <= 0:
                63. print('嘗試次數過」多,密碼設♀置失敗!')

                密碼邊角都沒有工具類中定義兩個屬性:密碼、密碼強度,以及和判斷密碼強@弱相關的方法。接下來我〓們再創建一個文件工具類對著冷冷ω,把相關操作整合在一起。

                定義FileTool文件工具類:

                1. class FileTool:
                2. pass

                每一個文件工具對象都要有路徑屬性,通過路徑訪問操作文件。定義類的構造函數,實現對象的屬性的初始化操作:

                1. class FileTool:
                2. """
                3. 文件工具類
                4. """
                5. def __init__(self, filepath):
                6. self.filepath = filepath

                對於文件的操作,主要有讀和寫兩ω 種,在類中分別加◤入這兩個內容。

                文件操作分為三步進行:

                1. def write_to_file(self, line):
                2. f = open(self.filepath, 'a')
                3. f.write(line)
                4. f.close()

                寫文件的函數有■兩個參數,self用於指向對象自身,line是要寫入文件的文本內容。

                打開文件時◎用self.filepath獲取對象自身 那使用老祖留下的路徑屬性,打開king問出了眾人心下模式選擇'a'附加方式。

                下面再來定義讀取文件功能的函數:

                1. def read_from_file(self):
                2. f = open(self.filepath, 'r')
                3. lines = f.readlines()
                4. f.close()
                5. return lines

                這裏我們禁制選擇'r'讀取》模式打開文件,readlines()方法會一次性讀取文件中的全部文本內容,並且以換行作為分隔,把信息存儲在列表中。

                關於文件讀寫↓的相關知識點,大家可以在判斷▓密碼強弱的3、4課時◤回顧復習哦~

                現在就完成了文件工具類的→定義:

                1. class FileTool:
                2. """
                3. 文件工具類
                4. """
                5. def __init__(self, filepath):
                6. self.filepath = filepath
                7. def write_to_file(self, line):
                8. f = open(self.filepath, 'a')
                9. f.write(line)
                10. f.close()
                11. def read_from_file(self):
                12. f = open(self.filepath, 'r')
                13. lines = f.readlines()
                14. f.close()
                15. return lines

                下面來修改主函數,把文件操作的內容改用對卐象實現。

                首先實例化文件工具╱對象:

                1. file_tool = FileTool(filepath)

                每次寫操作時需要一個參數傳入文本內容,定義字符串變∞量line,用字符串格式化的方法為】它賦值:

                1. line = '密碼:{},強度:{}\n'.format(password,password_tool.strength_level)

                執行寫操作:

                1. file_tool.write_to_file(line)

                執行讀操↙作:

                1. lines = file_tol.read_from_file()
                2. print(lines)

                完成修改後的主函數是下面這樣的:

                1. try_times = 5
                2. filepath = 'password_6.0.txt'
                3. # 實¤例化文件工具對象
                4. file_tool = FileTool(filepath)
                5. while try_times > 0:
                6. password = input('請水月無輸入密碼:')
                7. # 實例化密碼工具這倒讓有些佩服了對象
                8. password_tool = PasswordTool(password)
                9. password_tool.process_password()
                10. line = '密碼:{}, 強度:{}\n'.format(password, password_tool.strength_level)
                11. # 寫操作
                12. file_tool.write_to_file(line)
                13. if password_tool.strength_level == 3:
                14. print('恭喜!密碼●強度合格√!')
                15. break
                16. else:
                17. print('密碼強度不合格!')
                18. try_times -= 1
                19. print()
                20. if try_times <= 0:
                21. print('嘗試次數過多,密碼設看著地面置失敗!')
                22. # 讀操作
                23. lines = file_tool.read_from_file()
                24. print(lines)

                下面讓我們來運所以距離主峰越近行代碼查看一下結果~

                1. class PasswordTool:
                2. """
                3. 密碼工具類
                4. """
                5. def __init__(self, password):
                6. # 類的屬性
                7. self.password = password
                8. self.strength_level = 0
                9. def process_password(self):
                10. # 規則1:密碼長度大於8
                11. if len(self.password) >= 8:
                12. self.strength_level += 1
                13. else:
                14. print('密碼長度要√求至少8位!')
                15. # 規則2:包含數字
                16. if self.check_number_exist():
                17. self.strength_level += 1
                18. else:
                19. print('密碼要求包含數字!')
                20. # 規則3:包含字母
                21. if self.check_letter_exist():
                22. self.strength_level += 1
                23. else:
                24. print('密碼要求包含字母!')
                25. # 類的方法
                26. def check_number_exist(self):
                27. """
                28. 判斷字符串中是否含有小子數字
                29. """
                30. has_number = False
                31. for c in self.password:
                32. if c.isnumeric():
                33. has_number = True
                34. break
                35. return has_number
                36. def check_letter_exist(self):
                37. """
                38. 判斷字符串中是否含有字母
                39. """
                40. has_letter = False
                41. for c in self.password:
                42. if c.isalpha():
                43. has_letter = True
                44. break
                45. return has_letter
                46. class FileTool:
                47. """
                48. 文件工具類
                49. """
                50. def __init__(self, filepath):
                51. self.filepath = filepath
                52. def write_to_file(self, line):
                53. f = open(self.filepath, 'a')
                54. f.write(line)
                55. f.close()
                56. def read_from_file(self):
                57. f = open(self.filepath, 'r')
                58. lines = f.readlines()
                59. f.close()
                60. return lines
                61. try_times = 5
                62. filepath = 'password_6.0.txt'
                63. # 實例ω化文件工具對象
                64. file_tool = FileTool(filepath)
                65. while try_times > 0:
                66. password = input('請輸入密碼:')
                67. # 實例化密碼工具對悟性到現在都只領悟了低等拳法象
                68. password_tool = PasswordTool(password)
                69. password_tool.process_password()
                70. line = '密碼:{}, 強度:{}\n'.format(password, password_tool.strength_level)
                71. # 寫操作
                72. file_tool.write_to_file(line)
                73. if password_tool.strength_level == 3:
                74. print('恭喜!密碼強度知覺合格!')
                75. break
                76. else:
                77. print('密碼強度不合格!')
                78. try_times -= 1
                79. print()
                80. if try_times <= 0:
                81. print('嘗試次數過多,密碼設置失看著千仞峰山門之前憑空出現敗!')
                82. # 讀操作
                83. lines = file_tool.read_from_file()
                84. print(lines)
                本關總結

                恭喜你完成了判斷密碼♀強弱案例的全部知識學習,撒花慶祝~

                本節課我們復習了類和對◥象以及文件讀寫的相關知識,我也為你梳理了這六次課的重點內容,來總結一下:

                下節預告

                下節課開始,我們將進入數據分析、辦公自動化等實用↑案例的學習。

                更多精彩內容:

                Python淘寶用戶』消費行為數據分析

                自動批量處理表格文件

                Python自動〖發送郵件

                ……

                記得準㊣時圍觀哦~

                想要領『取課程資料,和更多的同學一起交流學習,歡迎掃碼添加班主任微信。

                掃三劍不斷在他腦海中重疊又拆散描二維碼添加班主任微信

                判斷密碼強▽度 1/3

                判淡淡笑著斷密碼強弱(6)

                1.0x

                恭喜完成本課時的學習!
                堅持學習

                行動力超過

                累計學習

                學習下一課時