def validate(s):
global Cap, Low, Num, Spec
''' Checks whether the string s fits the
criteria for a valid password.
'''
capital =['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
lowercase = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
number = ['0','1','2','3','4','5','6','7','8','9']
special =['@','$','#']
for i in s:
if i in capital:
Cap = True
else:
Cap = False
if s in lowercase:
Low = True
else:
Low = False
if s in number:
Num = True
else:
Num = False
if s in special:
Spec = True
else:
Spec = False
if Cap and Low and Num and Spec is True:
return ('valid')
else:
return ('not valid')
def main():
''' The program driver. '''
# set cmd to anything except quit()
cmd = ''
# process the user commands
while cmd != 'quit':
cmd = input('> ')
password = cmd
validate(password)
main()
有人可以向我解釋爲什麼我的程序沒有返回「無效」或有效嗎?這個程序應該根據大寫,小寫,數字和特殊的要求來查看輸入是否是有效或無效的密碼。謝謝您的幫助。Python密碼要求計劃
你在哪裏調用這個函數?另外,請按照書面說明修正縮進,「validate」是一個不起任何作用的函數,並且您從全局範圍返回,這似乎是錯誤的。 – ShadowRanger
您不斷重新定義每封信的所有內容。只需在循環之前將每個變量定義爲「False」,並在循環中刪除所有「else」塊。另外,在'如果Cap和Low和Num ...'中,最後不需要'is True'。 – zondo
此外,變量應該大概不是'全球性',除非一個單詞傳遞意味着所有後續單詞通過... – ShadowRanger