簡體   English   中英

我的用戶名檢查器一直說所有名稱都可用,盡管 if/else 測試

[英]My ussername checker keeps saying all names are available, despite if/else test

我正在嘗試制作一個簡單、小巧的練習程序,用於使用 if-elif-else 語句檢查用戶名。

current_users = ['Enrique', 'Jose', 'Pablo', 'John', 'Jake']
new_users = ['Mike', 'Tom', 'Bowser', 'John', 'Howard', 'Ben']

'''for user in current_users:
        user = user.lower()
        print(user)

   for user in new_users:
        user = user.lower()
        print(user)
'''


for user in new_users:
    if user.lower() == current_users:
        print(f"{user}: That username is taken.")
    else:
        print(f"{user}: That username is available.")

我希望它為 new_user 列表和 current_user 列表中的用戶名打印消息“該用戶名已被占用”,但是相反,當我在 Sublime 文本編輯器中運行它們時,它們都評估為 True。

我知道這是一個邏輯錯誤,因為沒有給出實際的錯誤消息,但我還不太清楚。

我嘗試通過檢查 new_users 列表中的用戶名是否不是 current_users 列表開始來反轉循環。

如您所見,我已嘗試將所有用戶名更改為小寫,以查看是否有幫助,但沒有幫助。

當您在列表中查找值時,請使用“in”運算符。

    current_users = ['Enrique', 'Jose', 'Pablo', 'John', 'Jake']
    new_users = ['Mike', 'Tom', 'Bowser', 'John', 'Howard', 'Ben']


    for user in new_users:
        if user in current_users:
            print(f"{user}: That username is taken.")
        else:
            print(f"{user}: That username is available.")

問題是您將字符串與字符串列表user.lower() = current_user

此外,您正在將user.lower()user進行比較。

示例意味着"Jhon".lower() == "Jhon"會給你False

嘗試這個:

創建一個current_user的臨時列表,所有名稱都為小寫,然后檢查它是否已經被占用或可用。

current_users = ['Enrique', 'Jose', 'Pablo', 'John', 'Jake']
new_users = ['Mike', 'Tom', 'Bowser', 'John', 'Howard', 'Ben']

t_current_user = [x.lower() for x in current_users]

for user in new_users:
    if user.lower() in t_current_user:
        print(f"{user}: That username is taken.")
    else:
        print(f"{user}: That username is available.")

暫無
暫無

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

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