首页 > 解决方案 > 无法解决的逻辑问题。(对不起标题)

问题描述

首先,很抱歉标题不一致。我不知道如何正确描述我的问题。

我已经学习 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 中,所以当我尝试调用它时,它不起作用

太好了,我理解这个问题,但我该如何解决?我不知道..

提前致谢!

标签: pythonpython-3.x

解决方案


其他人建议循环您的列表以获取名称,但我想我会给出不同的方法。通过使用字典而不是列表,您可以按名称查找用户对象,或者只通过它的键()进行搜索。所以你的代码看起来像这样:

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()


推荐阅读