当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