我只是尝试调用此代码
uname=""
passwd="jhj"
if uname =="":print "uname"
if passwd=="":print "passwd"
if not uname and passwd:
print "either"
,输出为:
uname
either
不应该" uname"?我该如何解决这个问题?
答案 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))