python-3.x - 为什么即使不满足条件,我的 if 语句也会激活?
问题描述
这里简单的问题,做了一个小程序要求用户创建用户名和密码。在我添加这个“if user”语句之前,每件事都有效。如果我输入“x”或“X”,它应该重新启动循环,但无论我输入什么,它都会重新启动它。这里发生了什么事?
db = {}
num_of_entries = 0
def addToDict(a, b):
db[a] = b
print(f"User created: '{a}'")
def removeFromDict(key):
del db[key]
print()
print(f"User '{key}' has been removed.")
while True:
clear = "\n" * 100
print()
print("""
Hi there!
Would you like to create a new account or delete an existing one?
('Create' to create, 'Delete' to delete)
""")
choice = input("> ").upper()
if choice == 'CREATE':
print(f'{choice} mode selected.')
print()
user = input("Please enter a username: ")
if user == 'X' or 'x':
continue
else:
if user not in db:
passW = input("Please enter a password: ")
print(clear)
print()
addToDict(user, passW)
解决方案
这里的问题是您提出了两个单独的条件user == 'X'
和'x'
. 因为'x'
它不是 null 或 false,所以它始终为 true,使 if 语句始终为 true,因为它在两个条件之间使用了 or 运算符。
您需要按照上面的建议做的是:
if user == 'X' or user == 'x':
你也可以这样做:
if user.lower() == 'x':
甚至:
if user in ['X', 'x']:
推荐阅读
- css - Vuetify 文本颜色变体
- redis - 如何删除存储在给定 Redis 集中的 Redis 键?
- javascript - 相机反应原生错误“null不是对象”
- wordpress - 更新元数据而不删除先前的值
- flutter - image_picker 插件导致 Android 的构建错误
- linux - 自动下载最新版本的 Slack
- jquery - FullCalendar 上带有设计的工具提示
- c++ - 卡在使用结构向量
- python - 我需要使用beautifulsoup python从没有内部标签数据的类标签中检索数据
- c++ - (重新)在cpp中初始化没有复制构造函数的对象