題意描述:
本題要求你幫助某**的使用者註冊模組寫乙個密碼合法性檢查的小功能。該**要求使用者設定的密碼必須由不少於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 ...