+ 1
PASSWORD VALIDATION
''' Task: Write a program that takes in a string as input and evaluates it as a valid password. The password is valid if it has at a minimum 2 numbers, 2 of the following special characters ('!', '@', '#', '
#x27;, '%', '&', '*'), and a length of at least 7 characters. If the password passes the check, output 'Strong', else output 'Weak'. Input Format: A string representing the password to evaluate. Output Format: A string that says 'Strong' if the input meets the requirements, or 'Weak', if not. Sample Input: [email protected]$World19 Sample Output: Strong ''' password = input() import re pattern = r"[0-9]{2,}[[email protected]#$%&*]{2,2}" if len(password)>=7 and re.search(pattern,password): print ("Strong") else: print ("Weak") What's wrong in this code???12 Answers
+ 2
《 Nicko12 》 Thanks for your input brother. You explained 2 vital concepts needed to solve this challenge.
(I) Order
(ii) seperated test cases
With the help of these inputs, I have finally solved this challenge.
My code is -
password = input()
import re
pattern1 = r".*[0-9]+.*[0-9]+.*"
pattern2 = r".*[[email protected]#$%&*]{1}.*[[email protected]#$%&*]{1}.*"
if len(password)>=7 and re.search(pattern1,password) and re.search(pattern2,password):
print ("Strong")
else:
print ("Weak")
Thanks a lot!!!
+ 3
password = input()
import re
pattern1 = r"[0-9]{2,}"
pattern2 = r"[[email protected]#$%&*]{2,}"
if len(password)>=7 and re.search(pattern1,password) and re.search(pattern2,password):
print ("Strong")
else:
print ("Weak")
# Patterns are seperated so that it will just search for numbers and symbols regardless of the order. The reason why your pattern does not work in other test cases is because the condition will only become true if the number comes first before the symbol.
+ 2
CHANDAN ROY
Oh ok, maybe the reason is the last test cases' number or symbol have letters in between i.e. , seperated. Try this:
password = input()
import re
pattern1 = r"[0-9]"
pattern2 = r"[[email protected]#$%&*]"
if len(password)>=7 and len(re.findall(pattern1,password)) >= 2 and len(re.findall(pattern2,password)) >= 2:
print ("Strong")
else:
print ("Weak")
# re.findall creates a list containing elements that satisfy the pattern. We used "len" method to know how many numbers or symbols are there.
+ 2
CHANDAN ROY
Hello2wo#[email protected]
+ 1
《 Nicko12 》 That explanation was really helpful and it did solve one of the two tests that I had failed.
Most importantly, I learnt something I had missed in the lesson though it was explained there.
So, thanks a lot!!
It still fails one last hidden condition.
0
《 Nicko12 》 Give an example of what you just said in opening line of your previous comment "maybe the reason is the last test cases number of symbol have letters in between I.e.,seperated."
0
is this not working? I tried this and the problem is solved.
https://code.sololearn.com/ccwGiV7xykIi/?ref=app
0
import re
s = input()
if len(s) >= 7:
pattern = r"[0-9].*[0-9]"
if re.search(pattern, s):
pattern = r"[[email protected]#$%&*].*[[email protected]#$%&*]"
if re.search(pattern, s):
print('Strong')
else:
print('Weak')
else:
print('Weak')
else:
print('Weak')
0
Works like a charm 😊
i = list(input())
sc = list("[email protected]#$%&*")
n = list("0123456789")
cSc = 0
cN = 0
for x in i:
if x in sc:
cSc += 1
if x in n:
cN += 1
if cSc >= 2 and cN >= 2 and len(i) >= 7:
print("Strong")
else:
print("Weak")
0
import re
password = input()
symbols_list = re.findall('[[email protected]#$%&*]', password )
number_list = re.findall("[0-9]", password )
if len(password) >= 7 and len(symbols_list ) >= 2 and len(number_list )>=2:
print("Strong")
else:
print("Weak")
- 2
(305) 600-7646
Hot today
Тренажер кода
1 Votes
help my code does not iterate
0 Votes
What's wrong with this??
0 Votes
What is the problem 🤨🧐??
1 Votes
Generador de divicion python.
0 Votes