+ 1

''' 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???

4th Jan 2021, 3:26 AM
CHANDAN ROY
+ 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!!!
4th Jan 2021, 9:21 AM
CHANDAN ROY
+ 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.
4th Jan 2021, 5:03 AM
noteve
+ 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.
4th Jan 2021, 7:02 AM
noteve
4th Jan 2021, 7:37 AM
noteve
+ 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.
4th Jan 2021, 5:50 AM
CHANDAN ROY
4th Jan 2021, 4:40 AM
CHANDAN ROY
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."
4th Jan 2021, 7:08 AM
CHANDAN ROY
0
is this not working? I tried this and the problem is solved. https://code.sololearn.com/ccwGiV7xykIi/?ref=app
4th Jan 2021, 9:09 AM
noteve
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')
4th Jan 2021, 3:03 PM
QerdeX
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")
30th Jun 2022, 7:33 AM
Martin Valdés Mallaug
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")
6th Sep 2022, 8:27 AM
yonis Alvarez
- 2
(305) 600-7646
4th Jan 2021, 2:46 PM
Joshua Parker