如何检查脚本中的多个变量是否为真?

时间:2013-11-05 13:30:39

标签: python

我正在尝试创建一个脚本,在脚本中,评估变量,如果它通过其中一个测试,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?

3 个答案:

答案 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()