python - 无法解决的逻辑问题。(对不起标题)
问题描述
首先,很抱歉标题不一致。我不知道如何正确描述我的问题。
我已经学习 Python 大约 2 周了,所以请原谅我是个菜鸟。
class User():
def __init__(self, name=0, password=0):
self.name = name
self.password = password
def createAcc():
username = input("Name: ")
userpass = input("Password: ")
userList.append(User(username, userpass))
def loginAcc():
accName = input("Account Name: ")
if accName in userList:
print("Hi")
userList = []
createAcc()
loginAcc()
这里的问题是它没有打印“Hi”,这可能是因为这条线
if accName in userList:
我知道这是因为我将“用户”插入列表的方式。例如,我将名称设为“Jeff”字符串“Jeff”确实不在 userList 中,所以当我尝试调用它时,它不起作用
太好了,我理解这个问题,但我该如何解决?我不知道..
提前致谢!
解决方案
其他人建议循环您的列表以获取名称,但我想我会给出不同的方法。通过使用字典而不是列表,您可以按名称查找用户对象,或者只通过它的键()进行搜索。所以你的代码看起来像这样:
class User():
def __init__(self, name=0, password=0):
self.name = name
self.password = password
def createAcc():
username = input("Name: ")
userpass = input("Password: ")
userDict[username] = User(username, userpass)
def loginAcc():
accName = input("Account Name: ")
if accName in userDict.keys(): # check if accName is a key in the dict
print("Hi")
print(userDict[accName].password) # or just access objects directly using their key.
userDict = dict()
createAcc()
loginAcc()
推荐阅读
- android - 由于 Firebase 数据库实施,如何修复“清单合并错误”
- azure - 如果多个 azure 函数应用绑定到同一个存储队列进行输入会发生什么
- azure - 如何连接到没有 PowerShell 订阅的 Azure AD 租户
- php - nohup 进程在终端关闭后几分钟停止运行
- ios - 无法使用 Almofire 多部分上传相机图像
- android - Kotlin Intent:无法解析包名称
- memory-leaks - 带有静态 HTML 的 IE 11 内存泄漏,没有 JS
- python - wx中不同弹出选择的不同matlibplots
- c# - c#中图片框中单击的坐标
- visual-studio-code - Angular 语言服务在一个项目中工作,但不在另一个项目中