[英]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.