我之前問過這個問題,雖然 StackOverflow 用戶的回答是對的,但它有點無法回答我的問題,或者對于像我這樣的初學者來說有點復雜,所以我會再問一次:)。
所以這是一個檢查字串是否符合某些標準的代碼......
def passwordlength(password: str):
upper = digit = special = False
for char in password:
if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :
upper = True
elif char in "1234567890":
digit = True
elif char in "$#@%!":
special = True
return upper and digit and special
def password(password: str):
if passwordlength(password):
if not (6 < len(password) < 12):
return False
else:
return True
所以這部分作業正常。我的初始代碼沒問題。但是,我正在嘗試編輯我的代碼,以便如果數字、字符或字母連續出現 3 次......例如,AAA 或 ccc 或 111 或 ###,輸出將為假
這是我的嘗試,它根本不起作用......
def passwordlength(password: str):
upper = digit = special = False
for char in password:
if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :
upper = True
elif char in "1234567890":
digit = True
elif char in "$#@%!":
special = True
return upper and digit and special
def password(password: str):
if passwordlength(password):
if not (6 < len(password) < 12):
return False
for char in password:
if password.count(char) > 3:
return False
return True
return False
我應該在我的代碼中更改什么以確保它有效?
請盡可能使用最簡單的編碼形式,因為我是初學者,我想在編程時學習:)。另外請不要使用,import或者collections.iter因為我還沒有學過......我正在在線學習python,我還沒有學到那么遠......謝謝:)
uj5u.com熱心網友回復:
你可以檢查這個:
any(char * 3 in password
for char in password)
或者你的風格:
for char in password:
if char * 3 in password:
return False
uj5u.com熱心網友回復:
一個簡單的實作是:
def check_repeating_chars(password):
for i in range(2, len(password)):
if password[i] == password[i-1] == password[i-2]:
return False
return True
uj5u.com熱心網友回復:
這是一個將字串作為輸入的函式,true如果任何字符連續出現 3 次,則回傳,否則回傳false:
def does_char_appear_three_times_in_a_row(input_string):
last_char = ''
count = 0
for c in input_string:
if c == last_char:
count = 1
else:
count = 1
if count == 3:
return True
last_char = c
return False
uj5u.com熱心網友回復:
我想出了以下想法:
qtt = 0
last_char = None
for char in password:
if char == last_char:
qtt = 1
else:
qtt = 0
if qtt == 2:
return False
last_char = char
您遍歷字串中的每個字符,然后將其與最后一個字符進行比較,如果它們相同,則計數,如果不同,則必須再次開始計數,因此將 0 傳遞給qtt. 如果qtt等于 2,你發現 2 個 last_chars 等于 chars,它給你 3 個相同字符的序列。最后,您將 last_char 更改為實際字符,因此下次它將是 last_char,而 for 將為您提供一個新字符。我希望這是足夠的說教。
uj5u.com熱心網友回復:
您的代碼不作業,你想,因為道路password.count(char)計數所有出現的char。做你想做的事情的一種可能方法是:
def check_char(password):
for n in range(0, (len(password)-2)):
if (password[n] == password[n 1]) and (password[n] == password[n 2]):
return False
return True
但我會推薦使用正則運算式。
uj5u.com熱心網友回復:
我會說最簡單的解決方案是這樣的
inarow = 0
for i in range(1, len(password)):
if password[i] == password[i-1]:
inarow = 1
else:
inarow = 1
if inarow == 3:
return False
return True
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363636.html
