1081 檢查密碼 15 分

2021-09-24 02:34:54 字數 3389 閱讀 2134

題意描述:

本題要求你幫助某**的使用者註冊模組寫乙個密碼合法性檢查的小功能。該**要求使用者設定的密碼必須由不少於6個字元組成,並且只能有英文本母、數字和小數點 .,還必須既有字母也有數字。

輸入格式:

輸入第一行給出乙個正整數 n(≤ 100),隨後 n 行,每行給出乙個使用者設定的密碼,為不超過 80 個字元的非空字串,以回車結束。

輸出格式:

對每個使用者的密碼,在一行中輸出系統反饋資訊,分以下5種:

輸入樣例:

5

123s

zheshi.wodepw

1234.5678

wanmei23333

pass*word.6

輸出樣例:

your password is tai duan le.

your password needs shu zi.

your password needs zi mu.

your password is wan mei.

your password is tai luan le.

解題思路:mara:檢查密碼⊙0⊙,又是處理字串,我看看題目。

jack: 就是計算字串的長度,裡面某種字元的個數,然後看是不是有別的字元之類的,這些操作我們都很熟悉了。

mara: 恩,不錯不錯,有一點問題你看到沒,後三種非法字串都是在密碼長度合法的條件下的。如果它們同時出現怎麼辦,就是乙個字串既存在不合法字元,也缺少數字,也缺少字母。

jack: (¦3」∠) ,是啊,不過題目裡面怎麼說

長度合法,但只有字母沒有數字

,那不是連小數點也沒有啊。

mara: 小數點不是必須的啦,但是必須既有數字又有字母。按理說,應該不會出現既沒有數字也沒有字母的情況,因為題目中對這種情況根本沒有說明啊。

jack: 如果有我們該怎麼辦 ?輸出兩行??

mara: 題目說:

對每個使用者的密碼,在一行中輸出系統反饋資訊,分以下5種:

肯定是只能輸出一行,一條資訊的。可能是按照順序來的,判定規則的順序有時候就代表著重要性,先判斷是不是有不合法字元,不是的話再判斷是不是只有字母沒有數字,然後再判斷是不是只有數字沒有字母。

jack: 我去試試。。

jack: 過了過了。○( ^皿^)っhiahiahia…

**:

def

main()

: n =

int(

input()

)# 接收輸入的正整數n

for x in

range

(n):

# 依次讀入每行輸入的密碼字串並輸出判別結果。

print

("your password {}"

.format

(check_password(

input()

)))return

defcheck_password

(string)

:"""

根據題意檢查乙個密碼是否是合法密碼,返回對應的字串。要注意題目中對非法字

符串的檢測順序,從上到下在邏輯上是遞進的。

"""ret =

""if

len(string)

<6:

ret =

"is tai duan le."

# 密碼太短

else

:# 密碼長度合法的情況下,累計密碼字串中數字字元,字母字元的個數並判斷是

# 否有非法的其他字元存在。

alphas =

0# 累計字母字元的數量

number =

0# 累計數字字元的數量

for x in string:

if is_number(x)

: number +=

1# 數字字元數量加一

elif is_aplhabets(x)

: alphas +=

1# 字母字元數量加一

elif x !=

'.':

# 非數字字元,非字母字元,也不是'.',那就是非法的其他字元了。根據

# 題意中規則的順序,這裡應該直接判定是'tai luan le.'

ret =

'is tai luan le.'

if ret =='':

# 如果字元不是太短了,也不是太亂了,再檢視是不是缺少字母或者數字。

if number ==0:

ret =

'needs shu zi.'

# 缺少數字的情況

elif alphas ==0:

# 缺少字母的情況

ret =

'needs zi mu.'

if ret =='':

# 通過了重重檢查,恭喜你得到了乙個合法的密碼字串

ret =

'is wan mei.'

return ret

defis_number

(x):

# 判斷乙個字元是否是數字字元

return x in

'0123456789'

defis_aplhabets

(x):

# 判斷乙個字元是否是英文本母

iford

(x)>=

ord(

'a')

andord

(x)<=

ord(

'z')

:# 若該字母是小寫英文本母

return

true

iford

(x)>=

ord(

'a')

andord

(x)<=

ord(

'z')

:# 若該字母是大寫英文本母

return

true

# 既不是大寫英文本母也不是小寫英文本母

return

false

if __name__ ==

'__main__'

: main(

)

易錯點:總結:

1081 檢查密碼(15 分)

1081 檢查密碼 15 分 本題要求你幫助某 的使用者註冊模組寫乙個密碼合法性檢查的小功能。該 要求使用者設定的密碼必須由不少於6個字元組成,並且只能有英文本母 數字和小數點 還必須既有字母也有數字。輸入格式 輸入第一行給出乙個正整數 n 100 隨後 n 行,每行給出乙個使用者設定的密碼,為不超...

1081 檢查密碼(15 分)

本題要求你幫助某 的使用者註冊模組寫乙個密碼合法性檢查的小功能 該 要求使用者設定的密碼必須由不少於 6個字元組成,並且只能有英文本母,數字和小數點 還必須既有字母也有數字。輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個使用者設定的密碼,為不超過80個字元的非空字串,以回車結束。對每個使...

1081 檢查密碼 (15 分)

1081 檢查密碼 15 分 本題要求你幫助某 的使用者註冊模組寫乙個密碼合法性檢查的小功能。該 要求使用者設定的密碼必須由不少於6個字元組成,並且只能有英文本母 數字和小數點.還必須既有字母也有數字。輸入第一行給出乙個正整數 n 100 隨後 n 行,每行給出乙個使用者設定的密碼,為不超過 80 ...