Po dopasowaniu stanu drukuje odpowiednią wydajność zgodnie z oczekiwaniami. Ale gdy stan nie pasuje do części "jeśli nie znaleziono" nie działa.

Tutaj, jeśli warunek sprawdza nazwę użytkownika i hasło oba. Jeśli spełnia, wykonuje kod poniżej, ale kiedy nie pasuje, wyświetla się puste, to znaczy, że nie ma nieprawidłowego wydrukowanego logowania, choć powinna zostać wydrukowana

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>"
0
Amy 7 grudzień 2013, 10:15

2 odpowiedzi

Najlepsza odpowiedź

Możesz to napisać bez flagi, używając do / innego:

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>"

Ale może lepiej użyć słownika:

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>"
0
perreal 7 grudzień 2013, 07:37
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
0
Amy 7 grudzień 2013, 07:43