簡體   English   中英

為什么我在python中循環索引無法給我正確的輸出

[英]Why my for looping an index in python not give me correct output

我是python的新手,我正在嘗試進行基本的登錄帳戶檢查,並且某種程度上,我的代碼沒有顯示我想要的內容。 我已經定義了三個用戶名,並且當我運行代碼時,如果第一次輸入不正確的用戶名,則代碼顯示帳戶不會退出,但是不建議您這樣做。 我不知道為什么

我認為這是我的for循環問題,因為當我輸入錯誤的帳戶時,我的i索引從0開始,一直循環直到結束索引,然后比較輸入的用戶名和列表中存在的用戶名。 然后在比較所有索引后,如果找不到用戶名,則表明打印帳戶不存在,我嘗試解決此問題,但找不到正確的方法。

user1=[  
   {'id':'0001','name':'123','password':'a123', 'balance':0.00},
   {'id':'0002','name':'456','password':'a456', 'balance':0.00},  
   {'id':'0003','name':'789','password':'a789', 'balance':0.00}
]

for x in range(0,4):

    name = input('User Name:')
    for i in range(len(user1)):
        if name == user1[i]['name']:  
            password = input('Password:')
            if password == user1[i]['password']:  
                print("Success login")
        continue
        if name != user1[i]['name']:
            print("Account not exist, input new one")

如果輸入錯誤的用戶名; 它應該顯示帳戶不存在,請輸入新密碼,然后輸入用戶名456,然后詢問正確的密碼。

看一下循環體的邏輯:

for i in range(len(user1)):
    if name == user1[i]['name']:  
        password = input('Password:')
        if password == user1[i]['password']:  
            print("Success login")
    continue
    if name != user1[i]['name']:
        print("Account not exist, input new one")

無論輸入什么內容,您都永遠不會到達第二條if語句: if程序到達該點,就告訴它continue下一次循環迭代。 嘗試以下方法:

for i in range(len(user1)):
    if name == user1[i]['name']:  
        password = input('Password:')
        if password == user1[i]['password']:  
            print("Success login")
        else:
            print("Account not exist, input new one")

請注意,如果您將所有帳戶都放在一個字典中,這樣做會更好,因此您可以直接訪問它們:

user1 = {
   '123': {'id':'0001', 'password':'a123', 'balance':0.00},
   '456': {'id':'0002', 'password':'a456', 'balance':0.00},  
   '789': {'id':'0003', 'password':'a789', 'balance':0.00}
}

這樣,您就可以按名稱直接訪問每個帳戶,而不用在整個列表中搜索嘗試登錄的用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM