雖然這有點***,但這可以用python實現
找了個例題
編寫乙個程式,該程式能實現:設計思路1設定使用者名稱和n位的密碼(其中n≥8),並且要求密碼為長度至少8位的字母和數字構成的不能存在重複字元,否則會要求重新設定,直到設定成功
使用「input」,將使用者輸入的使用者名稱與密碼賦值給乙個變數
2 while true死迴圈,直到密碼滿足條件後使用」break「退出
3 最關鍵的部分,判斷是否符合題目要求的三個條件
密碼長度≥8
數字和字母構成,即不能只包含數字或字母
不能存在重複字元
1輸入部分
這裡用兩個變數來儲存使用者輸入的內容,分別為」name「」password「
使用」input「記錄使用者的輸入,使用」str「轉換為字串並最終賦值給前面的變數
name=str(input('請輸入使用者名稱:'))password=str(input('請輸入密碼(應為長度至少8位數的字母和數字構成,且不能出現重複字元)'))
2迴圈部分
為了使使用者在輸入不合規密碼時重新讓使用者再次輸入,所以我們需要乙個迴圈
這裡解釋下為什麼選擇while而不用for,因為我們沒辦法確定使用者輸入密碼的次數,所以,使用while會更加方便
由於我們需要使用者輸入有誤時重新輸入,所以我們要將輸入密碼的部分放到迴圈內
name=str(input('請輸入使用者名稱:'))while true:password=str(input('請輸入密碼(應為長度至少8位數的字母和數字構成,且不能出現重複字元)'))#輸入密碼部分放在迴圈內#此處省略判斷條件 break #條件合適後再執行這行**
3判斷密碼長度
字串有乙個內建函式「len()」,這個內建函式可以輸出指定字串的長度,
if len(password)<8: print('您設定的密碼位數不足8為,請重新設定!!!')
4判斷密碼是否僅為字母或數字構成
首先,先來介紹兩個方法,「isalpha」和「isdigit」
「isalpha」,這個方法可以用來判斷字串是否只包含字母,要是只包含字母,則返回「true」,反之則是「false」
使用方法:
str.isalpha()
「isalpha」,這個方法和前者很像,可以用來判斷字串是否只包含數字,要是只包含數字,則返回「true」,反之則是「false」
使用方法:
str.isdigit()
所以,我們可以利用這兩個方法,做出判斷字串是否只包含字母或數字
if password.isalpha() or password.isdigit(): print('您設定的密碼不能僅僅包含數字或字母,請重新設定!!!')
5是否含有重複的字元
這個不太好理解,我先解釋下
例如「abca123456」
這裡包含了兩個「a」,所以存在重複的字元
我的思路是這樣的,首先使用for迴圈,逐個判斷每個字元在字串中含有幾個,至於如何判斷,可以使用「count()」函式解決
for i in range(0,len(password)): if password.count(password[i])>1: j=1 #乙個臨時變數,當某乙個字元在字串中存在乙個以上,則給臨時變數賦值為1,這個臨時變數是為了後面做準備
這裡注意乙個問題,我們這裡使用了乙個臨時變數,要是我們第一次密碼存在重複,但因為迴圈,會要求使用者再次輸入密碼,這時候即使不存在重複,臨時變數依舊為1,所以程式就會出現乙個永遠都判斷你的密碼存在重複字元的bug,這個時候我們就需要在合適的地方初始化這個變數,例如:
while true: cf=0
最後使用if語句判斷這個臨時變數是不是1,要是1則代表該字串出現了重複的字元
if j==1: #注意兩個等號 print('您設定的密碼出現了重複的字元,請重新設定!!!')
6符合要求,退出迴圈
要是密碼是滿足條件的,則我們還要提示使用者並退出迴圈
在python迴圈語句中,我們可以用「break」終止迴圈
if not (len(password)<8 or (password.isalpha() or password.isdigit()) or cf==1): #不滿足前面的條件,這行**請根據實際情況修改,例如前面的「if」語句是巢狀的形式,可以用「else」 print('密碼設定成功!!!') break
自此,我們的程式基本上已經完成,只需簡單的除錯和修飾即可
以下是完成後的**,我建議看到這可以嘗試自己先動手試試,先不直接看成品
在下面
name=str(input('請輸入使用者名稱:'))print('你好 %s ,首次使用請設定密碼!!!'%name)while true: cf=0 print('='*70)#來個分割線,防止多次執行時一堆字堆一起看不清 password=str(input('請輸入密碼(應為長度至少8位數的字母和數字構成,且不能出現重複字元)')) if len(password)<8: print('▶您設定的密碼位數不足8位,請重新設定!!!') if password.isalpha() or password.isdigit(): print('▶您設定的密碼不能僅僅包含數字或字母,請重新設定!!!') for i in range(0,len(password)): if password.count(password[i])>1: cf=1 if cf==1: print('▶您設定的密碼出現了重複的字元,請重新設定!!!') if not (len(password)<8 or (password.isalpha() or password.isdigit()) or cf==1): print('密碼設定成功!!!') break """解釋下為什麼我不用多個巢狀的if,因為當我們密碼有多個不合規點時,應該一口氣告訴使用者,不然使用者可能會出現多次密碼不合規反覆輸入,我感覺這樣的互動就很不友好雖然這樣做**執行的效率不高"""
密碼長度 太短了提示
第一種方法 final edittext edittext edittext findviewbyid r.id.edittext edittext.setonfocuschangelistener new onfocuschangelistener else toast.maketext test...
演示 設定密碼長度限制 密碼加強
演示 設定密碼長度限制 密碼加強 為相關的線路訪問設定密碼可以加強密訪問的安全,而密碼字串本身的安全也是一件非常重要的事情,以下建議為設定密碼的最佳實踐 n 限定密碼字串的長度,字元數越多,猜測密碼所需要的時間越長。n建議使用混合字元,比如 大小寫字母 數字 空格和其它符號,密碼字串的組合越複雜,者...
演示 設定密碼長度限制 密碼加強
演示 設定密碼長度限制 密碼加強 為相關的線路訪問設定密碼可以加強密訪問的安全,而密碼字串本身的安全也是一件非常重要的事情,以下建議為設定密碼的最佳實踐 n 限定密碼字串的長度,字元數越多,猜測密碼所需要的時間越長。n建議使用混合字元,比如 大小寫字母 數字 空格和其它符號,密碼字串的組合越複雜,者...