0

Help

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'. My code: password = input() x = "" y = "" for i in password : if i.isnumeric(): x = x + i if i == '!' or '@' or '#' or '
#x27; or '%' or '&' or '*': y = y + i if len(password) >=7 and len(x) >= 2 and len(y) >= 2 : print("Strong") else: print("Weak") I got all the cases correct except case number 8 Anyone knows the problem?

2nd Jul 2022, 11:54 PM
Jassim Id Charif
Jassim Id Charif - avatar
5 Answers
+ 5
Jassim Id Charif , allow me to give 2 comments to your code: => using isnumeric(): you may be surprised, but isnumeric() does not only accept digits from 0 -> 9, but also fractions in various languages. password = "ꠔ↉୎Œ#@asdf" will be cosidered as "Strong" by your code -> we should use isdigit() instead. this accepts only digits from 0 -> 9. => 2 if starements: it would be better to use elif ... instead of the second if
3rd Jul 2022, 4:39 PM
Lothar
Lothar - avatar
3rd Jul 2022, 1:02 AM
Jassim Id Charif
Jassim Id Charif - avatar
+ 2
Korkunç the Terrible Frusciante no problem everything was clear . I think they updated it cuz now its 7 char
3rd Jul 2022, 1:12 AM
Jassim Id Charif
Jassim Id Charif - avatar
+ 2
Hello, I deleted my reply here because it was severely lacking. I put a link for a much better explanation. i == "#" or i == "&" or... : part still applies. That you can instead do: if i in "#&!%@": still applies too. But Python logic is not exactly like normal logic due to parsing. Please have a look at Per Bratthammar reply in this: https://www.sololearn.com/Discuss/3056739/?ref=app The more relevant info is or getting evaluated lazily. That's what makes things different. Today something RW said in the below discussion reminded me of your post (anything that's 0 evaluating to False). Well that means, as PB said in his post, (), "", {}, [] evaluate to False. That shouldn't have been left unmentioned either. (I'd just mentioned "not True" and 0) https://www.sololearn.com/Discuss/3057633/?ref=app As a side note: This was irresponsible. I'll refrain from replying questions. BTW, please take note of Brian's short circuit remark on why parantheses might not always work with "or".
9th Jul 2022, 6:08 AM
Korkunç el Gato
Korkunç el Gato - avatar
+ 1
Not at all, and sorry for the typos :) I thought this exercise had max char restriction too, though, 14 or something?
3rd Jul 2022, 1:05 AM
Korkunç el Gato
Korkunç el Gato - avatar