当python中的条件不匹配时,无法执行if语句的else部分

当python中的条件不匹配时,无法执行if语句的else部分,python,for-loop,Python,For Loop,当条件匹配时,它将按预期打印正确的输出。但当条件不匹配时,“如果未找到”零件不工作 此处,如果条件同时检查用户名和密码。如果它满足,它会执行下面的代码,但是当它不匹配时,它会显示为空,我的意思是没有打印无效的登录,尽管它应该被打印出来 passwd = {} actual_user = {} found = False for row in prsnobj.result: actual_user[row[0]] = row[1] for i in range(1, 100):

当条件匹配时,它将按预期打印正确的输出。但当条件不匹配时,“如果未找到”零件不工作

此处,如果条件同时检查用户名和密码。如果它满足,它会执行下面的代码,但是当它不匹配时,它会显示为空,我的意思是没有打印无效的登录,尽管它应该被打印出来

passwd = {}
actual_user = {}
found = False

for row in prsnobj.result:
    actual_user[row[0]] = row[1]

    for i in range(1, 100):
        passwd[row[0]] = row[2]


for i in range(1, 100):

    if login == actual_user[i] and password == passwd[i]:
        found = True
        print "WELCOME !!" 

    if not found:
        print "<h4>Invalid Login</h4>"
passwd={}
实际用户={}
发现=错误
对于prsnobj.result中的行:
实际用户[行[0]]=行[1]
对于范围(1100)内的i:
passwd[行[0]]=行[2]
对于范围(1100)内的i:
如果login==实际用户[i]和password==passwd[i]:
找到=真
打印“欢迎!!”
如果未找到:
打印“无效登录”

您可以在不带标志的情况下编写此代码,使用for/else:

for u, p in zip(actual_user.values(), passwd.values()):
    if login == u and password == p:
        print "WELCOME !!"
        break
else:
    print "<h4>Invalid Login</h4>"
zip中的u,p的
(实际的_user.values(),passwd.values()):
如果登录名==u,密码==p:
打印“欢迎!!”
打破
其他:
打印“无效登录”
但最好使用字典:

logindb = {row[1]:row[2] for row in prsnobj.result}

if login in logindb and logindb[login] == password:
    print "WELCOME !!" 
else:
    print "<h4>Invalid Login</h4>"

logindb={row[1]:prsnobj.result中的行的行[2]
如果登录到logindb和logindb[login]==密码:
打印“欢迎!!”
其他:
打印“无效登录”

代码的相关部分可以更简单地表示为:

if a == 1:
    found = True

if not found:
    print "not found"
问题是从未将found设置为false。即使a不等于1,从上一次发现某个内容开始,“发现”仍然为真

所以解决方案是这样的:

found = False

if a == 1:
    found = True

if not found:
    print "not found"

您应该使用else而不是if not found:expression。您可以尝试在for循环中执行该部分吗?是的,我的inside for循环可以完成fine@Surinderツ: 否则也不行。我试过了。你犯了什么错误?post full stacktrace有问题。在u和p中…意外值出现在prsnobj中的行的LoginDB={row[1]:row[2]。结果}^语法错误:无效语法。我正在使用Python2.5语法错误loop@user3003685,我没有那个版本。在第一个版本中,您得到了什么类型的意外值?u和p包含1,2,3类型值…..我的第[0]行包含Id,第[1]行包含用户名列表,第[2]行包含密码列表。如何访问和比较每个元素?@user3003685,我想我刚刚解决了这个问题
for row in prsnobj.result:

    logindb = {row[1]:row[2]}
    #print logindb

    if login in logindb and logindb[login] == password:
        print "Welcome"
        break 
    else:
        print "Invalid"
        break