问题描述
我正在尝试制作一个简单,小型的练习程序,使用if-elif-else语句检查用户名。
current_users = ['Enrique','Jose','Pablo','John','Jake']
new_users = ['Mike','Tom','Bowser','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。 / p>
我知道这是一个逻辑错误,因为没有给出任何实际的错误消息,但是我还不太清楚。
我尝试通过检查new_users列表中的用户名是否不是current_users列表中的用户名来反转循环。
如您所见,我尝试将所有用户名更改为小写以查看是否有帮助,但这没有帮助。
解决方法
当您在列表中查找值时,请使用“ in”运算符。
current_users = ['Enrique','Jose','Pablo','John','Jake']
new_users = ['Mike','Tom','Bowser','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','Jake']
new_users = ['Mike','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.")