如何解决尽管进行了if / else测试,我的用户名检查器一直说所有名称都可用
我正在尝试制作一个简单,小型的练习程序,使用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.")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。