私は単にこのコードを呼び出そうとしています
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 passwd:
それらが両方ともfalseであるかどうかを確認する場合は、次のことを行う必要があります。
if not uname and not passwd:
ご了承ください:
if not (uname and passwd):
同じことではありません。1つの項目がTrueであるかのように、すべてがFalseと評価されます。1つでそれを実行したい場合not
、正しいロジックは次のとおりです。
if not (uname or passwd):
簡単な修正は
if not uname and not passwd:
と評価されるので
if (not uname) and (not passwd):
また
if not (uname or passwd):
uname
ただし、どちらも指定されていない場合、これは期待どおりに機能しませんpassword
(3 つすべてが出力されます)。
print
1 つだけが実行されるこの構成にロジックを変更できます。
uname = ""
passwd = "jhj"
if not (uname or passwd):
print "either"
elif not uname:
print "uname"
elif not passwd:
print "passwd"
あなたが望むのは、unameとpasswdの両方にnot
inを適用することです:if not uname and passwd
if not uname and not passwd
また:
if not any((uname, passwd))