我正在尝试创建一个脚本,在脚本中,评估变量,如果它通过其中一个测试,if / else语句中的变量将设置为true。
if re.search(r'[A-Z]', password):
conditions_met += 1
else:
password_needs_uppercase = True
if re.search(r'[a-z]', password):
conditions_met += 1
else:
password_needs_lowercase = True
if re.search('\d', password):
conditions_met += 1
else:
password_needs_number = True
如何检查其中一个变量(password_needs_uppercase,password_needs_lowercase和password_needs_number)是否为True?
答案 0 :(得分:2)
使用any():
if any((password_needs_uppercase, password_needs_lowercase,
password_needs_number)):
答案 1 :(得分:1)
你根本不需要正则表达式
password_needs_uppercase, password_needs_lowercase, password_needs_number = True, True, True
password = "Welcome123"
for char in password:
if char.isupper(): password_needs_uppercase = False
elif char.islower(): password_needs_lowercase = False
elif char.isdigit(): password_needs_number = False
if any((password_needs_number, password_needs_lowercase, password_needs_uppercase)):
print "password is not valid"
答案 2 :(得分:0)
您只需检查传递的搜索次数是否小于可能的最大值。
if re.search(r'[A-Z]', password):
conditions_met += 1
if re.search(r'[a-z]', password):
conditions_met += 1
if re.search('\d', password):
conditions_met += 1
if conditions_met < 3:
handle_bad_password()
如果您需要针对每个失败案例进行特定处理,最好立即执行,而不是使用稍后检查的硬编码变量名称。
if not re.search(r'[A-Z]', password):
handle_missing_uppercase()
elif not re.search(r'[a-z]', password):
handle_missing_lowercase()
elif re.search('\d', password):
handle_missing_numbers()
else:
handle_acceptible_password()