即使一个评估为true,也要检查Python中的每个条件

Jos*_*ana 1 python if-statement

如果一个求值为true,Python中有没有办法继续检查if else语句的条件?这是我的代码:

status = True

  if pass_len(S) == False:
    print ('Password must be at least 6 characters long')
    status = False
  elif pass_upper(S) == False:
    print('Password must include upper case letters')
    status = False
  elif pass_lower(S) == False:
    print('Password must include lower case letters')
    status = False
  elif pass_nums(S) == False:
    print('Password must include digits.')
    status = False
  else:
    status = True

  return status
Run Code Online (Sandbox Code Playgroud)

例如,如果密码没有大写字符或数字,我想打印这两个消息,而不仅仅是"密码必须包含大写字母",它就在那里结束.我尝试通过退回每个声明来解决这个问题,但它没有奏效.任何帮助表示赞赏,谢谢.

Pad*_*ham 8

不要使用elif,使用if将确保检查条件.elif只会在if语句求值时检查False

In [40]: foo = 3

In [41]: if foo == 3:
   ....:     print (foo)
   ....: if foo != 4:    
   ....:     print ("checked too")
   ....:     
3
checked too
Run Code Online (Sandbox Code Playgroud)

status = True设置状态True已经这样就return status不需要了else


Jas*_*n S 5

另一种执行此操作的方法是较短的方法,它还为您提供了触发列表错误的列表:

errors = [message for (has_error, message) in (
    (not pass_len(S), 'Password must be at least 6 characters long'),
    (not pass_upper(S), 'Password must include upper case letters'),
    (not pass_lower(S), 'Password must include lower case letters'),
    (not pass_nums(S), 'Password must include digits.'),
    ) if has_error]
Run Code Online (Sandbox Code Playgroud)