0.任務描述
在判斷密碼強度的程序當中,加入文件操作,將成功設置的密碼信息輸出到文件當中保存。
1.Python文件操作
主要分爲三個步驟:打開文件對象,操作文件,關閉文件對象;
f = open(“文件名”,“操作模式”)函數打開文件並設置操作模式;
r表示只讀,不存在文件則報錯;w表現只寫,不存在文件則自動創建;r+可讀可寫;a表示添加寫入,w是覆蓋寫入;
f.write(“內容”)寫入內容;
f.close()關閉文件對象;
2.程序與結果
"""
實現密碼強度的判斷
+++將用戶設置的密碼及其強度輸出到文件當中
"""
# 給密碼評級,符合一個要求即加一顆星
def rank_password(password):
pwd_rank = 0
if has_number(password): # 判斷密碼中是否存在數字,存在則評價加1
pwd_rank += 1
if has_letter(password): # 判斷密碼中是否存在字母,存在則評級加1
pwd_rank += 1
if 8 <= len(password) <= 16: # 如果密碼長度符合要求則評級加1
pwd_rank += 1
pwd_rank_info = ""
if pwd_rank == 3:
print("密碼強度:強(☆☆☆)")
pwd_rank_info = "強(☆☆☆)"
elif pwd_rank == 2:
print("密碼強度:中等(☆☆)")
pwd_rank_info = "中等(☆☆)"
elif pwd_rank == 1:
print("密碼強度:弱(☆)")
print("密碼設置不成功!") # 如果僅有一條標準符合,則返回失敗
return False
print("密碼設置成功!")
# 插入文件操作代碼
# 首先 打開文件 設置寫入模式爲append(追加寫入),r爲只讀,如果不存在會報錯;w爲只寫,不存在會創建
f = open('PasswordRank2.txt', 'a')
# 寫入密碼及其強度信息
f.write("密碼爲{},強度信息爲{}\n".format(password, pwd_rank_info))
# 關閉操作對象
f.close()
return True
# 判斷密碼當中是否存在數字
def has_number(pwd):
for c in pwd:
if c.isnumeric():
return True
return False
# 判斷密碼當中是否存在字母
def has_letter(pwd):
for c in pwd:
if c.isalpha():
return True
return False
# 接收用戶輸入,並傳入方法當中
def main():
setting_times = 1
while setting_times <= 3:
pwd = input("請輸入密碼:")
if rank_password(pwd): # 如果密碼設置成功,則跳出循環
break
else:
setting_times += 1
if setting_times > 3: # 如果密碼設置次數到達上限,則輸出提示
print("嘗試次數超過上限(3次)!密碼設置失敗!")
if __name__ == '__main__':
main()
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/PasswordReliablity/PasswordRank2.py
請輸入密碼:123
密碼強度:弱(☆)
密碼設置不成功!
請輸入密碼:1234yanh
密碼強度:強(☆☆☆)
密碼設置成功!
Process finished with exit code 0
文件內容:
密碼爲yanhao1234567,強度信息爲強(☆☆☆)
密碼爲1234yanh,強度信息爲強(☆☆☆)