我只是尝试调用此代码
uname=""
passwd="jhj"
if uname =="":print "uname"
if passwd=="":print "passwd"
if not uname and passwd:
print "either"
输出是:
uname
either
它不应该是“uname”吗?我该如何解决这个问题?
我只是尝试调用此代码
uname=""
passwd="jhj"
if uname =="":print "uname"
if passwd=="":print "passwd"
if not uname and passwd:
print "either"
输出是:
uname
either
它不应该是“uname”吗?我该如何解决这个问题?
简单的修复将是
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"
你在这里做的是:
if (not uname) and passwd:
如果要检查它们是否都是错误的,则需要执行以下操作:
if not uname and not passwd:
注意:
if not (uname and passwd):
不是一回事,好像一个项目是True,整个事情都会评估为假。如果你想用 one 来做not
,正确的逻辑是:
if not (uname or passwd):
您想要的是将not
inif not uname and passwd
应用于 uname 和 passwd:
if not uname and not passwd
或者:
if not any((uname, passwd))