python如果条件“和”关键字问题

时间:2012-04-18 07:38:02

标签: python string if-statement

我只是尝试调用此代码

uname=""
passwd="jhj"
if uname =="":print "uname"
if passwd=="":print "passwd"
if not uname and passwd:
    print "either"

,输出为:

uname
either

不应该" uname"?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

简单修复就是

if not uname and not passwd:

因为它评估为

if (not uname) and (not passwd):

if not (uname or passwd):

但是,如果既未提供uname也未提供password,则无法正常工作(它会打印全部三个)。

您可以将逻辑更改为此构造,其中只执行一个print

uname = ""
passwd = "jhj"

if not (uname or passwd):
    print "either"
elif not uname:
    print "uname"
elif not passwd:
    print "passwd"

答案 1 :(得分:3)

你在这做的是:

if (not uname) and passwd:

如果你想检查它们是否都是假的,你需要这样做:

if not uname and not passwd:

请注意:

if not (uname and passwd):

不一样,就好像一个项目是True,整个事情都会评估为false。如果你想用一个not来做,那么正确的逻辑是:

if not (uname or passwd):

答案 2 :(得分:0)

您想要的是将not中的if not uname and passwd应用于uname和passwd:

if not uname and not passwd

或:

if not any((uname, passwd))