【Python打卡2019】20190503之判斷密碼強度-文件讀取與操作

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,強度信息爲強(☆☆☆)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章