1

私は単にこのコードを呼び出そうとしています

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

出力は次のとおりです。

uname
either

「uname」ではないでしょうか?どうすれば修正できますか?

4

3 に答える 3

3

ここで行っていることはこれです:

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):
于 2012-04-18T07:42:00.887 に答える
3

簡単な修正は

if not uname and not passwd:

と評価されるので

if (not uname) and (not passwd):

また

if not (uname or passwd):

unameただし、どちらも指定されていない場合、これは期待どおりに機能しませんpassword(3 つすべてが出力されます)。

print1 つだけが実行されるこの構成にロジックを変更できます。

uname = ""
passwd = "jhj"

if not (uname or passwd):
    print "either"
elif not uname:
    print "uname"
elif not passwd:
    print "passwd"
于 2012-04-18T07:40:35.270 に答える
0

あなたが望むのは、una​​meとpasswdの両方にnotinを適用することです:if not uname and passwd

if not uname and not passwd

また:

if not any((uname, passwd))

于 2012-04-18T07:43:14.263 に答える